KR20120106696A - 집성된 소페이지들을 사용한 페이지 사이즈 확장 - Google Patents

집성된 소페이지들을 사용한 페이지 사이즈 확장 Download PDF

Info

Publication number
KR20120106696A
KR20120106696A KR1020127000750A KR20127000750A KR20120106696A KR 20120106696 A KR20120106696 A KR 20120106696A KR 1020127000750 A KR1020127000750 A KR 1020127000750A KR 20127000750 A KR20127000750 A KR 20127000750A KR 20120106696 A KR20120106696 A KR 20120106696A
Authority
KR
South Korea
Prior art keywords
superpage
size
operating system
page table
page
Prior art date
Application number
KR1020127000750A
Other languages
English (en)
Other versions
KR101563659B1 (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 KR20120106696A publication Critical patent/KR20120106696A/ko
Application granted granted Critical
Publication of KR101563659B1 publication Critical patent/KR101563659B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Abstract

프로세서는 가상 메모리 페이징 메커니즘을 포함한다. 가상 메모리 페이징 메커니즘은 상기 프로세서상의 운영 시스템이 제1 사이즈 및 제2 사이즈의 페이지들을 사용할 수 있도록 인에이블하고, 상기 제2 사이즈는 상기 제1 사이즈보다 크다. 이 메커니즘은 또한 상기 운영시스템이 상기 제1 사이즈의 두개 이상의 연속적인 페이지들을 포함하는 슈퍼페이지들을 사용할 수 있도록 인에이블한다. 슈퍼페이지의 사이즈는 제2 사이즈보다 작다. 프로세서는 각각의 슈퍼페이지 내에 포함된 페이지들 각각에 대한 개별 엔트리를 가지는 페이지 테이블을 더 포함한다. 운영 시스템은 단일 가상 주소를 사용하여 각각의 슈퍼페이지를 액세스한다. 상기 메커니즘은, TLB 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자가 어써트됨으 ㄹ검출함에 응답하여, 변환 색인 버퍼 TLB 내의 단일 엔트리를 슈퍼페이지에 대응하는 페이지들의 세트를 포함하는 메모리의 영역을 참조하는 것으로서 해석한다.

Description

집성된 소페이지들을 사용한 페이지 사이즈 확장{EXTENDED PAGE SIZE USING AGGREGATED SMALL PAGES}
본 발명은 컴퓨터 프로세서에 관한것이며, 보다 구체적으로는, 가상 메모리 환경에서의 페이지 변환(page translation)에 관한 것이다.
최신 컴퓨터 시스템은 성능을 향상시키기 위하여 가상 메모리를 이용한다. 예를 들어, 하드 디스크 저장장치의 더 큰 용량을 이용하면서 메모리를 효율적으로 사용하기 위하여, 프로세서는 종종, 가상 주소가 메모리의 물리적 사이즈보다 훨씬 큰 주소 스페이스를 참조할 수 있는 가상 어드레싱 메커니즘을 포함한다. 가상 어드레싱 메커니즘은 일반적으로 프로세서 하드웨어와 운영 시스템 소프트웨어의 조합에 의해 수행된다. 실제, 대형 가상 주소 스페이스는 일반적으로 페이지들로 분할된다. 프로세서가 가상 메모리 주소를판독하거나 가상 메모리 주소에 기록할 때마다, 특화된 프로세서 하드웨어가 상기 주소를 물리적 메모리 내에 있는 페이지(때때로 프레임이라 지칭됨) 상의 물리적 위치 또는 디스크 상에 저장되는 페이지(또는 프레임)에 대한 참조(reference)로 변환한다. 상기 참조가 디스크 상에 저장된 프레임에 대한 것이라면, 운영 시스템은 그 프레임을 물리적 메모리로 이동시키고, 필요하다면 최근에 액세스되지 않은 프레임을 스왑 아웃(swap out)한다.
페이징을 사용하는 주소 변환은 일반적으로 페이지 변환 테이블이라 알려져 있는 데이터 구조들의 세트와 관련된다. 가상 주소를 물리적 주소로 변환하기 위하여, 가상 주소의 하위 비트들(low-order bits)이 물리적 주소에 직접 매핑될 수 있고 한편 가상 주소의 상위 비트들(higher order bits)은 물리적 주소의 상위 비트들을 찾기 위하여 페이지 변환 테이블에 인덱싱하는데에 사용될 수 있다. 계층적 페이지 테이블 구현에서, 프로세서는 가상 주소의 상위 비트들을 하나 이상의 비트 필드들로 파티셔닝할 수 있으며, 각각의 비트 필드는 페이지 변환 테이블들의 서로 다른 계층 레벨에 대응한다. 가상 주소들을 물리적 주소들에 매핑하는 페이지 변환 테이블들 내의 엔트리들은 일반적으로 페이지 테이블 엔트리들(PTEs)이라 지칭될 수 있다.
가상 주소 변환의 속도는 PTE들을 변환 색인 버퍼(translation lookaside buffer)(TLB)로 알려져 있는 CPU 캐시 내에 캐싱(caching)함으로써 향상될 수 있다. TLB는 PTE들을 저장하기 위한 고정 개수의 슬롯들을 가질 수 있다. TLB 엔트리를 액세싱하는 것이 페이지 변환 테이블들을 사용하여 주소 변환을 수행하는 것보다 일반적으로 더 빠르므로, TLB의 사이즈 및 커버리지는 전체 시스템 성능에 대한 중요한 표시자일 수 있다. TLB의 커버리지는 각각의 TLB 엔트리에 의해 참조되는 페이지의 사이즈에 의존한다. 일반적인 컴퓨터 아키텍쳐는 가상 메모리 페이지 사이즈들에 대한 대강의 선택(coarse selection)만을 제공한다. 예를 들어, 잘 알려져 있는 x86-64 구조는 4KB, 2MB, 및 1GB의 페이지 사이즈를 제공한다. 더 작은 페이지 사이즈는 TLB의 유효 용량을 감소시키고 TLB 액세스들의 미스율(miss rate)을 증가시킨다. 불행히도, 매우 큰 페이지 사이즈들은 대개 큰 데이터 세트들을 필요로하지 않는 애플리케이션들에서 비효율적 메모리 할당을 야기한다. 위를 고려한 관점에서, 효율적인 메모리 사용을 유지하는 한편 TLB 미스율을 개선함으로써 그리고/또는 TLB 유효 용량을 증가시킴으로써 시스템 성능을 향상시키는 방법 및 시스템이 요구된다.
상기 고려 사항에 부가하여, 특정한 향상 성능을 위하여 개선된 TLB 미스율 및 용량을 제공하는 한편, 향상된 성능이 도입될 때마다 프로세서들이 기존 소프트웨어를 계속 실행시킬 수 있는 것이 바람직할 것이다. 따라서, 레거시 페이징 모드들(legacy paging modes)을 계속해서 지원하는 프로세서 향상이 요구될 수 있다.
가상 메모리 페이징 메커니즘을 포함하는 프로세서의 다양한 실시예들이 개시된다. 가상 메모리 페이징 메커니즘은 프로세서 상에서 동작하는 운영 시스템이 제1 사이즈 및 제2 사이즈의 페이지들을 사용할 수 있게 해준다. 제2 사이즈는 제1 사이즈보다 크다. 가상 메모리 페이징 메커니즘은 운영 시스템이 제1 사이즈의 두개 이상의 연속적인 페이지들을 포함하는 페이지들의 세트로 구성된 슈퍼페이지들을 형성할 수 있게 해준다. 슈퍼페이지의 사이즈는 제2 사이즈보다 작다. 프로세서는 각각의 슈퍼페이지 내에 포함된 두개 이상의 연속적인 페이지들 각각에 대한 개별 엔트리(seperate entry)를 포함하는 페이지 테이블을 더 포함한다. 가상 메모리 페이징 메커니즘은 운영 시스템이 단일의 가상 주소를 사용하여 각각의 슈퍼페이지에 액세스할 수 있게 해준다. 프로세서는 변환 색인 버퍼(TLB)를 더 포함한다. 가상 메모리 페이징 메커니즘은 TLB 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자를 검출함에 응답하여, TLB 내의 단일 엔트리를 슈퍼페이지에 대응하는 페이지들의 세트를 포함하는 메모리의 영역을 참조하는 것으로서 해석한다. 일 실시예에서, 슈퍼페이지의 사이즈는 64KB이다.
일 실시예에서, TLB 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자가 어써트(assert)됨을 검출함에 응답하여, 가상 메모리 페이징 메커니즘은 페이지 테이블 내의 엔트리를 슈퍼페이지의 일부를 포함하는 메모리의 영역을 참조하는 것으로서 해석한다. 추가적인 실시예에서, 슈퍼페이지 인에이블 표시자는 소프트웨어-설정가능(software-settable)하다. 가상 메모리 페이징 메커니즘은 페이지 테이블 내의 적어도 두개의 엔트리들 중 적어도 하나가 미싱이거나 페이지 테이블 내의 적어도 두개의 엔트리들 중 다른 것의 대응 속성들(attributes)에 일치하지 않는 속성들을 포함함을 검출함에 응답하여 페이지 폴트(page fault)를 발행한다.
추가의 실시예에서, 가상 메모리 페이징 메커니즘은 동시에 그리고 독립적으로, 프로세서 상에서 동작하는 제1 운영 시스템과 제2 운영 시스템 중 하나 또는 둘 모두에 대한 슈퍼페이지들의 사용을 가능하게 해준다. 추가의 실시예에서, 제1 운영 시스템은 게스트 주소 스페이스 내의 가상 주소를 게스트 주소 스페이스 내의 물리적 주소로 변환하기 위하여 제1 페이지 테이블을 사용하도록 구성된 가상화된 환경 내의 게스트 운영 시스템이고, 제2 운영 시스템은 게스트 주소 스페이스 내의 물리적 주소를 호스트 주소 스페이스 내의 물리적 주소로 변환하기 위하여 제2 페이지 테이블을 사용하도록 구성된 가상화된 환경에서의 호스트 운영 시스템이다. 추가적인 실시예에서, 가상 메모리 페이징 메커니즘은 운영 시스템이 두개 이상의 서로 다른 슈퍼페이지 사이즈들의 슈퍼페이지들을 사용할 수 있게 해준다. 이 실시예에서, 각각의 슈퍼페이지 사이즈는 제1 사이즈의 두개 이상의 연속적인, 정렬된(contiguous, aligned) 페이지들의 사이즈와 동일하며, 각각의 슈퍼페이지 사이즈는 제2 사이즈보다 작다.
이러한 그리고 다른 실시예들은 하기의 설명 및 첨부의 도면을 참조함으로써 자명해질 것이다.
도 1은 확장된 페이지 사이즈들을 포함할 수 있는 컴퓨터 시스템의 일 실시예의 간략화된 블록도이다.
도 2는 시스템에서 프로세서에 의해 사용될 수 있는 주소 변환 시스템의 일 실시예를 도시한다.
도 3은 페이지 테이블 내의 엔트리들 및 TLB 내의 엔트리들을 메모리에 매핑하는 것의 일 실시예이다.
도 4는 확장된 페이지 사이즈들을 지원하는 상태를 표시하는 제어 레지스터 내에 포함된 비트 필드들의 일 실시예를 도시한다.
도 5는 모델-특정 레지스터(MSR) 내에 포함된 비트 필드들의 일 실시예를 도시한다.
도 6은 슈퍼페이지들을 정의하기 위하여 운영 시스템에 의해 사용될 수 있는 데이터 구조 엔트리들의 일 실시예를 도시한다.
도 7은 슈퍼페이지에 액세스하기 위하여 프로세서에 의해 실행될 수 있는 페리징 프로세스의 일 실시예를 도시한다.
도 8은 슈퍼페이지들을 지원하는 프로세서 내의 페이지 테이블로부터 판독되는 슈퍼페이지 엔트리의 유효성을 검사하기 위해 사용될 수 있는 프로세스의 일 실시예를 도시한다.
도 9는 슈퍼페이지들을 사용하기 위하여 프로세서를 구성하는데 사용될 수 있는 프로세스의 일 실시예를 도시한다.
본 발명은 다양한 수정 및 대안적인 형태가 가능하지만, 특정한 실시예들이 도면에 예로써 도시되며 여기에서 자세히 기술된다. 그러나, 실시예들에 대한 도면 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하여 의도된 것이 아니라, 반대로, 본 발명은 첨부의 청구항들에 의해 정의된 것과 같이 본 발명의 정신 및 범주 내에 들어오는 모든 수정, 등가 및 대안을 커버하는 것이다.
도 1은 확장된 페이지 사이즈들을 포함할 수 있는 컴퓨터 시스템(100)의 일 실시예의 개략화된 블록도이다. 프로세서(110)는 주변기기들(120) 및 물리적 메모리(physical memory)(130)에 연결된 것으로 도시된다. 주변기기들(120)은 저장 디바이스(170), 네트워크 인터페이스(174), 착탈가능 매체(removable medium)(177)를 포함할 수 있다. 도시된 실시예는 전형적인 범용 컴퓨터 시스템의 전형이다. 그러나, 도시된 구성요소들, 특히 프로세서(110)는, 제어 시스템, 기기(appliance), 자동차, 소비자 전자 제품, 또는 사실상 연산을 수행하거나 데이터를 저장 또는 처리하는 임의의 디바이스와 같은 다양한 장치에서 발견될 수 있다.
프로세서(110)는 주소 변환 기능을 제공함으로써 가상 메모리를 지원할 수 있는 다양한 프로세서들 중 하나의 예이다. 프로세서(110)는 I/O 인터페이스(160) 및 레벨-2(L2) 캐시(150)에 연결된 하나 이상의 코어들(140)을 포함할 수 있다. 코어(140)는 L2 캐시(150)에 연결된 레벨-1(L1) 캐시(145)를 포함할 수 있다. 물리적 메모리(130)는 전형적으로 RAM을 포함할 수 있으나, 또한 프로세서(110)에 연결되어 프로세서(110) 상에서 실행되는 프로세스들에 상대적으로 빠른 데이터 액세스를 제공하는 임의의 타입의 데이터 저장장치일 수 있다. 이와 대조적으로, 저장 디바이스(170)는 일반적으로, 더 느린 액세스 시간을 사용하여, 물리적 메모리(130)보다 큰 양의 데이터를 저장할 수 있다. 일반적인 저장 디바이스들은 하드 디스크, 플로피 디스크, CD, 또는 임의의 다른 적절한 데이터 저장 디바이스를 포함한다.
컴퓨터 시스템(100)의 의도된 사용에 따라, 다양한 다른 주변장치들(120)이 I/O 인터페이스(160)를 통해 프로세서(110)에 연결될 수 있다. 예를 들어, 주변장치들(120)은 키보드, 모니터, 스피커, 디스크 드라이브, 입출력 포트, 등을 포함할 수 있다. 메모리(130), 주변장치들(120), 및 프로세서(110) 사이의 상호연결은 주소 및 데이터 버스들을 포함할 수 있으며, 공유 버스, 스위칭 패브릭(switching fabric), 또는 컴퓨터 시스템 내에서 컴포넌트들을 함께 연결하기 위한 임의의 다른 적절한 상호연결 시스템을 포함할 수 있다. 대안적인 실시예들에서, 컴퓨터 시스템(100)은 2 레벨 보다 더 많거나 적은 레벨들의 캐시들을 포함할 수 있다.
동작 중, 코어(140)가 처음으로 데이터의 페이지에 대한 액세스를 요구할 때, 대응하는 데이터가 저장 디바이스(170)로부터 메모리(130)로 이동될 수 있다. 코어(140)는 그후 페이지의 하나 이상의 부분들(예를 들어, 캐시 라인들)을 메모리(130)로부터 L1 캐시(145)로 이동시킬 수 있다. 추가적인 캐시 라인들이 필요하므로, 이 캐시 라인들 또한 L1 캐시(145)로 이동될 수 있다. L1 캐시(145) 내에 충분한 스페이스가 없다면, 캐시 라인들이 L2 캐시(150)로 이동(퇴거(eviction))될 수 있다. 마찬가지로, L2 캐시(150)가 만원(full)이됨에 따라, 캐시 라인들이 메모리(130)로 대체(displace)될 수 있고, 메모리(130)가 만원이됨에 따라, 페이지들이 저장 디바이스(170)로 대체될 수 있다. 특정 캐시가 만원이 될 때 페이지의 어떤 부분을 이동시킬지를 결정하는 기법들은 본 기술분야에서 잘 알려져 있다. 이러한 기법들 각각은 캐시 교체 정책(cache replacement policy) 또는 캐시 알고리즘으로서 지칭될 수 있다.
도 2는 시스템(100) 내에서 프로세서(110)에 의해 사용될 수 있는 주소 변환 시스템(200)의 일 실시예를 도시한다. 시스템(200)은 변환 색인 버퍼(TLB)(210), 페이지 테이블(220), 및 디스크(230)를 포함한다. 일 실시예에서, TLB(210) 및 페이지 테이블(220)은 프로세서(110) 내에 통합될 수 있고, 디스트(230)는 저장 디바이스(170)와 유사한 다양한 저장 디바이스들 중 임의의 것일 수 있다. 동작 중에, 프로세서(110)는 가상 메모리 위치를 판독하거나 가상 메모리 위치에 기록하는 명령을 실행하는 프로세스로부터 요구되는 페이지에 대한 가상 주소(240)를 얻을 수 있다.
프로세서(110)는 그후 TLB(210) 내의 엔트리들을 컨설팅(consulting)함으로써 가상 주소(240)에 대응하는 물리적 주소를 식별하려 시도할 수 있다. 가상-물리 변환이 TLB(210) 내에 존재한다면(TLB 히트라 칭해짐), 프레임 번호를 포함하는 물리적 주소(250)가 프로세서(110)로 리턴될 수 있다. 가상-물리 변환이 TLB(210) 내에 존재하지 않는다면(TLB 미스라 칭해짐), 프로세서(110)는 페이지 테이블(220) 내의 엔트리들을 컨설팅함으로써 가상 주소(240)에 대응하는 물리적 주소를 식별하려 시도할 수 있다. 가상-물리 변환이 페이지 테이블(220) 내에 존재한다면(페이지 테이블 히트라 칭해짐), 변환 엔트리가 TLB(210)에 기록될 수 있다. 후속적으로, 프로세서(110)는 TLB(210) 내의 엔트리들을 컨설팅함으로써 액세스를 재시도할 수 있고, 여기서 요구되는 엔트리가 이제 발견될 수 있다. 가상-물리 변환이 페이지 테이블(220) 내에 존재하지 않으면(페이지 테이블 미스라 칭해짐), 프로세서(110)가 페이지 폴트(page fault)를 선언할 수 있다. 페이지 폴트는 요구되는 페이지가 디스트(230)로부터 검색되게 하며, 대응하는 엔트리가 페이지 테이블(220)에 기록되게 할 수 있다. 페이지 테이블(220)이 업데이트된 후, 프로세서(110)는 TLB(210) 내의 엔트리들을 컨설팅함으로써 액세스를 재시도할 수 있다. TLB(210)가 아직 업데이트되지 않았으므로, TLB 미스가 발생할 것이다. 그러나, 프로세서(110)는 페이지 테이블 히트가 발생할 수 있는 페이지 테이블(220) 내의 엔트리들을 컨설팅할 수 있고, 변환 엔트리가 TLB(210)에 기록될 수 있다. 후속적으로, 프로세서(110)는 TLB(210) 내의 엔트리들을 컨설팅함으로써 액세스를 재시도할 수 있고, 여기서 요구되는 엔트리가 이제 발견될 수 있다. 요구되는 페이지가 디스크(230)로부터 검색될 수 없다면, 예를 들어, 요구되는 액세스가 무효라면, 프로세서(110) 상에서 실행되는 운영 시스템과 같은 소프트웨어에 의해 분할 오류(segmentation fault) 또는 다른 유사한 에러가 선언 또는 처리될 수 있다.
페이지 테이블(220) 내의 엔트리들은 임의의 다양한 포맷들을 사용하여 가상 주소를 물리적 주소로 변환할 수 있다. 일반적으로 말하면, 가상 주소는 페이지 테이블(220)에 대한 인덱스로서 사용되는 다수의 비트 필드들 및 페이지 테이블(220)에 의해 식별되는 페이지에의 오프셋으로서 사용되는 하위 비트들의 세트(a set of low order bits)를 포함한다. 다양한 실시예들에서, 페이지 테이블(220)은 하나 이상의 레벨들을 포함할 수 있으며, 레벨들 각각은 가상 주소의 특정 비트 필드에 의해 인덱싱된다. 따라서, 가상 주소들 내의 상위 비트 필드들의 포맷은 페이지의 사이즈 및 페이지 테이블(220) 내의 레벨들의 수(number levels)에 의존한다. 페이지 테이블 레벨들의 수와 관계없이, 페이지 테이블 엔트리들 및 대응하는 TLB 엔트리들이 가상 주소들을 물리적 프레임 번호를 포함하는 물리적 주소들로 변환하는데 사용될 수 있다.
가상 주소(virtual addressing)를 지원하는 프로세서들은 다양한 동작 모드들에서 다양한 길이의 가상 주소들을 사용할 수 있다. 그러한 동작 모드들은 비트-필드들이 가상 주소를 물리적 주소로 변환하는데 사용되는 방식뿐만아니라 운영 시스템 및 프로세서가 가상 주소 내의 비트-필드들을 해석하는 방식을 정의할 수 있다. 일 실시예에서, 프로세서(110)는 x86 구조와 호환가능한 프로세서들의 동작 모드들과 백워드 호환성(backward compatibility)를 유지한다.
TLB의 커버리지를 증가시키고 TLB 미스의 공산(odds)을 감소시키기 위한 한가지 기법은 TLB 내의 각각의 엔트리에 의해 표현되는 페이지들의 사이즈를 증가시키는 것이다. 프로세서(110)는 하기에서 기술되는 제어 레지스터 설정들을 통해 확장된 페이지 사이즈들을 사용하도록 구성될 수 있다. 도 3은 페이지 테이블(310) 내의 엔트리들 및 TLB(350) 내의 엔트리들을 메모리(330)에 매핑하는 것에 대한 일 실시예를 도시한다. 도시된 실시예에서, 페이지 테이블 엔트리들은 4KB 페이지들에 대응하며, TLB 엔트리들은 더 큰 페이지 사이즈, 예를 들어, 64KB 페이지들에 대응할 수 있다. 페이지 테이블(310)은 페이지 테이블 엔트리들(301-318) 등을 포함할 수 있다. TLB(350)는 엔트리들(351-357) 등을 포함할 수 있다. 메모리(330)는 페이지들(331-348) 등을 포함할 수 있다. 각각의 엔트리들(301-318)은 4KB 페이지에 대응할 수 있다. 도시된 바와 같이, 엔트리(301)는 페이지(331)에 대응하고 엔트리(302)는 페이지(332)에 대응하는 식으로 대응한다. 엔트리들(351-357) 각각은 64KB 페이지에 대응할 수 있다. 예를 들어, 도시된 바와 같이, 엔트리(352)는 페이지들(331-346)을 포함하는 메모리의 영역에 대응하며, 이는 슈퍼페이지로서 참조될 수 있다. 여기에서 사용된 것과 같은 슈퍼페이지는 두개 이상의 연속적며(contiguous), 집성되고(aggregated), 정렬된(alined) 4KB 페이지들을 포함하는 메모리의 영역을 나타낼 수 있다. 또한, 편이를 위하여 그리고 일반성을 잃지 않고, 하기의 논의에서, L1 캐시, L2 캐시, 또는 메모리 내에 위치되는 물리적 프레임의 임의의 부분은 저장 디바이스 내에 위치되는 프레임들에 대조적으로 메모리 내에 있는 것으로서 참조될 수 있다. 프로세서(110) 및 상기 프로세서 상에서 실행되는 운영 시스템은, 하기에서 기술되는 바와 같이, 슈퍼페이지들이 지원되는지 여부, 슈퍼페이지들이 인에이블되는지 여부, 어떤 TLB 엔트리들이 작은(예를 들어, 4KB) 페이지들에 대응하고 어떤 TLB 엔트리들이 슈퍼페이지들에 대응하는지를 결정하기 위하여 다양한 데이터 구조들을 사용할 수 있다.
도 4는 확장된 페이지 사이즈들을 지원하는 상태를 나타내는 제어 레지스터(400) 내에 포함된 비트 필드들의 일 실시예를 도시한다. 제어 레지스터(400)는 x86 구조를 포함하는 프로세서 내의 제어 레지스터 4(CR 4)에 대응할 수 있다. CR4 레지스터들은 프로세서의 성능을 정의하는 다수의 비트들을 포함한다. 도시된 바와 같이, 레지스터(400)는 슈퍼페이지들과 관련되는 두개의 비트들(401 및 402)을 포함한다. 비트(401)(페이지 사이즈 확장(page size extension) 또는 PSE 비트라고 지칭됨)는 페이지들이 4KB인지 또는 그보다 큰 4MB의 표준 페이지 사이즈인지, 또는 물리적 주소 확장(PAE)이 인에이블되는 경우 2MB인지를 표시한다. 비트(401)이 어써트되지 않으면, 4KB의 페이지 사이즈가 인에이블된다. 또한, 레지스터(400)는, 만약 세트가 확장 모드 페이지 사이즈들이 지원됨을 나타낸다면, 확장된 페이징 모드(XPM) 지원 비트로서 지칭되는 비트(402)를 포함한다.
일 실시예에서, 프로세서(110)는 단일의 확장 페이지 사이즈를 지원할 수 있다. 예를 들어, 64KB의 확장 페이지 사이즈가 지원될 수 있다. 대안적인 실시예들에서, 하나 이상의 확장된 페이지 사이즈가 지원될 수 있다. 어떤 확장 페이지 사이즈들이 지원되는지 결정하기 위하여 다양한 메커니즘들이 제공될 수 있다. 다음 섹션은 그러한 메커니즘 중 하나를 보여준다.
도 5는 모델-특정 레지스터(MSR; model-specific register)(500) 내에 포함된 비트 필드들의 일 실시예를 도시한다. MSR(500)은 프로세서에 의해 지원되는 확장 모드 페이지 사이즈들을 정의하는 다수의 비트들을 포함한다. 일 실시예에서, 도시된 바와 같이, 레지스터(500)는 비트들(501-508)을 포함한다. 위에서 기술된 것과 같이 비트들(401, 402)의 값들에 의해 표시된 바와 같은 확장된 페이지 사이즈들이 지원된다고 가정하면, 지원되는 페이지 사이즈들은 테이블 1에 표시된 것과 같은 비트들(501-508)의 값에 의해 표시된다.
비트 번호 지원되는 확장된 페이지 사이즈
501 8 KB
502 16 KB
503 32 KB
504 64 KB
505 128 KB
506 256 KB
507 512 KB
508 1 MB
일 실시예에서, 레지스터(500)는 판독 전용 레지스터일 수 있다. 따라서, 표 1에 도시된 것과 같이, 레지스터(500)는 단일의 선택된 확장 페이지 사이즈가 지원됨을 나타낸다. 일 실시예에서, 비트들(501-508) 중 단지 일 비트가 설정되어 어떠한 단일의 확장 페이지 사이즈가 지원되는지를 표시할 수 있다. 대안적인 실시예에서, 비트들(501-508) 중 하나 이상이 설정되어 하나 이상의 확장 페이지 사이즈가 지원됨을 나타낼 수 있다. 추가적인 실시예에서, 레지스터(500)는 기록가능할 수 있으며, 소프트웨어에 의해 동적으로 인에이블 및 디스에이블됨으로써 다양한 페이지 사이즈들을 인에이블할 수 있다.
확장된 페이징 모드는 보안 가상 머신(SVM)과 같은 가상화된 머신 환경의 호스트 모드 및 게스트 모드에서 개별적으로 인에이블 될 수 있음에 주목하여야 한다. 예를 들어, 호스트 운영 시스템과 게스트 운영 시스템 사이이에서 스위칭될 때, 레지스터들(400, 500)의 OS-특정 버전들(OS-specific versions)의 값들이 저장될 수 있고 가상 머신 제어 블록(VMCB; virtual machine control block)으로서 알려진 데이터 구조로 복구(restore)될 수 있다.
레지스터들(400, 500) 내에 설정된 값들을 검사함으로써, 프로세서(110) 상에서 실행되는 소프트웨어는, 확장된 페이지 사이즈들이 있다면, 어떤 확장된 페이지 사이즈들이 지원되는지를 결정할 수 있다. 소프트웨어는 슈퍼페이지들을 정의하기 위하여 다수의 추가적인 메커니즘들을 사용할 수 있다.
도 6은 슈퍼페이지들을 정의하기 위하여 운영 시스템에 의해 사용될 수 있는 데이터 구조 엔트리들의 일 실시예를 도시한다. 도면에서, 페이지 테이블 엔트리(352) 및 페이지-속성-테이블(PAT) 엔트리(630)가 도시된다. 일 실시예에서, 페이지 테이블 내의 각각의 엔트리는 참조 페이지 테이블 엔트리의 포맷을 기술하는 PAT 내의 엔트리를 참조하는 표시자 비트들을 포함한다. 예를 들어, 페이지 테이블 엔트리(352)는, 예를 들어, 엔트리(630)와 같은 PAT 내의 특정 엔트리에 대한 인덱스를 함께 형성하는 비트들(603, 604, 607)을 포함한다. 일 실시예에서, 비트(603)는 PWT(page write through) 비트에 대응할 수 있고, 비트(604)는 페이지 캐시 디스에이블(PCD) 비트에 대응할 수 있고, 그리고 비트(607)는 x86 구조의 페이지 속성 테이블(PAT)에 대응할 수 있다.
PAT 엔트리(630) 내에서, 슈퍼페이지들이 인에이블되는지 여부를 표시하기 위하여 임의의 비트가 지정될 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 슈퍼페이지 비트(634)가 PAT 엔트리(630) 내에 도시된다. 일 실시예에서, 비트(634)가 '1'로 설정된다면, 이 페이지 속성 엔트리를 참조하는 페이지 테이블 엔트리는 페이지 테이블 엔트리들의 슈퍼페이지 그룹의 일부이고 이 페이지 속성 엔트리를 참조하는 TLB 엔트리가 슈퍼페이지를 기술한다. 그렇지 않고, 만약 비트(634)가 '1'로 설정되지 않는다면, 이 페이지 속성 엔트리를 참조하는 페이지 테이블 엔트리 또는 TLB 엔트리는 4KB 페이지를 기술한다.
대안적인 실시에에서, 비트(634)가 슈퍼페이지 비트로서 기능하는 PAT 내의 엔트리에 대한 인덱스로서 비트들(603, 604, 607)을 사용하는 대신에, 페이지 테이블 엔트리(352)의 또 다른 비트가 슈퍼페이지 비트로서 사용될 수 있다. 예를 들어, 페이지 테이블 엔트리(352)의 비트(11) 또는 PAT 비트, 비트(607)와 같은 AVL 비트들 중 하나가 슈퍼페이지 비트로서 사용될 수 있다. AVL 비트가 사용된다면, 하드웨어가 AVL 비트를 해석할 수 있게 하기 위하여 프로세서를 XPM을 지원하도록 구성할 필요가 있을 수 있다.
페이지 테이블 엔트리(352) 내에서, 비트들(612-616) 등을 포함하는 비트 필드(640)가 또한 보여진다. 비트 필드(640)는 어떤 슈퍼페이지 사이즈가 인에이블되는지를 표시하기 위하여 사용될 수 있다. 일 실시예에서, 도 2에 도시된 것과 같은 비트 필드(640) 값들은 어떤 슈퍼페이지 사이즈가 인에이블되는지를 표시한다.
지원되는 슈퍼페이지 사이즈 비트 필드(640) 내에 포함된 비트들 비트 필드(640)의 값
8KB 612 b'0
16KB 612-613 b'01
32KB 612-614 b'011
64KB 612-615 b'0111
128KB 612-616 b'01111
256KB 612-617 b'011111
512KB 612-618 b'0111111
1MB 612-619 b'01111111
비트 필드(640)의 부분이 아닌 비트들(612-619) 중 임의의 비트는 물리적 프레임 번호의 부분일 수 있다. 예를 들어, 64KB 슈퍼페이지들이 인에이블되면, 인에이블되는 슈퍼페이지 사이즈를 표시하기 위하여 비트들(612-615)이 비트 필드(640)로서 예약되며 한편 상위 비트들(616, 617, 등)은 물리적 프레임 번호의 부분이다. 대안적인 실시예에서, 페이지 테이블 엔트리(352)로부터의 다양한 다른 비트들 중 임의의 비트가 운영 시스템에 의해 사용되어 인에이블된 슈퍼페이지 사이즈(들)을 정의할 수 있다.
일 실시예에서, 확장된 페이징 모드는 보안 가상 머신(SVM; Secure Virtual Machines)과 같은 가상화된 머신 환경의 게스트 모드 및 호스트 모드에서 개별적으로 정의될 수 있다. 예를 들어, 호스트 운영 시스템과 게스트 운영 시스템 사이에서 스위칭할 때, 페이지 테이블들 및 페이지 속성 테이블들의 OS-특정 버전들의 값들이 유지될 수 있다. 또한, 가상화된 머신들을 포함하는 일부 실시예들에서, 슈퍼페이지들의 제1 세트가 게스트 운영 시스템 주소 스페이스 내의 가상 주소들을 게스트 운영 시스템 주소 스페이스 내의 물리적 주소들로 변환하는데 사용되고, 슈퍼페이지들의 제2 세트는 게스트 운영 시스템 주소 스페이스 내의 물리적 주소들을 호스트 운영 시스템 주소 스페이스 내의 물리적 주소들로 변환하는데 사용될 수 있음에 주목하여야 한다. 그러한 시스템들에서 사용되는 페이지 테이블들은 네스팅된 페이지 테이블들로서 참조될 수 있다.
위에서 언급한 바와 같이, 슈퍼페이지는 두개 이상의 연속적인, 집성되고 정렬된(aggregated, aligned) 4KB 페이지들을 포함한다. 일 실시예에서, 슈퍼페이지들을 사용하는 운영 시스템은 슈퍼페이지 엔트리를 세트의 각 엔트리로 복제(replication)함으로써, 슈퍼페이지 영역을 형성하기 위하여 그러한 4KB 페이지들의 세트를 기술하는 페이지 테이블 엔트리들의 세트를 지속적으로 충전할 것이 요구될 수 있다. 하기의 정합성 요건들(consistency requirements)이 이 실시예에 적용된다.
개별 페이지 테이블 엔트리들은 상기 엔트리들이 슈퍼페이지 엔트리의 부분임을 표시하기 위하여 위에서 기술된 포맷을 고수하도록 요구될 수 있다. 프로세서(110)가 위에서 기술된 포맷을 고수하지 않는 개별적인 페이지 테이블 엔트리를 판독한다면, 슈퍼페이지가 무효(invalid)로 선언될 수 있고 문제의 페이지 테이블 엔트리는 4KB 페이지를 기술하는 것으로서 해석될 수 있다. TLB는 불일치 엔트리(inconsistent entry)가 판독될 때 충돌 엔트리들(conflicting entries)을 제거할 수 있다. 또한, 프로세서(110)가 불일치 엔트리(inconsistent entry) 내의 액세스된 그리고/또는 더티(A/D) 비트를 설정하려 시도한다면, 페이지 폴트가 발생될 수 있다.
추가적인 실시예에서, 유효 슈퍼페이지들은, 프로세서(110)와 그 위에서 실행되는 운영 시스템 사이의 계약을 형성하는 규칙들의 세트에 따라 페이지 테이블 엔트리들의 완전한 세트가 페이지 테이블 내에 존재할 것을 요구할 수 있다. 예를 들어, 64KB 슈퍼페이지들이 인에이블되면, 유효 슈퍼페이지를 형성하기 위해서는 16개의 4KB 페이지 테이블 엔트리들이 있어야 한다. 그렇지 않다면, 액세스가 유효 페이지 테이블 엔트리가 존재하는 4KB 페이지에 대한 것이라 하더라도 메모리 액세스 동안 페이지 폴트가 발생할 수 있다. 추가적인 실시예에서, 슈퍼페이지 엔트리를 포함하는 각각의 개별적인 4KB 엔트리의 캐싱 속성들 및/또는 물리적인 프레임 번호들이 동일할 것이 요구될 수 있다. 그렇지 않은 경우, 프로세서(110)의 동작은 정의되지 않을 수 있다. 추가의 실시예에서, 수퍼페이지 엔트리를 포함하는 각각의 개별적인 4KB 엔트리의 보호 속성들이 동일할 것으로 요구될 수 있다. 그렇지 않다면, 액세스가 유효 페이지 테이블 엔트리가 존재하는 4KB 페이지에 대한 것이라 하더라도 메모리 액세스 동안에 페이지 폴트가 발생할 수 있다. 위에 기술된 규칙들을 따른다면, 운영 시스템은 몇 개의 거짓(spurious)(그러나 무해한(harmless)) 페이지 폴트들을 무시함으로써 슈퍼페이지를 포함하는 개별 페이지 테이블 엔트리들을 순차적으로 업그레이드할 수 있다. 대안적인 실시예에서, 운영 시스템은 거짓 페이지 폴트들을 회피하기 위하여 업데이트 프로세서 동안 페이지 테이블 오프라인을 취할 수 있다.
또 다른 실시예에서, 페이지 테이블 엔트리의 A/D 비트들을 업데이트하는 것은 엔트리들의 슈퍼페이지 세트에 속하는 제1(즉, 최저 주소(lowest address)) 엔트리가 먼저 업데이트될 것을 요구할 수 있다. 제1 엔트리가 슈퍼페이지 비트 세트를 가지지 않거나 위에서 기술된 것과 같은 다른 불일치들이 존재하면, 페이지 폴트가 발생할 수 있다. 대안적인 실시예에서, 페이지 테이블 엔트리의 A/D 비트들을 업데이트하는 것은 단지, 엔트리들의 슈퍼페이지 세트에 속하는 엔트리들 중 임의의 엔트리가 업데이트될 것을 요구할 수 있다. 그러한 업데이트들("성긴" 업데이트들("sparse" updates)이라 칭해짐)은, 운영 시스템이 순차적으로 엔트리들을 스캔하거나 유효한 슈퍼페이지를 찾기 위하여 슈퍼페이지 엔트리들의 세트 내의 모든 엔트리들의 관련 비트들에 대해 논리적 'OR' 연산을 행할 것을 요구할 수 있다. 임의의 엔트리 내의 더티 비트를 업데이트하는 것은 엔트리 내의 액세스된 비트가 또한 동시에 갱신되는 것을 요구할 수 있다.
도 7은 슈퍼페이지에 액세스하기 위하여 프로세서(110)에 의해 실행될 수 있는 페이징 프로세스(700)의 일 예를 도시한다. 프로세스(700)는 슈퍼페이지의 가상 주소가 얻어질 때(블록(710)) 시작될 수 있다. 가상 주소가 사용가능해지면, 매칭 엔트리에 대해 검사하기 위하여 TLB가 액세스될 수 있다(블록(720)). TLB 히트가 존재한다면(결정 블록(725)), TLB 내에서 발견된 물리적 프레임 번호 및 가상 주소로부터의 오프셋을 사용하는 등에 의해 가상 주소가 물리적 주소로 변환될 수 있다(블록(770)). 물리적 주소가 알려지면, 대응하는 슈퍼페이지가 메모리에서 액세스될 수 있다(블록(780)). 페이징 프로세스는 블록(790)에서 완료된다.
TLB 미스가 존재하면(결정 블록(725)), 매칭 엔트리에 대해 검사하기 위하여 페이지 테이블(들)이 액세스될 수 있다(블록(730)). 페이지 테이블 미스가 존재하면(결정 블록(735)), 페이지 폴트가 선언될 수 있다(블록(760)). 페이지 테이블 히트가 존재하고(결정 블록(735)) 페이지 테이블 엔트리가 4K바이트 페이지에 대응하면(결정 블록(740)), 프로세스(700)는 블록(770)에서 계속될 수 있다. 페이지 테이블 히트가 존재하고(결정 블록(735)) 페이지 테이블 엔트리가 4KB 페이지에 대응하지 않으면(결정 블록(740)), 함께 타겟 슈퍼페이지에 대응하는 페이지 테이블 엔트리들의 세트의 유효성이 검증될 수 있다(블록(745)). 페이지 테이블 엔트리들의 세트가 유효하지 않으면(결정 블록(750)), 페이지 폴트가 선언될 수 있다(블록(760)). 일 실시예에서, 페이지 폴트는 액세스 요청을 종료할 수 있다. 다른 실시예에서, 페이지 폴트의 원인에 따라, 액세스가 계속될 수 있다. 예를 들어, 위에서 기술된 것과 같은 특정한 상황에서, 액세스 요청은 4KB 페이지 액세스 요청인 것으로 추정될 수 있다. 다른 환경에서, 마치 페이지 테이블 엔트리들이 유효한것 처럼 페이지 폴트들이 무시될 수 있고 슈퍼페이지 액세스가 계속 허용될 수 있다. 페이지 테이블 엔트리들의 세트가 유효하면(결정 블록(750)), TLB 내에서 발견된 물리적 프레임 번호 및 가상 주소로부터의 오프셋을 사용함으로써와 같이 가상 주소가 물리적 주소로 변환될 수 있다(블록(770)). 물리적 주소가 알려지면, 대응하는 슈퍼페이지가 메모리 내에서 액세스될 수 있다(블록(780)). 페이징 프로세스는 블록(790)에서 완료된다.
도 8은 슈퍼페이지들을 지원하는 프로세서 내의 페이지 테이블로부터 판독된 슈퍼페이지의 유효성을 검사하기 위해 사용될 수 있는 프로세스(800)의 일 실시예를 도시한다. 프로세스(800)는 슈퍼페이지 페이지-테이블 엔트리가 수신될 때 시작될 수 있다(블록(810)). 슈퍼페이지 엔트리들의 세트는 정합성(consistency)에 대해 검사될 수 있다. 세트 내의 모든 엔트리들의 포맷들이 불일치(inconsistent)하거나(결정 블록(820)), 세트 내에 미싱 엔트리(missing entry)가 존재하거나(결정 블록(830)), 또는 엔트리들의 세트에서 엔트리들의 보호 속성들(protection attributes)이 미스매치(mismatch)되면(결정 블록(840)), 페이지 폴트가 선언될 수 있다(블록(825)).
세트 내의 모든 엔트리들의 포맷들이 일치하는 경우(결정 블록(820)), 상기 세트에는 미싱 엔트리들이 존재하지 않으며(결정 블록(830)), 그리고 엔트리들의 세트에서 엔트리들의 보호 속성들이 매치되는 경우(결정 블록(840))-그러나 엔트리들의 세트 내에 미스매치된 물리적 프레임 번호들이 존재하거나(결정 블록(850)) 엔트리들의 세트 내에 미스매치된 캐싱 속성들이 존재한다면-, 페이지의 특성(behavior)은 정의되지 않는다. 엔트리들의 세트 내에 미스매칭된 물리적 프레임 번호들이 존재하지 않거나(결정 블록(850) 미스매칭된 캐싱 속성들이 존재하지 않는다면, 페이징 프로세스가 완료될 수 있다(블록(870)).
도 9는 프로세서가 슈퍼페이지들을 사용하도록 구성하기 위해 사용될 수 있는 프로세스의 일 실시예를 도시한다. 프로세스(900)는 확장된 페이지 사이즈들이 지원되는지 결정하기 위하여 프로세서 하드웨어 성능을 검사하는 것으로 시작할 수 있다(결정 블록(910)). 예를 들어, 일 실시예에서, 제어 상태 레지스터 내의 비트가, 확장된 페이지 사이즈들이 지원되는지 여부를 표시할 수 있다. 확장된 페이지 사이즈가 지원되지 않으면, 에러가 리턴될 수 있다(블록(920)). 확장된 페이지 사이즈들이 지원되면, 슈퍼페이지들의 어떤 사이즈가 지원되는를 결정하기 위하여 또 다른 검사가 수행될 수 있다(블록(930)). 예를 들어, 일 실시예에서, 모델 특정 레지스터 내의 비트 필드는 어떤 확장된 페이지 사이즈들이 지원되는지를 표시할 수 있다. 그후, 하나 이상의 요구되는 페이지 사이즈들이 선택될 수 있다(블록(940)). 슈퍼페이지 표시자는 소프트웨어에 의해 설정될 수 있다(블록(950)). 예를 들어, 슈퍼페이지들을 위한 페이지 테이블 엔트리들의 포맷을 정의하는데 사용되는 페이지 속성 테이블 엔트리 내의 비트가 슈퍼페이지들의 인에이블(enablement)을 표시하는 값으로 설정될 수 있다. 일단 슈퍼페이지들이 인에이블되면, 슈퍼페이지에 대응하는 엔트리들의 세트의 제1 엔트리가 페이지 테이블(970)에 기록될 수 있다. 일 실시예에서, 위에 기술된 페이지 속성 테이블 엔트리에 의해 지정된 포맷이 페이지 테이블 내의 제1 엔트리 및 후속 엔트리들에 대해 사용될 수 있다. 그후, 슈퍼페이지에 대응하는 엔트리들의 세트의 나머지 엔트리들이 페이지 테이블 내에 기록될 수 있다(블록(980)). 4KB 페이지들의 연속적인 정렬된 세트에 대응하는 엔트리들의 정합 세트(consistent set)가 페이지 테이블 내에 기록되면, 대응하는 슈퍼페이지가 액세스에 사용가능하며(블록(990)), 프로세스(900)가 완료된다.
위의 흐름도는 단지 설명을 위한 것임에 주목하여야 한다. 대안적인 실시예들에서, 흐름도 내에 설명된 요소들이 서로 다른 순서로 발생하거나 일부 경우에는 동시에 발생할 수 있다. 추가적으로, 흐름도 요소들중 몇몇은 다양한 실시예들에서 나타나지 않거나 다른 요소들과 연결될 수 있다. 모든 그러한 대안들이 고려될 수 있다.
위에 설명된 실시예들은 소프트웨어를 포함할 수 있음을 알아야 한다. 그러한 실시예에서, 방법들 및/또는 메커니즘들을 구현하는 프로그램 명령들이 컴퓨터 액세스가능한 매체상에서 저장 또는 운반될 수 있다. 프로그램 명령들을 저장하도록 된 다양한 타입의 매체들이 사용가능하며, 상기 매체들은 하드 디스크, 플로피 디스크, CD-ROM, DVD, 플래시 메모리, 프로그램가능한 ROM들(PROM), 랜덤 액세스 메모리(RAM) 및 다양한 다른 형태의 휘발성 또는 비휘발성 저장장치를 포함한다. 컴퓨팅 디바이스에 의한 액세스를 위하여 프로그램 명령들을 운반하도록 된 또 다른 형태의 매체들은, 전기, 전자기, 광학, 또는 디지털 신호들이 운반될 수 있는 네트워크, 무선, 및 위성 링크들과 같은 지상파 및 비지상파 통신 링크들을 포함한다. 따라서, 다양한 실시예들은 컴퓨터 액세스가능한 매체에 대한 위의 설명에 따라 구현된 명령들 및/또는 데이터의 수신, 송신 또는 저장을 더 포함할 수 있다.
위의 실시예들은 상당히 자세히 기술되었으나, 위의 개시가 완전히 이해된다면 다양한 변형 및 수정이 본 기술분야의 당업자에게 자명할 것이다. 하기의 청구항들은 모든 그러한 변형 및 수정을 포괄하도록 의도된 것이다.

Claims (20)

  1. 프로세서로서,
    가상 메모리 페이징 메커니즘과, 상기 가상 메모리 페이징 메커니즘은 상기 프로세서 상에서 동작하는 운영 시스템(operating system)으로 하여금,
    제1 사이즈의 페이지들 및 상기 제1 사이즈보다 큰 제2 사이즈의 페이지들을 사용할 수 있게함과 아울러;
    상기 제1 사이즈의 두개 이상의 연속적인 페이지들을 포함하는 페이지들의 세트로 구성되며 상기 제2 사이즈보다 작은 슈퍼페이지들을 형성할 수 있게 하며; 그리고
    각각의 슈퍼페이지 내에 포함된 상기 두개 이상의 연속적인 페이지들 각각에 대한 개별 엔트리(seperate entry)를 포함하는 페이지 테이블을 포함하여 구성되는 것을 특징으로 하는 프로세서.
  2. 제1 항에 있어서,
    상기 가상 메모리 페이징 메커니즘은 상기 프로세서 상에서 동작하는 상기 운영 시스템으로 하여금 단일의 가상 주소를 사용하여 각각의 슈퍼페이지에 액세스할 수 있게 하는 것을 특징으로 하는 프로세서.
  3. 제1 항에 있어서,
    상기 슈퍼페이지의 사이즈는 64KB인 것을 특징으로 하는 프로세서.
  4. 제2 항에 있어서,
    변환 색인 버퍼(TLB)를 더 포함하며, 상기 가상 메모리 페이징 메커니즘은, 상기 TLB 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자(indicator)가 어써트(assert)됨을 검출함에 응답하여, 상기 TLB 내의 단일 엔트리(single entry)를 슈퍼페이지에 대응하는 페이지들의 세트를 포함하는 메모리의 영역을 참조(refering to)하는 것으로서 해석하도록 된 것을 특징으로 하는 프로세서.
  5. 제4 항에 있어서,
    상기 가상 메모리 페이징 메커니즘은 또한, 상기 페이지 테이블 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자가 어써트됨을 검출함에 응답하여, 상기 페이지 테이블 내의 상기 엔트리를 슈퍼페이지의 일부를 포함하는 메모리의 영역을 참조하는 것으로서 해석하도록 된 것을 특징으로 하는 프로세서.
  6. 제4 항에 있어서,
    상기 슈퍼페이지 인에이블 표시자는 소프트웨어-설정가능(software-settable)한 것을 특징으로 하는 프로세서.
  7. 제2 항에 있어서,
    상기 가상 메모리 페이징 메커니즘은, 상기 페이지 테이블 내의 적어도 두개의 엔트리들 중 적어도 하나가 미싱(missing)이거나 상기 페이지 테이블 내의 적어도 두개의 엔트리들 중 적어도 하나가 상기 페이지 테이블 내의 상기 적어도 두개의 엔트리들 중 다른 엔트리(other)의 대응하는 속성들(attributes)과 일치하지 않는 속성들을 포함하는 것을 검출함에 응답하여, 페이지 폴트(page fault)를 발행하도록 된 것을 특징으로 하는 프로세서.
  8. 제1 항에 있어서,
    상기 가상 메모리 페이징 메커니즘은 상기 프로세서 상에서 동작하는 제1 운영 시스템 및 제2 운영 시스템 중 하나 또는 둘 모두에 대해 슈퍼페이지들의 사용을 동시에 그리고 독립적으로 인에이블하도록 된 것을 특징으로 하는 프로세서.
  9. 제8 항에 있어서,
    상기 제1 운영 시스템은 게스트 주소 스페이스 내의 가상 주소를 게스트 주소 스페이스 내의 물리적 주소로 변환하기 위하여 제1 페이지 테이블을 사용하도록 된 가상화된 환경(virtualized environment)의 게스트 운영 시스템이고, 상기 제2 운영 시스템은 게스트 주소 스페이스 내의 물리적 주소를 호스트 주소 스페이스 내의 물리적 주소로 변환하기 위하여 제2 페이지 테이블을 사용하도록 된 가상화된 환경의 호스트 운영 시스템인 것을 특징으로 하는 프로세서.
  10. 제1 항에 있어서,
    상기 가상 메모리 페이징 메커니즘은 상기 운영 시스템으로 하여금 두개 이상의 서로 다른 슈퍼페이지 사이즈들을 사용할 수 있게 해주도록 되어 있고, 각각의 슈퍼페이지들의 사이즈는 상기 제1 사이즈의 두개 이상의 연속적인(contiguous), 정렬된(aligned) 페이지들의 사이즈와 동일하고, 여기서 각각의 슈퍼페이지 사이즈는 상기 제2 사이즈보다 작은 것을 특징으로 하는 프로세서.
  11. 프로세서에서 가상 메모리 페이징을 위한 방법으로서,
    상기 프로세서 상에서 동작하는 운영 시스템이 제1 사이즈의 페이지들 및 제2 사이즈의 페이지들을 사용할 수 있도록 인에이블하는 단계와; 그리고
    상기 운영 시스템이 상기 제1 사이즈의 두개 이상의 연속적인 페이지들을 포함하는 페이지들의 세트로 구성된 슈퍼페이지들을 형성할 수 있도록 인에이블하는 단계와, 여기서 슈퍼페이지의 사이즈는 상기 제2 사이즈보다 작고; 그리고
    페이지 테이블 내에, 각각의 슈퍼페이지 내에 포함된 상기 두개 이상의 연속적인 페이지들 각각에 대한 개별 엔트리(separate entry)를 포함시키는 단계를 포함하는 것을 특징으로 하는 가상 메모리 페이징 방법.
  12. 제11 항에 있어서,
    상기 프로세서 상에서 동작하는 상기 운영 시스템이 단일 가상 주소를 사용하여 각각의 슈퍼페이지를 액세스할 수 있도록 인에이블하는 단계를 더 포함하는 것을 특징으로 하는 가상 메모리 페이징 방법.
  13. 제11 항에 있어서,
    상기 슈퍼페이지의 사이즈는 64KB인 것을 특징으로 하는 가상 메모리 페이징 방법.
  14. 제12 항에 있어서,
    TLB 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자가 어써트됨을 검출함에 응답하여, TLB 내의 단일 엔트리를, 슈퍼페이지에 대응하는 페이지들의 세트로 구성된 메모리의 영역을 참조하는 것으로서 해석하는 단계를 더 포함하는 것을 특징으로 하는 가상 메모리 페이징 방법.
  15. 제14 항에 있어서,
    상기 페이지 테이블 내의 엔트리와 관련된 슈퍼페이지 인에이블 표시자가 어써트됨을 검출함에 응답하여, 상기 페이지 테이블 내의 상기 엔트리를 슈퍼페이지의 일부를 포함하는 메모리의 영역을 참조하는 것으로서 해석하는 단계를 더 포함하는 것을 특징으로 하는 가상 메모리 페이징 방법.
  16. 제14 항에 있어서,
    상기 슈퍼페이지 인에이블 표시자는 소프트웨어-설정가능한 것을 특징으로 하는 가상 메모리 페이징 방법.
  17. 제12 항에 있어서,
    상기 페이지 테이블 내의 적어도 두개의 엔트리들 중 적어도 하나가 미싱(missing)이거나 또는 상기 페이지 테이블 내의 상기 적어도 두개의 엔트리들 중 적어도 하나가 상기 페이지 테이블 내의 상기 적어도 두개의 엔트리들 중 다른 엔트리(other)의 대응하는 속성들과 불일치하는 속성들을 포함함을 검출함에 응답하여, 페이지 폴트를 발행하는 단계를 더 포함하는 것을 특징으로 하는 가상 메모리 페이징 방법.
  18. 제11 항에 있어서,
    상기 프로세서 상에서 동작하는 제1 운영 시스템 및 제2 운영 시스템 중 하나 또는 둘 모두에 대해 슈퍼페이지들의 사용을 동시에 그리고 독립적으로 인에이블하는 단계를 더 포함하는 것을 특징으로 하는 가상 메모리 페이징 방법.
  19. 제18 항에 있어서,
    상기 제1 운영 시스템은 게스트 주소 스페이스 내의 가상 주소를 게스트 주소 스페이스 내의 물리적 주소로 변환하기 위하여 제1 페이지 테이블을 사용하도록 된 가상화된 환경의 게스트 운영 시스템이고, 상기 제2 운영 시스템은 게스트 주소 스페이스 내의 물리적 주소를 호스트 주소 스페이스 내의 물리적 주소로 변환하기 위하여 제2 페이지 테이블을 사용하도록 된 가상화된 환경의 호스트 운영 시스템인 것을 특징으로 하는 가상 메모리 페이징 방법.
  20. 제11 항에 있어서,
    두개 이상의 서로 다른 슈퍼페이지 사이즈들의 슈퍼페이지들을 사용할 수 있도록 상기 운영 시스템을 인에이블하는 단계를 더 포함하며, 각각의 슈퍼페이지 사이즈는 상기 제1 사이즈의 두개 이상의 연속적인, 정렬된 페이지들의 사이즈와 동일하고 각각의 슈퍼페이지 사이즈는 상기 제2 사이즈보다 작은 것을 특징으로 하는 가상 메모리 페이징 방법.
KR1020127000750A 2009-07-01 2010-06-30 집성된 소페이지들을 사용한 페이지 사이즈 확장 KR101563659B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/496,335 2009-07-01
US12/496,335 US8195917B2 (en) 2009-07-01 2009-07-01 Extended page size using aggregated small pages

Publications (2)

Publication Number Publication Date
KR20120106696A true KR20120106696A (ko) 2012-09-26
KR101563659B1 KR101563659B1 (ko) 2015-10-27

Family

ID=43411433

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127000750A KR101563659B1 (ko) 2009-07-01 2010-06-30 집성된 소페이지들을 사용한 페이지 사이즈 확장

Country Status (7)

Country Link
US (1) US8195917B2 (ko)
JP (1) JP2012532381A (ko)
KR (1) KR101563659B1 (ko)
CN (1) CN102473091B (ko)
GB (1) GB2485082B (ko)
IN (1) IN2012DN00196A (ko)
WO (1) WO2011002900A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101942663B1 (ko) * 2017-09-28 2019-01-25 한국과학기술원 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527736B1 (en) * 2010-09-07 2013-09-03 Adtran, Inc. Systems and methods for improving address translation speed
US8943296B2 (en) 2011-04-28 2015-01-27 Vmware, Inc. Virtual address mapping using rule based aliasing to achieve fine grained page translation
US9767039B2 (en) * 2011-07-18 2017-09-19 Vmware, Inc. Increasing granularity of dirty bit information in hardware assisted memory management systems
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9811472B2 (en) 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US9753860B2 (en) 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US8954707B2 (en) * 2012-08-03 2015-02-10 International Business Machines Corporation Automatic use of large pages
JP5958195B2 (ja) * 2012-08-31 2016-07-27 日本電気株式会社 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム
US9058268B1 (en) 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US9459877B2 (en) 2012-12-21 2016-10-04 Advanced Micro Devices, Inc. Nested speculative regions for a synchronization facility
US9164915B2 (en) 2013-01-15 2015-10-20 International Business Machines Corporation Reserving fixed page areas in real storage increments
US8966220B2 (en) 2013-01-15 2015-02-24 International Business Machines Corporation Optimizing large page processing
KR102069857B1 (ko) * 2013-02-28 2020-01-23 삼성전자주식회사 자체-학습을 통해 원래 이미지를 회전하는 방법과 상기 방법을 수행할 수 있는 장치들
US9507726B2 (en) * 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
EP3256947B1 (en) 2015-04-30 2021-10-27 Hewlett Packard Enterprise Development LP Mapping apertures of different sizes
US10310854B2 (en) 2015-06-30 2019-06-04 International Business Machines Corporation Non-faulting compute instructions
US10061539B2 (en) * 2015-06-30 2018-08-28 International Business Machines Corporation Inaccessibility status indicator
US10162525B2 (en) 2015-09-11 2018-12-25 Red Hat Israel, Ltd. Translating access requests for a multi-level page data structure
CN106940623B (zh) * 2016-01-04 2020-06-09 群联电子股份有限公司 存储器管理方法、存储器控制电路单元及存储器储存装置
US10108550B2 (en) 2016-09-22 2018-10-23 Google Llc Memory management supporting huge pages
US10282296B2 (en) 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
US10241925B2 (en) 2017-02-15 2019-03-26 Ati Technologies Ulc Selecting a default page size in a variable page size TLB
US10282309B2 (en) 2017-02-24 2019-05-07 Advanced Micro Devices, Inc. Per-page control of physical address space distribution among memory modules
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10228991B2 (en) 2017-06-28 2019-03-12 Qualcomm Incorporated Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems
CN108415782A (zh) * 2018-02-23 2018-08-17 携程旅游网络技术(上海)有限公司 应用程序的控件通信方法、装置、电子设备、存储介质
US11204879B2 (en) * 2019-06-06 2021-12-21 Arm Limited Memory management circuitry managing data transactions and address translations between an upstream device and a downstream device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6134602A (en) 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US8417913B2 (en) * 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US7444493B2 (en) * 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7395406B2 (en) * 2005-05-12 2008-07-01 International Business Machines Corporation System and method of large page handling in a virtual memory system
US7437529B2 (en) * 2005-06-16 2008-10-14 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment
US7376808B2 (en) * 2006-01-31 2008-05-20 International Business Machines Corporation Method and system for predicting the performance benefits of mapping subsets of application data to multiple page sizes
US7747838B2 (en) * 2007-05-19 2010-06-29 International Business Machines Corporation Method and apparatus for dynamically adjusting page size in a virtual memory range
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US7783859B2 (en) * 2007-07-12 2010-08-24 Qnx Software Systems Gmbh & Co. Kg Processing system implementing variable page size memory organization
US7793070B2 (en) * 2007-07-12 2010-09-07 Qnx Software Systems Gmbh & Co. Kg Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
US9244855B2 (en) * 2007-12-31 2016-01-26 Intel Corporation Method, system, and apparatus for page sizing extension
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101942663B1 (ko) * 2017-09-28 2019-01-25 한국과학기술원 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템

Also Published As

Publication number Publication date
US8195917B2 (en) 2012-06-05
JP2012532381A (ja) 2012-12-13
GB2485082A (en) 2012-05-02
IN2012DN00196A (ko) 2015-04-24
KR101563659B1 (ko) 2015-10-27
WO2011002900A1 (en) 2011-01-06
US20110004739A1 (en) 2011-01-06
CN102473091A (zh) 2012-05-23
CN102473091B (zh) 2014-09-17
GB201200020D0 (en) 2012-02-15
GB2485082B (en) 2015-08-26

Similar Documents

Publication Publication Date Title
KR101563659B1 (ko) 집성된 소페이지들을 사용한 페이지 사이즈 확장
US9152570B2 (en) System and method for supporting finer-grained copy-on-write page sizes
JP4772795B2 (ja) 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上
US9064330B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
US7334107B2 (en) Caching support for direct memory access address translation
EP2862089B1 (en) Compare and replace dat table entry
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US8688953B2 (en) Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
US7444493B2 (en) Address translation for input/output devices using hierarchical translation tables
CN101203838B (zh) 直接存储器存取转换的地址窗口支持
US7370160B2 (en) Virtualizing memory type
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US20080235477A1 (en) Coherent data mover
KR20080041707A (ko) Tlb 록 표시자
US10019377B2 (en) Managing cache coherence using information in a page table
KR20070047845A (ko) 직접 메모리 액세스 어드레스 변환을 위한 폴트 처리
US20100205344A1 (en) Unified cache structure that facilitates accessing translation table entries
JP2013065325A (ja) アドレス変換方法及び装置
JP6478843B2 (ja) 半導体装置及びキャッシュメモリ制御方法
CN114328295A (zh) 存储管理装置、处理器、相关装置和相关方法
US11074181B2 (en) Dirty data tracking in persistent memory systems
CN115794681B (zh) 适用于risc-v的多级可扩展tlb系统及其地址转换方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 5