KR20110085989A - 기회적 페이지 확대 - Google Patents

기회적 페이지 확대 Download PDF

Info

Publication number
KR20110085989A
KR20110085989A KR1020117008652A KR20117008652A KR20110085989A KR 20110085989 A KR20110085989 A KR 20110085989A KR 1020117008652 A KR1020117008652 A KR 1020117008652A KR 20117008652 A KR20117008652 A KR 20117008652A KR 20110085989 A KR20110085989 A KR 20110085989A
Authority
KR
South Korea
Prior art keywords
page table
page
memory
segments
hierarchical
Prior art date
Application number
KR1020117008652A
Other languages
English (en)
Other versions
KR101645753B1 (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 KR20110085989A publication Critical patent/KR20110085989A/ko
Application granted granted Critical
Publication of KR101645753B1 publication Critical patent/KR101645753B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/651Multi-level translation tables
    • 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/652Page size control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Document Processing Apparatus (AREA)

Abstract

계층적 페이지 테이블 시스템의 마지막 레벨 내의 페이지 테이블들에서 후보 페이지 테이블들이 스캐닝된다. 후보 페이지 테이블들은 큰 페이지들로 전환되는데, 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 항목은 새롭게 생성되는 큰 페이지와 연관되도록 조절된다. 큰 페이지가 페이지 테이블로 전환될 것이라는 통지를 수신하면, 새로운 페이지 테이블이 생성된다. 새로운 페이지 테이블 내의 각 항목은 큰 페이지 내의 메모리의 작은 세그먼트와 연관되고, 계층적 페이지 테이블 시스템 내의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 항목은 새로운 페이지 테이블과 연관되도록 조절된다.

Description

기회적 페이지 확대{OPPORTUNISTIC PAGE LARGIFICATION}
컴퓨팅 장치 상에서 실행되는 프로세스는 종종 계산에 사용될 데이터를 요구한다. 이러한 데이터는 전형적으로 운영 체제에 의해 RAM과 같은 메모리에 저장된다. 이러한 메모리는 페이지라고 불리는 덩어리로 나뉜다. 각각의 페이지는 고유한 어드레스와 연관된다. 프로세스가 데이터를 요구하는 경우, 데이터는 이것의 고유 어드레스에 의해 참조되고, 어드레스는 데이터를 반환하기 위해 페이지의 물리적 위치를 탐색(lookup)하는 데 사용된다. 이러한 어드레스 대 물리적 위치 변환(translation)의 한 가지 흔한 방식은 페이지 테이블 계층(page table hierarchy)을 순회(traverse)함으로써 수행된다. 이러한 계층들은 어드레싱되는 페이지들의 크기를 계층 내의 레벨의 개수와 절충(trade off)한다. 그러나, 페이지들의 크기는 또한 메모리 공간이 얼마나 효율적으로 사용되는지를 좌우하는데, 더 큰 페이지들은 덜 효율적이다. 따라서, 공간 효율(페이지 크기에 기인함)과 변환 시간 효율(페이지 테이블 계층 내의 페이지들의 개수에 기인함) 사이의 직접적인 절충이 존재한다.
페이지 테이블 시스템의 효율을 결정하는 추가적인 요인은 프로세스의 필요로 이루어진다. 프로세스들이 전형적으로 많은 양의 데이터를 요구하는 경우, 사실상 메모리 사용량 면에서 더 큰 페이지들이 효율적일 수 있다. 그러나, 프로세스들이 전형적으로 적은 양의 데이터를 요구하는 경우, 더 작은 페이지들이 더 효율적일 것이다. 두 유형의 프로세스들이 컴퓨팅 장치들 상에서 동작하는 경향이 있으므로, 양자를 동적으로 지원하는 방법은 더 큰 효율을 초래할 것이다. 큰 페이지들에 대한 운영 체제 지원은 또한 더 작은 크기의 페이지들에 대한 지원만큼 컴퓨팅 장치들에서 강건(robust)하지 않다. 이는 큰 페이지들을 사용함에 있어서 추가적인 도전을 초래한다.
<발명의 개요>
본 요약은 아래의 상세한 설명에서 더 기술되는 개념들 중 선별된 것을 간략한 형태로 소개하기 위해 제공된다. 이러한 요약은 청구된 주제 대상의 핵심적인 특징들 또는 본질적인 특징들을 식별하기 위한 것이 아니며, 또한 청구된 주제 대상의 범위를 결정하는 것을 돕는 데 사용되기 위한 것도 아니다.
본 발명의 실시예들은 큰 페이지 매핑(mapping)으로의 전환(conversion)을 위한 후보 페이지 테이블 항목(Page Table Entry; PTE)들의 위치를 파악하기 위해 페이지 테이블 계층 내의 마지막 레벨을 스캐닝(scan)하는 것과 관련된다. 후보 PTE들의 위치가 파악되면, 물리적 메모리의 크고 인접하는 세그먼트(segment)의 위치를 파악하고, 후보 페이지 테이블 페이지 내의 모든 PTE들과 연관된 데이터를 위치가 파악된 메모리 세그먼트에 전송하며, 페이지 테이블 계층의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 페이지 내의 PTE를 새롭게 생성된 큰 페이지와 연관되도록 조절함으로써 이러한 후보 PTE들이 큰 페이지들로 전환된다. 일부 실시예들에서, 작은 페이지들로 다시 전환될 큰 페이지를 가리키는 통지가 수신되는 경우, 새로운 페이지 테이블 페이지가 생성된다. 새로운 페이지 테이블 페이지 내의 각 PTE는 큰 페이지의 작은 세그먼트와 연관되고, 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 PTE는 새로운 페이지 테이블 페이지와 연관되도록 조절된다.
본 발명은 첨부된 도면들을 참조하여 아래에서 상세히 기술된다.
도 1은 본 발명을 구현하는 데 사용하기에 적합한 예시적인 컴퓨팅 장치의 블록도.
도 2는 운영 체제들 및 사용자 프로세스들에 의해 사용되는 전형적인 물리적 메모리 배치에 관한 도표.
도 3은 페이지 테이블과 물리적 메모리 사이의 예시적인 관계를 도시하는 도면.
도 4는 예시적인 계층적 페이지 테이블 시스템을 도시하는 도면.
도 5는 큰 페이지들로 전환하기 위한 후보 페이지 테이블들을 발견하고 전환을 수행하기 위한 방법을 도시하는 흐름도.
도 6은 큰 페이지가 작은 페이지들과 연관된 페이지 테이블로 전환될 것이라는 통지를 수신하고 전환을 수행하기 위한 방법을 도시하는 흐름도.
도 7은 큰 페이지가 작은 페이지들과 연관된 페이지 테이블로 전환될 것이라는 통지를 수신하거나, 또는 큰 페이지들로의 전환을 위한 후보 페이지 테이블들을 스캐닝할 시간임을 가리키는 타임아웃(timeout)을 수신하기 위한 방법을 도시하는 흐름도.
본 발명의 주제 대상은 본 명세서에서 법정 요건을 충족하기 위한 구체성을 가지고 기술된다. 그러나, 설명 그 자체는 본 특허의 범위를 한정하기 위한 것이 아니다. 오히려, 본 발명자들은 청구된 주제 대상은 다른 현재의 또는 장래의 기술들과 함께 본 명세서에 기술된 단계들과 상이한 단계들 또는 유사한 단계들의 조합을 포함하는 다른 방식들로 구현될 수도 있음을 고려하였다. 더욱이, "단계" 및/또는 "블록"이라는 용어들은 본 명세서에서 채택된 방법들의 상이한 요소들을 의미하는 것으로 사용될 수 있지만, 이러한 용어들은 개별적인 단계들의 순서가 명시적으로 기술되는 경우가 아니면 그 경우를 제외하고는 본 명세서에 개시된 다양한 단계 사이의 어떠한 특정한 순서를 암시하는 것으로 해석되지 않아야 한다.
본 발명의 실시예들은 기회적으로 큰 페이지로 전환될 수 있는 PTE들의 그룹들의 위치를 파악하고 전환을 수행하는 것과 관련된다. 또한, 페이지 테이블 페이지가 큰 페이지로 전환되었으면, 운영 체제로부터의 통지에 반응하여 역 프로세스가 수행될 수 있다.
본 발명의 일부 실시예들에 따르면, 컴퓨팅 장치의 메모리 서브시스템은 공유 메모리 자원을 관리한다. 하나 이상의 프로세스에 의한 계산을 위해 요구되는 데이터는 공유 메모리 자원 내에 저장된다. 전형적으로, 계산 장치 상에서 실행되는 프로세스들은 데이터의 물리적 위치를 알지 못한다. 그 대신, 이러한 프로세스들에게는 메모리 내의 물리적 위치들에 대한 어드레스 공간 매핑 어드레스들이 제공된다. 계산 장치 상에서 실행되는 하나 이상의 프로세스는 계산을 위해 요구되는 데이터를 참조하기 위해 어드레스를 사용한다. 컴퓨팅 장치의 메모리 서브시스템은 어드레스 탐색을 수행하여 어드레스로부터 물리적 위치로의 변환을 처리한다.
오늘날의 컴퓨팅 장치들에서, 물리적 메모리는 페이지들이라고 일컬어지는 세그먼트들로 분할된다. 이러한 페이지들은 페이지 테이블 계층에 의해 표현될 수 있는 최소의 데이터 크기를 표현한다. 페이지 테이블들은 가상 어드레스들을 메모리 내의 물리적 위치들로 매핑하기 위해 컴퓨팅 장치의 메모리 서브시스템에 의해 사용된다. 페이지 테이블 시스템들을 위한 다수의 가능한 배치가 존재하지만, 어드레스들로부터 물리적 메모리 위치들로의 가장 흔한 매핑은 복수의 계층적 페이지 테이블 탐색을 사용하며, 이는 아래에서 상세히 기술된다. 이러한 계층들은 고정된 어드레스 크기(전형적으로 비트 단위로 측정됨)가 많은 양의 물리적 메모리를 어드레싱할 수 있게 한다. 이러한 계층적 테이블 탐색은 주어진 가상 어드레스와 연관된 물리적 페이지의 위치를 파악하기 위해 복수의 메모리 액세스를 요구한다. 계층적 페이지 테이블 시스템 내에 더 많은 레벨이 있을수록, 어드레스 대 물리적 메모리 변환을 위한 시간의 면에서 데이터 액세스 동작들에 더 많은 비용이 든다. 그러나, 페이지 테이블 계층 내의 레벨들의 개수와 페이지 크기 사이에는 또한 절충이 존재한다. 페이지 테이블 계층 내의 레벨들이 더 적다는 것은 페이지 크기가 더 크다는 것을 암시한다. 따라서, 데이터의 작은 세그먼트들을 사용하는 애플리케이션들의 경우, 작은 페이지 크기, 그리고 따라서 더 깊은 계층은 더 적은 메모리 낭비를 가능하게 한다. 그러나, 많은 양의 데이터를 사용하는 애플리케이션들의 경우, 더 큰 페이지 크기는 요구되는 데이터의 위치를 찾는 데 요구되는 페이지 테이블 탐색의 회수를 감소시킬 것이고, 따라서 탐색 효율을 증가시킬 것이다.
특정한 데이터가 더 이상 필요하지 않거나 소정의 문턱 기간 동안에 액세스되지 않은 경우, 메모리 서브시스템들이 그러한 데이터를 디스크에 저장하여 더 자주 필요한 또는 현재 필요한 데이터를 위해 메모리를 비우는 것이 일반적이다. 이러한 프로세스는 메모리를 스왑 아웃(swap out)하는 것으로 불린다. 그러나, 많은 메모리 서브시스템은 소정의 고정된 페이지 크기만을 스왑 아웃할 수 있다. 따라서, 이러한 고정된 크기보다 큰 페이지들을 생성하는 임의의 메커니즘은 큰 페이지의 소정 부분이 스왑 아웃되어야 하는 경우에 큰 페이지들을 복수의 더 작은 크기의 페이지로 분할하는 능력을 가져야 할 것이다. 메모리 서브시스템에 의해 큰 페이지가 더 작은 크기의 페이지들로 분할될 필요가 있는 많은 다른 추가적인 상황이 존재한다.
따라서, 본 발명의 실시예는 컴퓨팅 장치 상에서 동작하는 하나 이상의 프로세스와 연관된 복수의 작은 페이지를 큰 페이지로 전환하는 방법을 수행하기 위한 컴퓨터 사용 가능 명령들을 구현하는 컴퓨터 판독 가능 저장 매체와 관련된다. 페이지들 각각은 적어도 두 레벨의 페이지 테이블을 포함하는 계층적 페이지 테이블 시스템으로부터의 페이지 테이블 내의 항목과 연관된다. 상기 방법은 페이지들과 연관된 항목들의 적어도 하나의 문턱값을 갖는 페이지 테이블들인 후보 PTE들을 계층적 페이지 테이블 시스템의 마지막 레벨에서 스캐닝하는 단계를 포함한다. 이후 상기 방법은 후보 페이지 테이블 내의 항목들과 연관된 페이지들 각각을 저장하기에 충분히 큰 물리적으로 인접하는 메모리 세그먼트의 위치를 파악하고, 각 페이지 내의 메모리 세그먼트들을 위치가 파악된 메모리 세그먼트에 복사한다. 상기 방법은 계층적 페이지 테이블 시스템 내의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 새롭게 생성된 큰 페이지와 연관되도록 조절한다.
다른 실시예들에 따르면, 본 발명은 큰 페이지를 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스와 연관된 복수의 작은 페이지로 전환하는 방법을 구현하는 컴퓨터 실행 가능 명령들을 저장하는 컴퓨터 판독 가능 매체와 관련된다. 페이지들 각각은 계층적 페이지 테이블 시스템 내의 페이지 테이블의 항목과 연관된다. 상기 방법은 작은 페이지들의 그룹으로 전환될 큰 페이지를 가리키는 운영 체제 통지를 수신하는 단계를 포함한다. 상기 통지를 수신하면, 새로운 페이지 테이블이 생성되고 새로운 페이지 테이블 내의 항목들은 큰 페이지의 작은 세그먼트들과 연관된다. 상기 방법은 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블로부터의 항목을 새로운 페이지 테이블과 연관되도록 조절하는 단계를 포함한다.
추가적인 실시예에 따르면, 본 발명은 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스와 연관된 복수의 어드레스 공간 각각에서 적어도 두 레벨의 페이지 테이블을 포함하는 계층적 페이지 테이블 시스템의 마지막 레벨을 스캐닝하는 방법을 구현하는 컴퓨터 실행 가능 명령들을 저장하는 컴퓨터 판독 가능 매체와 관련된다. 이러한 스캐닝은 후보 페이지 테이블들을 식별하기 위한 시도를 하는 단계를 수반하는데, 후보 페이지 테이블들은 그 항목들 각각이 물리적 메모리의 하나 이상의 세그먼트와 연관된 페이지 테이블들이다. 상기 방법은 후보 페이지 테이블 내의 모든 항목들과 연관된 물리적 메모리의 복수의 세그먼트 각각을 저장하기에 충분히 큰 물리적 메모리의 인접하는 세그먼트들로 구성되는 메모리 세그먼트의 위치를 파악하는 단계 및 물리적 메모리의 이러한 세그먼트들을 새롭게 위치가 파악된 메모리 세그먼트에 복사하는 단계를 더 포함한다. 상기 방법은 후보 페이지 테이블을 포함하는 메모리 세그먼트를 비우고, 후보 페이지 테이블과 연관되었던 계층적 페이지 테이블 내의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 큰 페이지라고 불리는, 새롭게 위치가 파악된 메모리 세그먼트와 연관되도록 조절한다. 상기 방법은 큰 페이지의 하나 이상의 세그먼트가 스왑 아웃될 것임을 가리키는 표시를 큰 페이지들을 스왑 아웃할 수 없는 메모리 서브시스템으로부터 수신하는 단계를 더 포함한다. 상기 방법은 새로운 페이지 테이블을 생성하는 단계를 더 포함하는데, 새로운 페이지 테이블 내의 각각의 항목은 스왑 아웃될 세그먼트 또는 세그먼트들을 포함하는 큰 페이지의 세그먼트와 연관된다. 상기 방법은 이전에 큰 페이지와 연관되었던 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 새로운 페이지 테이블과 연관되도록 조절하는 단계를 더 포함한다.
본 발명의 실시예들의 개관을 간략히 기술하였으므로, 본 발명의 다양한 태양에 대한 전반적인 맥락을 제공하기 위해 본 발명의 실시예들이 구현될 수 있는 예시적인 동작 환경이 아래에서 기술된다. 맨 먼저 특히 도 1을 참조하면, 본 발명의 실시예들을 구현하기 위한 예시적인 동작 환경이 도시되고 전반적으로 컴퓨팅 장치(100)로서 표기된다. 컴퓨팅 장치(100)는 적합한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 용도 또는 기능의 범위에 관한 한정을 시사하기 위한 것이 아니다. 또한, 컴퓨팅 장치(100)는 도시된 컴포넌트들 중 임의의 것 또는 이들의 임의의 조합과 관련된 어떠한 종속성이나 요건을 갖는 것으로서 해석되지 않아야 한다.
본 발명은 PDA(Personal Data Assistant) 또는 다른 핸드헬드(handheld) 장치와 같은 컴퓨터 또는 다른 머신에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 코드 또는 머신 사용 가능 명령들의 전반적인 맥락으로 기술될 수 있다. 일반적으로, 루틴(routine), 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함하는 프로그램 모듈은 특정한 작업을 수행하거나 특정한 추상 데이터 유형을 구현하는 코드를 지칭한다. 본 발명은 핸드헬드 장치, 소비자 가전 기기, 범용 컴퓨터, 보다 전문적인 컴퓨팅 장치 등을 포함하는 다양한 시스템 구성으로 실시될 수 있다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 작업들이 수행되는 분산형 컴퓨팅 환경에서 실시될 수 있다.
도 1을 참조하면, 컴퓨팅 장치(100)는 아래의 장치들, 즉 메모리(112), 하나 이상의 프로세서(114), 하나 이상의 외부 저장 컴포넌트(116), 입력/출력(I/O) 포트(118), 입력 컴포넌트(120), 출력 컴포넌트(121) 및 예시적인 전력 공급 장치(122)를 직접 또는 간접적으로 결합시키는 버스(110)를 포함한다. 버스(110)는 하나 이상의 버스일 수 있는 것(예컨대 어드레스 버스, 데이터 버스, 또는 이들의 조합)을 대표한다. 도 1의 다양한 블록은 명료함을 위해 선으로 도시되어 있지만, 실제로는 다양한 컴포넌트를 묘사하는 것은 그처럼 명확하지 않으며, 비유적으로 이러한 선들은 보다 정확하게는 회색이고 흐릿할 것이다. 예컨대, 많은 프로세서는 메모리를 갖는다. 우리는 이러한 점이 본 기술 분야의 성질임을 인식하고, 도 1의 도표는 본 발명의 하나 이상의 실시예와 관련하여 사용될 수 있는 예시적인 컴퓨팅 장치를 예시할 뿐임을 반복하여 언급한다. "워크스테이션(workstation)", "서버", "랩톱(laptop)", "핸드헬드 장치" 등과 같은 분류 사이의 구분은 이루어지지 않는데, 이들은 모두 도 1의 범위 내에 고려되며 "컴퓨팅 장치"라고 지칭되기 때문이다.
컴퓨팅 장치(100)는 전형적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨팅 장치(100)에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 착탈식 및 고정식 매체를 모두 포함한다. 예컨대, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈식 및 고정식 매체를 모두 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(Digital Versatile Disk) 또는 다른 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 자기 저장 장치들, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 장치(100)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다.
메모리(112)는 휘발성 메모리의 형태인 컴퓨터 저장 매체를 포함한다. 예시적인 하드웨어 장치는 RAM과 같은 고체 상태 메모리를 포함한다. 외부 저장 장치(116)는 비휘발성 메모리의 형태인 컴퓨터 저장 매체를 포함한다. 상기 메모리는 착탈식, 고정식, 또는 이들의 조합일 수 있다. 예시적인 하드웨어 장치는 고체 상태 메모리, 하드 드라이브, 광학 디스크 드라이브 등을 포함한다. 컴퓨팅 장치(100)는 메모리(112), 외부 저장 장치(116) 또는 입력 컴포넌트(120)와 같은 다양한 주체로부터 데이터를 판독하는 하나 이상의 프로세서를 포함한다. 출력 컴포넌트(121)는 사용자 또는 다른 장치에게 데이터 표시를 제공한다. 예시적인 출력 컴포넌트는 디스플레이 장치, 스피커, 인쇄 컴포넌트, 진동 컴포넌트 등을 포함한다.
I/O 포트들(118)은 컴퓨팅 장치(100)가 입력 컴포넌트(120) 및 출력 컴포넌트(121)를 포함하는 다른 장치들에게 논리적으로 결합될 수 있도록 하는데, 이들 중 일부는 내장될 수 있다. 예시적인 컴포넌트는 마이크, 조이스틱(joystick), 게임 패드(game pad), 위성 접시, 스캐너, 프린터, 무선 장치 등을 포함한다.
본 발명의 실시예에 따르면, 컴퓨팅 장치(100)는 운영 체제 또는 컴퓨팅 장치(100) 상에서 실행되는 시스템으로부터 입력 컴포넌트(120) 및 메모리(112)와 같은 컴퓨팅 장치(100)의 물리적 컴포넌트들을 추상화하는 가상화 플랫폼인 하이퍼바이저(hypervisor)로서 사용될 수 있다. 이러한 하이퍼바이저는 위와 같은 추상화를 통해 복수의 운영 체제가 단일 컴퓨팅 장치(100) 상에서 실행되게 할 수 있어, 각각의 독립적인 운영 체제가 그 자신의 가상 머신에 대한 액세스를 가질 수 있게 한다. 하이퍼바이저 컴퓨팅 장치에 있어서, 페이지 테이블 계층들을 순회하는 것과 연관된 오버헤드(overhead)가 훨씬 더 크며, 큰 페이지들을 사용하는 이점은 컴퓨팅 장치(100)의 컴포넌트들에 대한 직접적인 액세스를 갖는 단일 운영 체제를 실행시키는 시스템들에서보다도 더 크다.
도 2를 참조하면, RAM과 같은 물리적 메모리(200)는 복수의 섹션(section)으로 분할된다. 본 발명의 일부 실시예들에 따르면, 메모리는 두 개의 주요 구획, 즉 운영 체제 메모리 공간(201) 및 사용자 메모리 공간(202)으로 분할된다. 컴퓨팅 장치 상에서 실행되는 운영 체제의 메모리 서브시스템은 물리적 메모리(200)를 관리하여 사용자 애플리케이션들이 사용자 메모리 공간(202)의 일부를 사용할 수 있게 한다. 그러나, 애플리케이션들은 인접하는 메모리 위치들에 대한 액세스를 갖지 못할 수 있다. 도 2를 참조하면, 본 발명의 일부 실시예들에 따르면, 사용자 메모리 공간(202)은 페이지들(상자들로 표현됨)로 분할되는데, 이들은 한정이 아닌 예시의 목적만을 위해 가정되는 두 애플리케이션 사이에 분산된다. 즉, 애플리케이션 1 공간은 x 표시에 의해 표현되고(예컨대 메모리 세그먼트 203) 및 애플리케이션 2 공간은 / 표시에 의해 표현된다(예컨대 메모리 세그먼트 204). 빈 메모리 페이지들은 도표에서 비어 있다(예컨대 메모리 세그먼트 205). 운영 체제 메모리 공간(201)은 다수의 목적을 위해 사용될 수 있는데, 그 중 하나는 어드레스 공간으로부터 물리적 메모리로의 매핑을 포함하는 페이지 테이블들(206)을 저장하는 것이다. 애플리케이션들을 위해, 이러한 매핑은 어드레스와 함께 데이터가 저장되는 사용자 메모리 공간(202) 내의 페이지들을 연관시킨다.
도 3에 도시된 바처럼, 본 발명의 실시예에 따르면, 페이지 테이블(301)은 항목들(303)을 포함하는데, 이들 각각은 물리적 메모리(304)에 저장된 사용자 메모리 공간 내의 특정한 페이지와 연관된다. 페이지 테이블(301) 내의 항목들(303)은 물리적 메모리 내의 인접하는 페이지들(304)과 반드시 연관되는 것은 아닐 수 있음에 주목한다.
이제 도 4를 참조하면, 본 발명의 다양한 실시예에 따르면, 어드레스들(401)은 비트들의 열(string)들에 의해 표현된다. 이러한 어드레스들은 계층적 페이지 테이블 시스템(402)을 통해 매핑된다. 한정이 아닌 예시를 위해, 48 비트 어드레싱 스킴(scheme)(401) 및 4 레벨의 계층적 페이지 테이블 시스템(402)을 가정한다. 48 비트 어드레스(401)는 5개의 섹션으로 분할된다. 처음 9개의 비트(403)는 제1 페이지 테이블(404) 내로 색인하는 데 사용된다. 어드레스(401)의 처음 9개의 비트(403)에 의해 제1 페이지 테이블(404) 내에 위치하는 항목은 제2 페이지 테이블(406)을 저장하는 메모리 세그먼트(422)와 연관된다. 두 번째 9개의 비트(405)는 제2 페이지 테이블(406) 내로 색인된다. 제2 페이지 테이블(406)에 위치하는 항목은 제3 페이지 테이블(408)을 포함하는 메모리 세그먼트(422)와 연관된다. 어드레스(401)의 세 번째 9개의 비트(407)는 제3 페이지 테이블(408) 내로 색인된다. 제3 페이지 테이블(408)에 위치하는 항목은 제4 페이지 테이블(410)을 포함하는 메모리 세그먼트(423)와 연관된다. 어드레스(401)의 네 번째 9개의 비트(409)는 제4 페이지 테이블(410) 내로 색인된다. 제4 페이지 테이블(410)에 위치하는 항목은 페이지(412)를 포함하는 사용자 공간 메모리 내의 메모리 세그먼트(424)와 연관된다. 어드레스(401)의 마지막 12개의 비트(411)는 페이지(412) 내로 색인된다. 마지막 12개의 비트(412)에 의해 주어지는 색인에 있는 페이지(412) 내의 메모리 세그먼트는 어드레스(401)에 의해 참조되는 데이터이다. 확인할 수 있는 바처럼, 계층적 페이지 테이블 시스템을 통해 어드레싱되는 데이터를 탐색하는 프로세스에서는 페이지 테이블 탐색 당 적어도 하나의 메모리 액세스가 존재한다.
본 기술 분야의 당업자는 특정한 어드레스 크기, 페이지 테이블의 개수, 페이지 테이블 계층 시스템 내의 레벨의 개수 및 페이지의 크기가 달라질 수 있음을 인식할 것이다. 한정이 아닌 예시만으로서, 페이지 크기는 4KB, 2MB, 또는 1GB일 수 있다. 어드레스 크기는 예컨대 32 비트 내지 64 비트의 범위일 수 있다. 도 4의 예의 경우, 각각의 페이지 테이블은 512(29)개의 항목을 갖고, 각각의 페이지는 4KB(212)이다. 페이지 내에서 데이터의 위치를 파악하기 위해 4번의 페이지 테이블 탐색이 소요된다. 페이지 테이블 내의 512개 항목 전부와 연관된 데이터 전체가 단일 페이지 내에서 조합되는 경우, 결과적인 페이지(큰 페이지라고 불림)는 2MB일 것이고, 위치를 파악하기 위해 계층적 페이지 테이블 시스템에서 3번의 페이지 테이블 탐색만을 요구할 것이다.
도 5를 참조하면, 큰 페이지로 전환할 후보 페이지 테이블을 발견하여 페이지 테이블을 전환하기 위한 방법(500)을 도시하는 흐름도가 제공된다{블록(550)은 블록(503)에 도시된 타임아웃 부분이 없는 방법의 단계들을 포함하며, 이들 모두는 아래에서 논의됨}. 블록(501)에 도시된 바처럼, 페이지 테이블 계층 시스템의 마지막 레벨에서 큰 페이지로의 전환을 위한 후보 페이지 테이블이 스캐닝된다. 예컨대, 제4 페이지 테이블(410)이 존재하는 도 4의 페이지 테이블 계층의 마지막 레벨에서 후보 페이지 테이블이 스캐닝될 수 있다. 본 기술 분야의 당업자는 페이지 테이블이 큰 페이지로의 전환을 위한 후보인지 여부를 결정하기 위한 매우 다양한 기준이 사용될 수 있음을 인식할 것이다. 한정이 아닌 예시만으로서, 이러한 기준은 가득 찬 페이지 테이블을 발견하는 것 또는 항목들의 문턱값이 가득 찬 페이지 테이블을 발견하는 것을 포함할 수 있다. 가득 찬 페이지 테이블은 페이지 테이블의 모든 항목들이 물리적 메모리 내의 위치들과 연관된 페이지 테이블이다. 본 발명의 일 실시예에 따르면, 이러한 스캐닝은 마지막 레벨보다 한 레벨 앞의 페이지 테이블들 내의 항목들과 연관된 페이지 테이블들 각각을 통해 스캐닝하는 단계 및 발견된 마지막 레벨의 페이지 테이블들이 가득 찬 페이지 테이블을 구성하는지 여부를 확인하기 위해 이들을 검사하는 단계를 수반한다. 본 기술 분야의 당업자는 물리적 메모리 위치들과 연관되어 있는 항목들의 비율 또는 물리적 메모리 위치들과 연관된 항목들의 전체 개수를 포함하지만 이에 한정되지 않는 문턱값이 정의될 수 있는 많은 방식이 존재함을 인식할 것이다.
계층적 페이지 테이블 시스템 내의 마지막 레벨{예컨대 도 4에서 페이지 테이블(410)이 위치하는 레벨}을 스캐닝함으로써, 하나 이상의 후보 페이지 테이블이 식별될 수 있다(블록 502 참조). 후보 페이지 테이블이 식별되지 않았으면, 다른 스캔이 블록(501)에서 수행되기 전에 시간 지연(503)이 존재한다. 이러한 시간 지연(503)은 프로그래머, 시스템 관리자, 사용자, 또는 시스템에 대한 적합한 액세스를 갖는 그 밖의 임의의 당사자에 의해 조절될 수 있는 파라미터이다. 그러나, 후보 페이지 테이블이 식별된 경우, 블록(504)에 도시된 바처럼, 후보 페이지 테이블 내의 각 항목과 연관된 데이터를 저장하기에 충분히 큰 인접하는 메모리 세그먼트의 위치가 파악된다.
실시예들에서, 메모리 세그먼트의 위치를 파악하는 단계는 후보 페이지 테이블과 연관된 항목들 전부를 저장하기에 충분한 개수의 인접하는 메모리 세그먼트를 물리적 메모리에서 스캐닝하는 단계를 수반한다. 페이지 테이블은 인접하는 물리적 메모리 세그먼트들과 연관된 인접하는 항목들을 갖지 않을 수 있음을 상기한다. 그러나, 후보 페이지 테이블 내의 항목들이 큰 페이지로 전환되는 경우, 이들은 이들이 연관된 페이지 테이블 내의 항목들의 순서로 저장되어야 한다. 본 발명의 일 실시예에 따르면, 메모리 세그먼트의 위치를 파악하는 것은 단순히 물리적 메모리를 스캐닝하고 큰 인접한 메모리 세그먼트(예컨대 2MB)를 발견하는 문제이다. 일부 실시예들에서, 이러한 스캐닝은 시스템 내의 모든 물리적 페이지들의 상태를 포함하는 페이지 프레임 번호 데이터베이스를 스캐닝함으로써 수행될 수 있다. 또한, 큰 인접하는 메모리 세그먼트는 미리 결정된 바이트 경계 상에서 시작되도록 제한될 수 있다. 한정이 아닌 예를 들자면, 4KB의 작은 크기의 페이지들을 512개 사용하여 2MB의 큰 페이지로 조합하는 위의 예를 살펴볼 때, 미리 결정된 바이트 경계는 2MB 바이트 경계일 수 있다. 본 기술 분야의 당업자는 미리 결정된 바이트 경계에 대한 많은 다른 값이 사용될 수 있음을 인식할 것이다. 본 발명의 다른 실시예에 따르면, 충분한 인접하는 메모리 세그먼트가 발견될 수 없는 경우, 저장된 데이터를 메모리 내의 특정한 위치로부터 떨어진 빈 세그먼트들로 옮기고 이들의 각각의 페이지 테이블 항목들을 조절함으로써 큰 인접하는 메모리 세그먼트를 능동적으로 생성하는 메모리 관리 서브루틴이 활성화된다. 이러한 방식으로, 큰 페이지 테이블 전환에서 사용하기 위한 큰 인접하는 메모리 세그먼트가 생성된다.
충분한 크기의 인접하는 메모리 세그먼트가 생성되었거나 그 위치가 파악되었으면, 블록(505)에 도시된 바처럼, 후보 페이지 테이블 내의 항목들과 연관된 메모리의 모든 물리적 세그먼트는 위치가 파악된 메모리 세그먼트에 순서대로 복사된다. 본 발명의 일 실시예에서, 메모리의 물리적 세그먼트들이 위치가 파악된 세그먼트에 복사되므로, 물리적 메모리의 원래 위치가 비워진다. 본 발명의 다른 실시예에서, 후보 페이지 테이블의 항목들 각각과 연관된 메모리 세그먼트들 각각의 원래 메모리 위치들은 또한 이들의 데이터의 사본들을 유지한다.
블록(506)에 도시된 바처럼, 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 항목{예컨대 도 4의 페이지 테이블(408)}은 새로운 큰 페이지와 연관된다. 본 발명의 일 실시예에서, 전환된 페이지 테이블이 비워지고, 비워진 페이지 테이블과 연관되었던 계층적 페이지 테이블 시스템 내의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 항목은 새로운 큰 페이지와 연관되도록 조절된다. 후보들을 큰 페이지들로 전환한 후에, 새로운 후보 페이지 테이블에 대한 다른 스캔이 시작되기 전에 블록(503)에서 시간 지연이 존재한다. 블록(503)에서의 이러한 시간 지연은 프로그래머, 시스템 관리자, 사용자, 또는 시스템에 대한 적합한 액세스를 갖는 그 밖의 임의의 당사자에 의해 조절될 수 있는 파라미터이다.
도 6을 참조하면, 큰 페이지를 복수의 더 작은 크기의 페이지와 연관된 페이지 테이블 항목들로 전환하기 위한 방법(600)을 도시하는 흐름도가 제공된다. 본 발명의 일 실시예에 따르면, 작은 페이지들로 전환될 큰 페이지를 식별하는 운영 체제 통지가 블록(601)에서 수신된다. 본 기술 분야의 당업자는 이러한 통지를 촉발시킬 수 있는 많은 이벤트가 존재함을 인식할 것이다. 한정이 아닌 예시만으로서, 이러한 이벤트는 큰 페이지들을 스왑 아웃할 수 없는 운영 체제 및 파기되고 있는 애플리케이션 메모리 공간에 속하는 메모리와 연관된 페이지 테이블 항목들을 갖는 시스템에서 큰 페이지의 세그먼트가 디스크로 스왑 아웃되도록 예정되는 것을 포함한다.
전환될 큰 페이지를 가리키는 통지를 수신하면, 블록(602)에 도시된 바처럼 새로운 페이지 테이블이 생성된다. 본 발명의 일 실시예에 따르면, 이러한 생성은 새로운 테이블을 위해 운영 체제 메모리 공간 내에 메모리를 할당하는 단계를 포함한다. 페이지 테이블이 생성되면, 큰 페이지의 세그먼트들 전부가 새로운 페이지 테이블 내의 소정의 항목과 연관될 때까지 새로운 페이지 테이블 내의 각 항목은 블록(603)에서 큰 페이지의 더 작은 크기의 세그먼트 1개와 연관된다. 도 4의 예를 계속 살펴보면, 새로운 페이지 테이블 내의 512개의 페이지 테이블 항목 각각은 큰 페이지의 4KB 세그먼트 1개와 연관될 것이다.
마지막으로, 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 항목{예컨대 도 4에서 페이지 테이블(408)이 위치하는 레벨}은 블록(604)에 도시된 바처럼 새로운 페이지 테이블과 연관되도록 조절된다. 본 발명의 일 실시예에 따르면, 새로운 페이지 테이블과 연관된 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블로부터의 항목은 큰 페이지와 이전에 연관되었던 항목이었다.
본 발명의 추가적인 실시예에 따르면, 도 7은 페이지 테이블을 큰 페이지로 전환하고 큰 페이지들을 다수의 더 작은 크기의 페이지와 연관된 페이지 테이블들로 전환하는 방법(700)을 제공한다. 먼저 상기 방법은 블록(701)에 도시된 바처럼 이벤트를 대기하는 단계를 수반한다. 한정이 아닌 예시로서, 이벤트는 타임아웃 또는 운영 체제 통지일 수 있다. 본 기술 분야의 당업자는 어느 하나의 유형의 전환을 촉발시킬 수 있는 다수의 다른 이벤트가 존재함을 인식할 것이다. 이벤트가 발생하면 판정이 내려진다. 이벤트가 시간 지연이 만료되었음을 가리키는 타임아웃인 경우(702), 예컨대 도 5의 방법(550)에 따라 계층적 페이지 테이블 시스템의 마지막 레벨로부터의 페이지 테이블을 큰 페이지로 전환하기 위한 시도가 이루어진다. 이러한 시간 지연은 프로그래머, 시스템 관리자, 사용자, 또는 시스템에 대한 적합한 액세스를 갖는 그 밖의 임의의 당사자에 의해 조절될 수 있는 파라미터이다. 이벤트가 운영 체제 통지인 경우(702), 예컨대 도 6의 방법(600)에 따라 큰 페이지가 더 작은 크기의 페이지들을 가리키는 항목들의 페이지 테이블로 전환된다. 페이지 테이블을 큰 페이지로 전환하기 위한 시도를 하는 방법 또는 큰 페이지를 다수의 더 작은 크기의 페이지와 연관된 항목들을 갖는 페이지 테이블로 전환하는 방법 중 하나가 완료되면, 블록(701)에서 다시 대기 기간이 시작된다. 이러한 대기 기간은 다른 운영 체제 통지의 도착시에 또는 시간 지연의 만료시에 다시 만료된다.
도시된 다양한 컴포넌트뿐만 아니라 도시되지 않은 컴포넌트들의 많은 상이한 배열이 본 발명의 사상 및 범위로부터 벗어나지 않고 가능하다. 본 발명의 실시예들은 제한적이 아닌 예시적인 의도를 가지고 기술되었다. 본 발명의 범위를 벗어나지 않는 대안적인 실시예들이 본 기술 분야의 당업자에게 자명해질 것이다. 당업자는 본 발명의 범위를 벗어나지 않고 상술한 개선점들을 구현하는 대안적인 수단을 개발할 수 있다.
소정의 특징들 및 하위 조합들이 유용하고 다른 특징들 및 하위 조합들을 참조하지 않고 채택될 수 있으며, 청구항들의 범위 내에 예상됨을 이해할 것이다. 다양한 도면에 열거된 모든 단계들이 기술된 특정한 순서로 수행되어야 할 필요는 없다.

Claims (20)

  1. 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스와 연관되는 복수의 작은 페이지를 큰 페이지로 전환하는 방법을 수행하기 위한 컴퓨터 실행 가능 명령들을 저장하는 하나 이상의 컴퓨터 판독 가능 매체로서,
    상기 복수의 작은 페이지 각각은 적어도 두 레벨의 페이지 테이블을 포함하는 계층적 페이지 테이블 시스템으로부터의 복수의 페이지 테이블 항목 중 하나와 연관되고,
    상기 방법은,
    복수의 항목의 적어도 하나의 문턱값 각각이 복수의 페이지 중 하나와 연관되는 페이지 테이블을 상기 계층적 페이지 테이블 시스템의 마지막 레벨에서 스캐닝하여 후보 페이지 테이블을 식별하는 단계(501);
    상기 후보 페이지 테이블의 복수의 항목 전부와 연관되는 물리적 메모리의 복수의 세그먼트 각각을 저장하기에 충분히 큰, 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트의 위치를 파악하는 단계(504);
    상기 후보 페이지 테이블의 복수의 항목 전부와 연관되는 물리적 메모리의 복수의 세그먼트 각각을 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트에 복사하는 단계(505); 및
    상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트와 연관되도록 조절하는 단계(506)
    를 포함하는 컴퓨터 판독 가능 매체.
  2. 제1항에 있어서,
    상기 계층적 페이지 테이블 시스템의 마지막 레벨을 스캐닝하는 단계는 상기 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스와 연관되는 복수의 어드레스 공간 각각을 선택적으로 스캐닝하는 단계를 포함하는 컴퓨터 판독 가능 매체.
  3. 제1항에 있어서,
    상기 복수의 항목의 문턱값은 상기 복수의 항목 전부인 컴퓨터 판독 가능 매체.
  4. 제1항에 있어서,
    상기 후보 페이지 테이블의 복수의 항목 각각은 상기 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스 중의 단일 프로세스와 연관되는 컴퓨터 판독 가능 매체.
  5. 제1항에 있어서,
    물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트의 위치를 파악하는 단계는, 상기 후보 페이지 테이블의 복수의 항목 전부와 연관되는 물리적 메모리의 복수의 세그먼트 각각을 저장하기에 충분히 큰 물리적 메모리의 복수의 인접하는 세그먼트를 생성하기 위해 데이터를 물리적 메모리의 영역 근처의 제1 위치로부터 상기 영역으로부터 떨어진 제2 위치로 복사하는 단계를 포함하는 컴퓨터 판독 가능 매체.
  6. 제1항에 있어서,
    상기 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트는 미리 결정된 바이트 경계 상에 있는 컴퓨터 판독 가능 매체.
  7. 제1항에 있어서,
    상기 후보 페이지 테이블의 복수의 항목 전부와 연관되는 물리적 메모리의 복수의 세그먼트 각각을 복사하는 단계는 상기 물리적 메모리의 복수의 세그먼트가 복사된 후에 이들을 비우는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  8. 제1항에 있어서,
    상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 상기 페이지 테이블 항목은 상기 후보 페이지 테이블과 이전에 연관되었던 컴퓨터 판독 가능 매체.
  9. 제1항에 있어서,
    상기 페이지 테이블 항목을 조절하는 단계는 상기 후보 페이지 테이블을 포함하는 메모리의 세그먼트를 비우는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  10. 큰 페이지를 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스와 연관되는 복수의 작은 페이지로 전환하는 방법을 수행하기 위한 컴퓨터 실행 가능 명령들을 저장하는 하나 이상의 컴퓨터 판독 가능 매체로서,
    상기 작은 페이지들 각각은 적어도 두 레벨의 페이지 테이블을 포함하는 계층적 페이지 테이블 시스템으로부터의 하나 이상의 페이지 테이블 항목과 연관되고,
    상기 방법은,
    복수의 작은 페이지로 전환될 큰 페이지를 가리키는 운영 체제 통지를 수신하는 단계(601);
    새로운 페이지 테이블을 생성하는 단계(602);
    상기 새로운 페이지 테이블 내의 복수의 항목 각각을 상기 큰 페이지의 세그먼트와 연관시키는 단계(603); 및
    상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 상기 새로운 페이지 테이블과 연관되도록 조절하는 단계(604) - 상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 상기 페이지 테이블 항목은 상기 큰 페이지와 이전에 연관되었음 -
    를 포함하는 컴퓨터 판독 가능 매체.
  11. 제10항에 있어서,
    상기 운영 체제 통지는 상기 큰 페이지의 하나 이상의 세그먼트를 스왑 아웃(swap out)할 필요에 기인하는 컴퓨터 판독 가능 매체.
  12. 제10항에 있어서,
    상기 운영 체제 통지는 상기 큰 페이지를 포함하는 어드레스 공간이 제거되는 것에 기인하는 컴퓨터 판독 가능 매체.
  13. 제10항에 있어서,
    상기 새로운 페이지 테이블은 미리 결정된 작은 페이지 크기에 의해 분할되는 상기 큰 페이지의 크기와 동등한 개수의 항목을 갖는 컴퓨터 판독 가능 매체.
  14. 방법을 수행하기 위한 컴퓨터 실행 가능 명령들을 저장하는 하나 이상의 컴퓨터 판독 가능 매체로서,
    상기 방법은
    복수의 항목의 적어도 하나의 문턱값 각각이 물리적 메모리의 복수의 세그먼트 중 하나와 연관되는 페이지 테이블을, 컴퓨터 시스템 상에서 실행되는 하나 이상의 프로세스와 연관되는 복수의 어드레스 공간 각각 내의 적어도 두 레벨의 페이지 테이블을 포함하는 계층적 페이지 테이블 시스템의 마지막 레벨에서 스캐닝하여 후보 페이지 테이블을 식별하는 단계(501);
    상기 후보 페이지 테이블의 복수의 항목 전부와 연관되는 물리적 메모리의 복수의 세그먼트 각각을 저장하기에 충분히 큰, 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트의 위치를 파악하는 단계(504);
    상기 후보 페이지 테이블의 복수의 항목 전부와 연관되는 물리적 메모리의 복수의 세그먼트 각각을 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트에 복사하는 단계(505);
    상기 후보 페이지 테이블을 포함하는 메모리의 세그먼트를 비우는 단계(505);
    상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트와 연관되도록 조절하는 단계(506) - 상기 페이지 테이블 항목은 상기 후보 페이지 테이블과 이전에 연관되었음 - ;
    큰 페이지의 세그먼트가 스왑 아웃될 것임을 가리키는 표시를 큰 페이지들을 스왑 아웃할 수 없는 메모리 서브시스템으로부터 수신하는 단계(601);
    새로운 페이지 테이블을 생성하는 단계(602) - 상기 새로운 페이지 테이블 내의 각각의 항목은 상기 큰 페이지의 세그먼트와 연관됨 - ;
    상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 페이지 테이블 항목을 상기 새로운 페이지 테이블과 연관되도록 조절하는 단계(604) - 상기 계층적 페이지 테이블 시스템의 마지막 레벨보다 한 레벨 앞의 페이지 테이블 내의 상기 페이지 테이블 항목은 상기 큰 페이지와 이전에 연관되었음 -
    를 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  15. 제14항에 있어서,
    상기 계층적 페이지 테이블 시스템은 4개의 레벨을 포함하는 컴퓨터 판독 가능 매체.
  16. 제14항에 있어서,
    각각의 작은 페이지는 4KB인 컴퓨터 판독 가능 매체.
  17. 제14항에 있어서,
    각각의 큰 페이지는 2MB인 컴퓨터 판독 가능 매체.
  18. 제14항에 있어서,
    상기 물리적 메모리의 복수의 인접하는 세그먼트로 구성되는 메모리 세그먼트는 미리 결정된 바이트 경계 상에 있는 컴퓨터 판독 가능 매체.
  19. 제18항에 있어서,
    상기 미리 결정된 바이트 경계는 2MB인 컴퓨터 판독 가능 매체.
  20. 제14항에 있어서,
    상기 계층적 페이지 테이블 시스템 내의 페이지 테이블은 64 비트 아키텍처에 따라 어드레싱되는 컴퓨터 판독 가능 매체.
KR1020117008652A 2008-10-23 2009-09-26 기회적 페이지 확대 KR101645753B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/257,091 US8024546B2 (en) 2008-10-23 2008-10-23 Opportunistic page largification
US12/257,091 2008-10-23

Publications (2)

Publication Number Publication Date
KR20110085989A true KR20110085989A (ko) 2011-07-27
KR101645753B1 KR101645753B1 (ko) 2016-08-04

Family

ID=42118616

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117008652A KR101645753B1 (ko) 2008-10-23 2009-09-26 기회적 페이지 확대

Country Status (12)

Country Link
US (1) US8024546B2 (ko)
EP (1) EP2350833B1 (ko)
JP (1) JP5646498B2 (ko)
KR (1) KR101645753B1 (ko)
CN (1) CN102197380B (ko)
AU (1) AU2009308007B2 (ko)
BR (1) BRPI0919075B1 (ko)
CA (1) CA2736035C (ko)
HK (1) HK1160944A1 (ko)
RU (1) RU2509347C2 (ko)
TW (1) TWI412928B (ko)
WO (1) WO2010047918A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013090646A3 (en) * 2011-12-14 2013-08-01 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460400B (zh) * 2009-06-29 2014-09-24 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US8549241B2 (en) * 2010-01-06 2013-10-01 Vmware, Inc. Method and system for frequent checkpointing
US8533382B2 (en) * 2010-01-06 2013-09-10 Vmware, Inc. Method and system for frequent checkpointing
US8661213B2 (en) 2010-01-06 2014-02-25 Vmware, Inc. Method and system for frequent checkpointing
US8364932B2 (en) * 2010-10-29 2013-01-29 Vmware, Inc. System and method to prioritize large memory page allocation in virtualized systems
US8799611B2 (en) 2011-05-05 2014-08-05 International Business Machines Corporation Managing allocation of memory pages
US8656133B2 (en) 2011-05-05 2014-02-18 International Business Machines Corporation Managing storage extents and the obtaining of storage blocks within the extents
US8683169B2 (en) 2011-05-05 2014-03-25 International Business Machines Corporation Selecting an auxiliary storage medium for writing data of real storage pages
US8793444B2 (en) * 2011-05-05 2014-07-29 International Business Machines Corporation Managing large page memory pools
US8868876B2 (en) 2011-12-28 2014-10-21 International Business Machines Corporation Dedicated large page memory pools
US9058268B1 (en) 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US9658775B2 (en) * 2014-10-06 2017-05-23 Vmware, Inc. Adjusting page sharing scan rates based on estimation of page sharing opportunities within large pages
US9619401B2 (en) * 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines
US9658792B2 (en) * 2015-06-11 2017-05-23 International Business Machines Corporation Reserving a storage area and building page frame table entries
US11249968B2 (en) * 2016-05-09 2022-02-15 Sap Se Large object containers with size criteria for storing mid-sized large objects

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US20050097298A1 (en) * 2003-10-30 2005-05-05 Cohen Ernest S. Shadow page tables for address translation control
US20060288187A1 (en) * 2005-06-16 2006-12-21 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0506236A1 (en) 1991-03-13 1992-09-30 International Business Machines Corporation Address translation mechanism
JPH10301848A (ja) * 1997-04-28 1998-11-13 Hitachi Ltd 多重ページサイズを有する仮想記憶装置
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6112285A (en) 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US6715057B1 (en) 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US6523104B2 (en) * 2001-07-13 2003-02-18 Mips Technologies, Inc. Mechanism for programmable modification of memory mapping granularity
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US6751159B2 (en) 2001-10-26 2004-06-15 Micron Technology, Inc. Memory device operable in either a high-power, full-page size mode or a low-power, reduced-page size mode
GB2381886B (en) * 2001-11-07 2004-06-23 Sun Microsystems Inc Computer system with virtual memory and paging mechanism
US7085889B2 (en) * 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
US7243208B2 (en) 2003-08-13 2007-07-10 Renesas Technology Corp. Data processor and IP module for data processor
US7366869B2 (en) * 2005-03-17 2008-04-29 Qualcomm Incorporated Method and system for optimizing translation lookaside buffer entries
US20060253682A1 (en) * 2005-05-05 2006-11-09 International Business Machines Corporation Managing computer memory in a computing environment with dynamic logical partitioning
US7395406B2 (en) 2005-05-12 2008-07-01 International Business Machines Corporation System and method of large page handling in a virtual memory system
US7353361B2 (en) * 2005-06-06 2008-04-01 International Business Machines Corporation Page replacement policy for systems having multiple page sizes
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US7827381B2 (en) * 2006-06-05 2010-11-02 Oracle America, Inc. Hybrid techniques for memory virtualization in a computer system
US7917710B2 (en) * 2006-06-05 2011-03-29 Oracle America, Inc. Memory protection in a computer system employing memory virtualization
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US20050097298A1 (en) * 2003-10-30 2005-05-05 Cohen Ernest S. Shadow page tables for address translation control
US20060288187A1 (en) * 2005-06-16 2006-12-21 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013090646A3 (en) * 2011-12-14 2013-08-01 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US8832411B2 (en) 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9081702B2 (en) 2011-12-14 2015-07-14 Microsoft Technology Licensing, Llc Working set swapping using a sequentially ordered swap file
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge

Also Published As

Publication number Publication date
US20100106930A1 (en) 2010-04-29
RU2509347C2 (ru) 2014-03-10
KR101645753B1 (ko) 2016-08-04
EP2350833A2 (en) 2011-08-03
TW201022939A (en) 2010-06-16
BRPI0919075B1 (pt) 2019-12-24
US8024546B2 (en) 2011-09-20
AU2009308007A1 (en) 2010-04-29
BRPI0919075A2 (pt) 2015-12-15
EP2350833B1 (en) 2013-11-06
WO2010047918A2 (en) 2010-04-29
HK1160944A1 (en) 2012-08-17
CN102197380A (zh) 2011-09-21
EP2350833A4 (en) 2012-04-25
AU2009308007B2 (en) 2014-05-15
CA2736035C (en) 2016-07-05
CN102197380B (zh) 2012-12-19
RU2011116188A (ru) 2012-10-27
WO2010047918A3 (en) 2010-06-17
TWI412928B (zh) 2013-10-21
JP2012507071A (ja) 2012-03-22
JP5646498B2 (ja) 2014-12-24
CA2736035A1 (en) 2010-04-29

Similar Documents

Publication Publication Date Title
KR101645753B1 (ko) 기회적 페이지 확대
US7475183B2 (en) Large page optimizations in a virtual machine environment
JP5607943B2 (ja) メモリシステム及びその磨耗度管理方法
CN109697016B (zh) 用于改进容器的存储性能的方法和装置
KR101650424B1 (ko) 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송
JP2015512604A (ja) 暗号ハッシュ・データベース
JP2005500592A (ja) 共有メモリを用いて仮想メモリを実現するマルチプロセッサシステムならびにページ化メモリの整合性を管理するためのページ差し替え方法
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
CN112241310B (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
JP2018041204A (ja) メモリ装置及び情報処理システム
KR20160060550A (ko) 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법
KR100895715B1 (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
US9483400B2 (en) Multiplexed memory for segments and pages
JP2011186562A (ja) メモリ管理装置及び方法
JP2016085677A (ja) メモリ管理方法、メモリ管理プログラム及び情報処理装置
US9824023B2 (en) Management method of virtual-to-physical address translation system using part of bits of virtual address as index
US20230139581A1 (en) Data placement in large scale object storage system
US20230393979A1 (en) System and method for sharing a cache line between non-contiguous memory areas
CN107066624B (zh) 数据离线存储方法
CN107122264B (zh) 海量数据容灾备份方法
Wang et al. SCMKV: A Lightweight Log-Structured Key-Value Store on SCM
JPH04360252A (ja) 計算機の仮想記憶におけるアドレス変換方式

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20190627

Year of fee payment: 4