KR20210144656A - 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법 - Google Patents

비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법 Download PDF

Info

Publication number
KR20210144656A
KR20210144656A KR1020217019110A KR20217019110A KR20210144656A KR 20210144656 A KR20210144656 A KR 20210144656A KR 1020217019110 A KR1020217019110 A KR 1020217019110A KR 20217019110 A KR20217019110 A KR 20217019110A KR 20210144656 A KR20210144656 A KR 20210144656A
Authority
KR
South Korea
Prior art keywords
physical
subpage
virtual
subpages
virtual page
Prior art date
Application number
KR1020217019110A
Other languages
English (en)
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 KR20210144656A publication Critical patent/KR20210144656A/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

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)

Abstract

장치는, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호와 연관된 매핑을 저장하기 위한 어드레스 변환 버퍼를 포함한다. 매핑은 가상 페이지 번호에 할당된 물리적 서브페이지 세트를 식별하며, 물리적 서브페이지 세트는 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하고 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제2 물리적 서브페이지를 제외한다. 메모리 관리 유닛은, 요청된 가상 서브페이지 번호 및 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여, 요청된 가상 페이지 번호와 연관된 매핑에 기초하여, 요청된 가상 서브페이지 번호에 할당되는 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하기 위한 어드레스 변환 버퍼와 결합된다.

Description

비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법
메모리 가상화는 소프트웨어 프로세스들이 비연접(non-contiguous) 물리적 메모리 영역들을 단일 연접 영역으로 볼 수 있도록 하는 최신 컴퓨팅 시스템들에 사용되는 기술이다. 컴퓨터에서 실행되는 소프트웨어 프로세스 또는 태스크는 가상 메모리 어드레스들을 사용하여 메모리에 액세스한다. 이들은 물리적 메모리 어드레스들에 매핑되고, 가상 및 물리적 메모리 어드레스들 간의 변환은 컴퓨터의 하드웨어 및 소프트웨어에 의해 처리된다. 컴퓨터의 운영 체제는 가상 메모리에 대한 물리적 메모리 할당을 처리하고, 가상 및 물리적 메모리 어드레스들 간의 변환은 메모리 관리 유닛(MMU)에 의해 자동으로 수행된다.
메모리 가상화를 통해 프로세스들이 자체 전용 가상 어드레스 공간들에서 실행되도록 하여, 프로그램 코드를 재배치하거나 관련 어드레싱을 통해 메모리에 액세스할 필요성을 없애고, 메모리 격리로 인한 보안도 향상시킨다. 추가로, 가상 메모리 어드레싱 방법을 사용하는 시스템들은 메모리 계층 관리의 부담을 커널에 위임하고 물리적 메모리의 단편화를 숨김으로써 애플리케이션 프로그래밍을 더 쉽게 만든다.
본 개시는 첨부 도면들의 그림들에서 제한하는 것이 아닌 예로서 예시된다.
도 1은 일 실시예에 따른, 물리적 메모리의 단편화된 영역을 예시한다.
도 2는 일 실시예에 따른, 컴퓨팅 시스템을 예시한다.
도 3은 일 실시예에 따른, 컴퓨팅 장치의 처리 장치 및 메인 메모리의 컴포넌트들을 예시한다.
도 4는 일 실시예에 따른, 가상 어드레스를 변환하기 위한 페이지 테이블 워크를 예시한다.
도 5a 및 5b는 일 실시예에 따른, 선택 및 랭크 동작들을 예시한다.
도 6a, 6b 및 6c는 일 실시예에 따른, 변환 색인 버퍼(translation lookaside buffer; TLB)를 이용한 가상 메모리 어드레스의 변환을 각각 예시한다.
도 7은 일 실시예에 따른, 연접 및 단편화된 프리 리스트를 예시한다.
도 8은 일 실시예에 따른, 선택 함수를 이용한 메모리의 할당을 예시한다.
도 9는 일 실시예에 따른, 메모리 할당 및 할당 해제 프로세스를 예시하는 흐름도이다.
도 10은 일 실시예에 따른, 메모리에 액세스하기 위한 프로세스를 예시하는 흐름도이다.
다음의 설명은 실시예들의 충분한 이해를 제공하기 위해, 특정 시스템들, 컴포넌트들, 방법들 등의 예들과 같은 수많은 특정 세부 사항들을 설명한다. 그러나, 적어도 일부 실시예들이 이러한 특정 세부 사항들 없이 실시될 수 있다는 것은 당업자에게 명백할 것이다. 다른 경우들에서, 잘 알려진 컴포넌트들 또는 방법들은 실시예들을 불필요하게 모호하게 하는 것을 피하기 위해 상세하게 설명되지 않거나 간단한 블록도 형식으로 제시된다. 따라서, 특정 세부 사항들은 단지 예시일 뿐이다. 특정 구현들은 이러한 예시적인 세부 사항들과 다를 수 있으며 여전히 실시예들의 범위 내에 있는 것으로 고려될 수 있다.
가상 메모리 어드레싱을 구현하는 최신 컴퓨팅 시스템들은 여러 다른 메모리 페이지 크기들(예를 들어, 4KB, 2MB 및 1GB)을 동시에 사용할 수 있다. 이러한 설계 결정의 결과로는 메모리가 대부분 구독되는 시스템이 메모리 단편화를 증가시키는 메모리 할당을 만드는 경향이 있다는 점이 있으며, 이로 인해 손실이 크고 빈번한 메모리의 단편화 제거가 수행되지 않는 한 더 큰 메모리 영역들의 할당을 어렵게 만든다. 사용 가능한 물리적 메모리를 많이 소모하는 하나 이상의 공동 실행 애플리케이션들로 인해 메모리가 단편화됨에 따라, 메모리 단편화로 인해 슈퍼페이지들(즉, 지원되는 페이지 크기들 중 큰 것)를 할당하기가 점점 더 어려워진다.
도 1은 일 실시예에 따른, 물리적 메모리 영역들(101 및 111)을 예시한다. 메모리 영역들(101 및 111) 각각은 8 페이지의 슈퍼페이지 크기를 지원하는 시스템에서 16개의 물리적 페이지들을 포함한다. 16 페이지의 물리적 메모리 영역(101)은 영역(101)의 서브페이지들이 할당되지 않았기 때문에 최대 2개의 8 페이지 슈퍼 페이지들(102 및 103)에 할당될 수 있다. 물리적 메모리 영역(111)에서, 할당되지 않은 공간은 이미 다른 데이터에 할당된 두 페이지들(115 및 116)로 단편화된다. 물리적 메모리 영역(111)은 8 페이지 슈퍼페이지를 할당하기 위해 서브페이지들(112-114)에서 충분한 총 용량을 갖는다; 그러나, 연접한 프리 서브페이지들(112-114)의 세트 중 어느 것도 슈퍼페이지에 할당될 만큼 충분히 크지 않다.
일 실시예에서, 가상 메모리 어드레싱을 구현하는 컴퓨팅 시스템은 가상 메모리 어드레스들을 그들의 해당 물리적 메모리 어드레스들로 변환하기 위한 엔트리들을 포함하는 페이지 테이블 및 페이지 테이블 엔트리들을 캐시하는 변환 색인 버퍼(TLB)를 포함한다. 페이지 테이블 및 TLB의 엔트리들은, 가상 어드레스에 지정될 수 있는 각 가상 페이지 번호에 대해, 백업 물리적 메모리 영역의 어느 서브페이지들이 가상 페이지 번호에 할당되는지를 나타내는 매핑을 추가로 인코딩한다. 일부 실시예들에서, 매핑은 가상 페이지 번호를 백업하기 위해 할당된 물리적 메모리 페이지의 각 서브페이지에 대해 어서트된 비트를 갖는 비트 벡터 및/또는 가상 서브페이지 번호들과 해당 물리적 서브페이지 번호들의 사전 계산된 쌍들로 저장될 수 있다. 가상 주소(가상 페이지 번호 및 가상 서브페이지 번호 포함)를 변환하기 위한 요청은 물리적 영역 번호와 가상 페이지 번호에 해당하는 매핑을 식별한 다음 매핑을 사용하여 가상 서브페이지 번호에 해당하는 물리적 영역에서 물리적 서브페이지 번호를 결정함으로써 진행된다.
페이지 테이블 및 TLB 엔트리들에 저장된 매핑은 더 작은 비연접한 물리적 서브페이지들에 의해 백업되는 대형 가상 슈퍼페이지에 대한 메커니즘을 제공함으로써 단편화 제거가 유지되거나 지연되도록 한다. 운영 체제는 단편화 제거 동작이 사용자 애플리케이션 성능에 영향을 줄 가능성이 적을 때, 컴퓨팅 시스템이 낮은 시스템 부하를 갖는 기간에 메모리 단편화 제거를 일괄 처리할 수 있다. 추가로, 가상 메모리의 대형 세그먼트들은 메모리 부하들이 많은 경우에도 거의 연접한 물리적 페이지들에 더 쉽게 할당될 수 있다. 추가로, 페이지 테이블 깊이는 주어진 메모리 양이 다수의 작은 페이지들이 아닌 단일의 가상 슈퍼페이지에 의해 처리될 수 있으므로 감소된다. 동일한 물리적 페이지 크기에 대해 가상 페이지 크기가 더 크기 때문에, 페이지 테이블 워크는 페이지 테이블의 더 적은 레벨들을 통과한다. 메모리 관리 유닛(MMU) 및 입력/출력 메모리 관리 유닛(IOMMU)에서 대부분의 어드레스 변환 캐시 누락은 페이지 테이블의 리프 노드 레벨에서 발생한다; 따라서, 이 레벨을 스킵하는 것은 특히 중첩된 페이지 테이블 워크가 있는 가상화된 환경에서 및 경합이 높은 그래픽 처리 장치(GPU)에서 성능에 큰 영향을 미칠 수 있다.
도 2는 상기 매핑 기술을 구현하는 컴퓨팅 시스템(200)의 일 실시예를 예시한다. 일반적으로, 컴퓨팅 시스템(200)은 이에 제한되는 것은 아니나, 랩탑 또는 데스크탑 컴퓨터, 모바일 폰, 서버 등을 포함하여, 다수의 상이한 유형의 장치들 중 어느 것으로도 구현될 수 있다. 컴퓨팅 시스템(200)은 버스 (201)를 통해 서로 통신할 수 있는 다수의 컴포넌트들(202-208)을 포함한다. 컴퓨팅 시스템(200)에서, 컴포넌트들(202-208) 각각은 버스(201)를 통해 직접적으로 또는 하나 이상의 다른 컴포넌트들(202-208)을 통해 다른 컴포넌트들(202-208) 중 어느 것과도 통신할 수 있다. 컴퓨팅 시스템(200)의 컴포넌트들(201-208)은 랩톱 또는 데스크탑 섀시, 또는 휴대폰 케이스와 같은 단일의 물리적 케이스 내에 포함된다. 대안적인 실시예들에서, 컴퓨팅 시스템(200케이싱)의 컴포넌트들 중 일부는 전체 컴퓨팅 시스템(200)이 단일의 물리적 케이스 내에 상주하지 않도록 주변 장치들로 구현될 수 있다.
컴퓨팅 시스템(200)은 또한 사용자로부터 정보를 수신하거나 사용자에게 정보를 제공하기 위한 사용자 인터페이스 장치들을 포함한다. 구체적으로, 컴퓨팅 시스템(200)은 키보드, 마우스, 터치 스크린 또는 사용자로부터 정보를 수신하기 위한 다른 장치와 같은 입력 장치(202)를 포함한다. 컴퓨팅 시스템(200)은 모니터, 발광 다이오드(LED) 디스플레이, 액정 디스플레이 또는 기타 출력 장치와 같은 디스플레이(205)를 통해 사용자에게 정보를 디스플레이한다.
컴퓨팅 시스템(200)은 유선 또는 무선 네트워크를 통해 데이터를 송수신하기 위한 네트워크 어댑터(207)를 추가로 포함할 수 있다. 컴퓨팅 시스템(200)은 또한 하나 이상의 주변 장치들(208)을 포함한다. 주변 장치들(208)은 대용량 저장 장치들, 위치 검출 장치들, 센서들, 입력 장치들, 또는 컴퓨팅 시스템(200)에 의해 사용될 수 있는 다른 유형의 장치들을 포함할 수 있다.
컴퓨팅 시스템(200)은 메인 메모리(206)에 저장된 인스트럭션들(209)을 수신하고 실행하는 처리 유닛(204)을 포함한다. 본원에서 참조되는 바와 같이, 처리 유닛(204)은 중앙 처리 장치(CPU) 파이프 라인들, 그래픽 처리 장치(GPU), 또는 가상 어드레스들을 사용하는 메모리 동작들을 지원하는 기타 컴퓨팅 엔진을 나타낸다. 메인 메모리(206)는 랜덤 액세스 메모리(RAM) 모듈들, 읽기 전용 메모리(ROM) 모듈들, 하드 디스크들 및 기타 비일시적 컴퓨터 판독 가능 매체와 같은 컴퓨팅 시스템(200)에 의해 사용되는 메모리 장치들을 포함하는 컴퓨팅 시스템(200)의 메모리 서브시스템의 일부일 수 있다.
메인 메모리(206) 외에도, 메모리 서브시스템은 또한 L2 또는 L3 캐시들 및/또는 레지스터들과 같은 캐시 메모리들을 포함할 수 있다. 이러한 캐시 메모리 및 레지스터들은 처리 유닛(204) 또는 컴퓨팅 시스템(200)의 기타 컴포넌트들에 존재할 수 있다.
도 3은 일 실시예에 따른 컴퓨팅 시스템(200)의 처리 유닛(204) 및 메인 메모리(206)를 예시한다. 처리 유닛(204)은 프로세서(301)(예를 들어, CPU, GPU 등), 메모리 관리 유닛(MMU)(302), 및 변환 색인 버퍼(TLB)(303)를 포함한다. 일 실시예에서, 처리 유닛(204)의 컴포넌트들(301, 302 및 303)은 동일한 장치 패키지 내에 포함된다. 프로그램 인스트럭션들(209)의 실행 동안, 프로세서(301)는 하나 이상의 메모리 컨트롤러들을 통해 메모리 요청들을 발행함으로써 메인 메모리(206)에 저장된 데이터에 액세스한다. 프로세서(301)는 MMU(302)에 의해 물리적 메모리 어드레스들로 변환되는 가상 어드레스들을 사용하여 메모리 위치들을 참조한다. MMU(302)는 가상 어드레스를 물리적 어드레스 변환들로 저장하는 페이지 테이블(311)의 엔트리들을 사용하여 변환들을 수행한다. 변환들은 TLB에 추가로 캐시된다. 일 실시예에서, MMU(302)는 또한 페이지 테이블(311) 및/또는 TLB(303)에 저장된 매핑들(예를 들어, 비트 벡터들, 사전 계산된 물리적 어드레스 세트들 등)을 디코딩하는 데 사용되는 선택(304) 및 랭크 회로부(305)를 포함한다.
페이지 테이블(311)은 메인 메모리(206)에 저장되고, 트리, 해시 테이블 또는 연관 맵 데이터 구조에 어드레스 변환 정보를 저장한다. 처리 유닛(204)은, 가상 어드레스에 액세스 시, 변환을 위해 TLB(303)를 체크하여 가상 대 물리적 어드레스 변환을 수행하고, TLB(303)에서 변환이 가능하지 않은 경우(즉, TLB 누락 발생), MMU(302)는 페이지 테이블 워크를 수행한다. 페이지 테이블 워크 동안, MMU(302)는 변환될 가상 어드레스에 기초하여 페이지 테이블(311)의 노드들을 통과한다. 페이지 테이블(311)에서, 내부 노드들은 페이지 테이블(311)의 차일드 노드를 각각 가리키는 엔트리들을 포함하는 노드들이다. 페이지 테이블(311)의 리프 노드들은 물리적 메모리에 있는 애플리케이션 데이터의 물리적 페이지들을 가리키는 엔트리들을 포함한다. 리프 노드를 구성하는 것은 페이지 크기(예를 들어, 각각 1GB, 2MB 및 4KB 페이지들이 있는 x86_64 롱 모드(long mode)의 L3, L2 또는 L1)로 변경된다.
메모리(206)는 또한 프리 리스트(312) 세트를 저장한다. 프리 리스트(312)는 컴퓨팅 시스템(200)의 운영 체제에 의해 유지되며, 새로운 데이터에 할당하기 위해 이용 가능한 메모리 페이지들의 추적을 유지하는 데 사용된다. 메모리가 할당 해제됨(즉, 해제됨)에 따라, 할당 해제된 페이지들이 자유 리스트(312) 중 하나에 추가된다. 메모리가 할당될 때, 새로운 데이터를 할당하기 위한 자유 메모리 페이지들이 자유 리스트(312)로부터 식별된다.
도 4는 일 실시예에 따른, 페이지 테이블(311)을 사용한 가상 메모리 어드레스의 물리적 메모리 어드레스로 변환을 예시한다. 가상 메모리 어드레스(400)는 사인 익스텐션(401), 가상 페이지 번호(407)(루트 오프셋(402), 차일드 오프셋(403) 및 리프 오프셋(404)을 포함), 가상 서브페이지(405) 및 서브페이지 오프셋(406)을 포함한다. 가상 메모리 어드레스(400)의 필드들(402-406)은 루트 노드(410), 차일드 노드(411) 및 리프 노드(412)를 포함하는 페이지 테이블(311)의 노드들을 통과하는 데 사용된다.
페이지 테이블(311)의 엔트리들은 더 작은 가상 슈퍼페이지를 백업하기 위해 대형 물리적 메모리 영역으로부터 부분적으로 또는 완전히 분리된(즉, 비연접한) 물리적 서브페이지 세트를 할당하는 것을 허용한다. 일 실시예에서, 물리적 메모리 영역은 백업하는 가상 슈퍼페이지 크기의 두 배인 반면 가상 및 물리적 서브페이지들은 동일한 크기이다. 따라서, 물리적 메모리 영역은 해당 가상 슈퍼페이지보다 두 배 많은 서브페이지들을 포함한다. 따라서, 물리적 영역에 있는 물리적 서브페이지들의 적어도 절반이 프리한 경우, 프리한 물리적 서브페이지들은 가상 슈퍼페이지를 백업하는 데 사용될 수 있다.
각 페이지 테이블 엔트리는 다수의 어드레스 필드들(예를 들어, 420-422)로서 페이지 테이블(311)에 기록된다. 일 실시예에서, 어드레스 필드들은 또한 운영 체제 또는 MMU(302)가 조작할 수 있는 추가 메타데이터 또는 할당되지 않은 비트들을 포함한다. 일 실시예에서, 각 페이지 테이블 엔트리는 더 큰 물리적 메모리 영역의 물리적 서브페이지들 중 어느 것이 가상 페이지의 콘텐트들을 저장하기 위해 할당되는지를 식별하는 매핑(예를 들어, 비트 벡터(423))을 포함한다. 도 4에 예시된 바와 같은 예시적인 어드레스 변환에서, 2MB의 가상 페이지 크기는 64KB의 물리적 서브페이지들에 의해 백업된다. 각 페이지 테이블 엔트리(예를 들어, 리프 노드(412))는 임베디드된 64 비트 비트 벡터(예를 들어, 비트 벡터(423))를 가지며, 이는 물리적 서브 페이지가 2 MB의 가상 페이지의 32개의 가상 서브페이지들 중 하나를 백업하는지 여부를 나타내는 각 물리적 서브페이지에 대한 1비트를 포함한다. 각 가상 서브 페이지는 2 MB의 가상 페이지가 차지하는 가상 어드레스 공간들의 1/32 또는 64KB 상당의 메모리 용량을 나타낸다. 즉, 비트 벡터(423)는 물리적 메모리 영역의 64개의 64KB의 물리적 서브페이지들 중 어느 것이 2 MB의 가상 페이지를 백업하는 데 사용되는지를 식별한다. 따라서, 비트 벡터는 백업 물리적 영역에서 64 Х 64 KB 또는 4 MB의 물리적 메모리를 추적한다. 백업 물리적 메모리 영역에 적어도 2 MB의 프리한 물리적 메모리(즉, 적어도 32개의 64 KB 상당의 서브페이지들)가 있는 경우, 2MB의 가상 페이지를 백업하기 위해 물리적 메모리 영역이 할당될 수 있다. 4 MB의 백업 물리적 영역의 각 물리적 서브페이지의 경우, 비트 벡터(423)의 해당 비트는 물리적 서브 페이지가 가상 페이지에 할당되면 어서트된다. 일 실시예에서, 비트는 하이로 어서트(예를 들어, '1'으로 설정)되고 로우로 디어서트(예를 들어, '0'으로 설정)된다. 다른 실시예들에서, 다른 값들 또는 전기적 상태들은 어서트 및 디어서트 상태들(예를 들어, 로우로 어서트 및 하이로 디어서트)을 나타내는 데 사용될 수 있다. 리프 엔트리의 어드레스 필드(422)는 4 MB의 물리적 메모리 영역의 0번째 바이트를 가리키도록 설정된다. 일 실시예에서, 어드레스 필드들(예를 들어, 420-422)은 이들이 리키는 메모리 블록의 바이트 단위의 크기의 기본 2 로그만큼 왼쪽으로 이동되는 물리적 페이지 번호들(예를 들어, 64 KB의 경우 16 또는 4 MB의 경우 22)로 저장된다. 예를 들어, 어드레스 필드(422)는 4 MB의 물리적 영역의 0번째 바이트를 계산하기 위해 4 Х 1024 Х 1024(즉, 22)의 기본 2 로그만큼 왼쪽으로 이동된 물리적 영역 식별자를 저장한다.
가상 메모리 어드레스(400)의 변환을 위해, 페이지 테이블 베이스 포인터(413)(예를 들어, x86 시스템의 제어 레지스터에 저장됨)는 페이지 테이블(311)의 루트 노드(410)를 가리킨 다음, 루트 오프셋(402)은 루트 노드(410)로부터 어드레스(420)를 선택하는 데 사용된다. 어드레스(420)는 어드레스(421)를 선택하는 데 차일드 오프셋(403)이 사용되는 차일드 노드(411)를 가리킨다. 어드레스(421)는 리프 노드(412)를 가리키며, 리프 오프셋(404)은 어드레스(422)를 선택하는 데 사용된다. 어드레스(422)는 또한 리프 노드(412)에 저장된 비트 벡터(423)와 추가적으로 연관된다. 리프 노드(412)의 어드레스 필드(422)는 4 MB의 물리적 메모리 영역의 0번째 바이트를 가리키는 반면, 비트 벡터(423)는 가상 페이지를 백업하기 위해 할당되는 표시된 물리적 메모리 영역에서 (아마도 비연접한) 물리적 서브페이지들을 식별한다.
가상 메모리 어드레스(400)에서, 가상 서브페이지 필드(405)는 가상 페이지에서 32개의 가상 서브페이지들 중 하나를 식별하기 위한 5 비트(0 내지 31의 값을 나타냄)를 포함한다. 지정된 가상 서브페이지(405)를 백업하는 물리적 서브 페이지를 결정하기 위해, 비트 벡터(423)에 대한 선택 동작이 선택 회로(304)에 의해 수행된다.
도 5a는 일 실시예에 따른 선택 함수의 동작을 예시한다. 비트 벡터(v)와 인덱스(i)가 주어지면, 선택 함수는 0부터 계산할 때 '1'로 설정된 i 번째 최하위 비트의 인덱스를 반환한다. 도 5a에 예시된 예에서, 선택 함수는 16 비트 벡터 v 및 입력 인덱스 '7'과 함께 제공된다. 선택 함수는 비트 벡터(v)의 최하위 끝에서 0부터 입력 인덱스 '7'까지 '1' 비트를 카운트(즉, 비트 벡터(v)에서 8 번째 '1'비트까지 카운팅)한다. 8번째 '1' 비트는 비트 벡터(v)에서'11'위치에 있다. 따라서, 선택(v, 7)는 '11'을 반환한다. 추가 예로서, 선택(0b10101010, 3)은 4번째 '1' 비트가 벡터의 비트 위치 7에서 발생하므로(파리미터 '3'은 제로 인덱스이므로) '7'을 반환한다. 동일한 입력 비트 벡터를 사용하여, 선택(0b10101010, 0)는 첫 번째 '1'비트가 인덱스 1에서 발생하므로 '1'을 반환할 것이다.
선택 회로(304)는 입력 비트 벡터(v)로 비트 벡터(423) 및 입력 인덱스로 5 비트의 가상 서브페이지 번호(405)를 사용하여 선택 함수를 수행하며, 4 MB의 물리적 메모리 영역(430) 내에서 물리적 서브페이지(440)의 인덱스를 출력한다. 계산된 물리적 서브페이지 인덱스는 물리적 서브페이지의 0번째 바이트의 전체 물리적 어드레스를 계산하기 위해 왼쪽으로 이동된다. 64 KB의 서브페이지들이 있는 주어진 예에서, 계산된 물리적 서브페이지 인덱스는 왼쪽으로 16만큼 이동된다. 16 비트의 서브페이지 오프셋(406)은 물리적 서브페이지(440)에 바이트 레벨 인덱스로 사용된다. 앞서의 어드레스 변환 예에서, 가상 및 물리적 페이지들, 물리적 메모리 영역들, 어드레스 필드들 등의 크기들은 예시적이며, 대안적인 실시예들에서는 다른 파라미터들이 가능하다.
도 5b는 일 실시예에 따른, 선택의 동반 함수인 랭크 함수의 동작을 예시한다. 일 실시예에서, 랭크 함수는 랭크 회로(305)에 의해 실행되며, 이는 비트 벡터(v) 및 입력 인덱스(i)가 주어지면, '1'로 설정되는 비트 벡터(v)에서 인덱스 i 이전의 비트 수를 반환한다. 도 5b에 예시된 예에서, 랭크 함수는 입력 비트 벡터(v)에 대해 '4'를 반환하고, 비트 벡터(v)에서 비트 위치 7 이전에 4 비트가 '1'로 설정되기 때문에 입력 인덱스 '7'을 반환한다. 따라서, 랭크 함수는, (예를 들어, 메모리를 할당하거나 할당 해제할 때) 비트 벡터(v)로 표시된 바와 같이, 할당되거나 프리한 물리적 서브페이지들이 몇 개인지를 결정하는 데 사용된다.
도 6a는 일 실시예에 따르면, 다수의 가상 메모리 페이지들의 각 가상 메모리 페이지에 대해 물리적 메모리 영역의 어느 비연접한 물리적 서브페이지들이 가상 메모리 페이지에 할당되는지를 식별하기 위해 매핑들이 저장되는 TLB(303)의 일 실시예를 예시한다. TLB(303)는 페이지 테이블(311)로부터의 엔트리들을 캐시하는 어드레스 변환에 사용되는 버퍼이여, 적어도 엔트리들의 서브셋에 대해, 페이지 테이블(311)의 연관 리프 노드(예를 들어, 노드(412))로부터의 매핑을 포함한다. 도 6a에 예시된 바와 같이, TLB(303)의 엔트리(620)는 가상 페이지 번호(621)를 매핑(즉, 비트 벡터(622)) 및 물리적 영역 번호(623)와 연관시킨다. 이전 예에 계속하여, 물리적 영역 번호(623)는 가상 페이지 번호(621)로 식별되는 2 MB의 가상 페이지를 백업하는 4 MB의 물리적 메모리 영역(연접한 물리적 서브페이지 세트를 포함)을 식별한다.
비트 벡터(622)는 백업 물리적 메모리 영역의 물리적 서브페이지들 중 어느 것이 가상 페이지에 할당되는지를 식별한다. 비트 벡터는 가상 페이지에 할당되는 물리적 서브페이지들 각각에 대한 어서트된 비트, 및 가상 페이지 번호에 할당되지 않은 백업 물리적 메모리 영역의 각 프리 서브페이지에 대한 디어서트된 비트를 포함한다. 일 실시예에서, 비트 벡터(622)의 비트들은 대응하는 물리적 서브페이지들이 물리적 메모리 영역에서 정렬되는 것과 동일한 순서로 배열된다.
MMU(302)가 물리적 메모리 어드레스(610)로 변환될 가상 메모리 어드레스(600)를 수신하면, MMU(302)는 가상 메모리 어드레스(600)의 가상 페이지 번호(601)를 사용하여 TLB(303)에서 조회를 수행한다. TLB 적중은 매칭되는 가상 페이지 번호(621)가 TLB(303)에서 발견될 때 발생한다. 가상 페이지 번호(621)는 TLB 엔트리(620)에서 비트 벡터(622) 및 물리적 영역 번호(623)와 관련된다. TLB 적중이 발생하면, 물리적 영역 번호(623)는 물리적 메모리 어드레스(610)의 최상위 비트(611)가 된다. TLB 엔트리(620) 및 가상 서브페이지 번호(602)로부터의 비트 벡터(622)는 TLB(303)에 연결된 선택 회로(630)에 대한 입력들로서의 역할을 한다.
선택 회로(630)는 비트 벡터(622)에서 i 번째 최하위 어서트된 비트의 인덱스를 계산함으로써 물리적 서브페이지 번호(612)를 결정하며, 여기서 i는 요청된 가상 서브페이지 번호(602)를 나타낸다. 선택 회로(630)는 물리적 어드레스(610)의 중간에 물리적 서브페이지 번호(612)를 출력한다. 계산된 물리적 서브페이지 번호(612) 및 물리적 영역 번호(611)(가상 페이지를 백업하는 모든 서브페이지들에 공통임)는 물리적 서브페이지의 물리적 어드레스를 형성한다. 물리적 메모리 어드레스(610)의 나머지 서브페이지 오프셋 비트들(613)은 가상 메모리 어드레스(600)의 서브페이지 오프셋 비트들(603)과 동일하다. 대안적인 실시예들에서, 이러한 필드들은 비연접 비트들에 걸쳐 순열되거나 분할될 수 있다. 또한, 가상 및 물리적 서브페이지들은 크기가 반드시 같을 필요는 없다.
도 6b는 각 가상 페이지 번호에 대한 매핑이 사전 계산된 변환(624) 세트로서 저장되는 TLB(303)의 일 실시예를 예시한다. 사전 계산된 변환들(624) 각각은 사전 계산된 가상 서브페이지 번호를 사전 계산된 물리적 서브페이지 번호와 연관시킨다. 일 실시예에서, 사전 계산된 물리적 서브페이지 번호들은 사전 계산된 변환들(624)의 어레이에 저장되며, 여기서 각 사전 계산된 물리적 서브페이지 번호는 연관된 가상 서브페이지 번호에 대응하는 어레이(624)의 인덱스에 저장된다.
이전 예와 동일한 파라미터들을 갖는 일 실시예에서, 2 MB의 슈퍼페이지에 대한 가상 서브 페이지 번호들의 물리적 서브페이지 번호들로의 전체 변환 세트가 32개의 6 비트 카운터들에 저장된다. 가상 메모리 어드레스(600)가 물리적 메모리 어드레스(610)로 변환될 때, 가상 페이지 번호(601)는 TLB 엔트리(640)를 조회하는데 사용된다. TLB 엔트리(640)가 위치(즉, TLB 히트가 발생)되면, TLB(303)는 가상 서브페이지 번호(602)를 사용하여 사전 계산된 물리적 서브페이지 번호들을 포함하는 사전 계산된 변환 필드(624)로 인덱싱한다. 도 6b에 예시된 바와 같이, 물리적 서브페이지 번호 '15'는 가상 서브페이지 번호(602)로 표시되는 어레이 인덱스에 저장된다; 따라서, '15'는 물리적 메모리 어드레스(610)에서 물리적 서브페이지 번호(612)가 된다. 물리적 메모리 어드레스(610)의 서브페이지 오프셋(613)은 가상 메모리 어드레스(600)의 서브페이지 오프셋(603)과 동일하다.
일 실시예에서, 선택 동작은 TLB에 TLB 엔트리(640)를 설치 시 또는 설치하기 전에 가상 페이지(621)의 모든 가상 서브페이지들에 대한 변환들을 사전 계산하기 위해 대량으로 한 번 수행된다. 따라서, 선택 동작은 각 변환에 대해 수행될 필요가 없으며, 선택 회로는 TLB(303) 자체에 포함되지 않는다.
도 6c는 각각의 엔트리에서, 가상 페이지에 대한 매핑을 비트 벡터(예를 들어, 622)로 저장하고, 사전 계산된 변환 필드(624)의 가상 페이지(예를 들어, 625 및 626)에서 가상 서브페이지 호들의 서브셋에 대한 사전 계산된 변환들을 추가로 저장하는 TLB(303)의 일 실시예를 예시한다. 일 실시예에서, TLB(303)는 추후 변환될 가능성이 있는 하나 이상의 가상 서브페이지들을 식별하도록 추측하며, 이들 가상 서브페이지들에 대한 변환들을 그들 각각의 물리적 서브페이지들로 사전 계산한다.
일 실시예에서, 가장 최근에 액세스된 가상 서브페이지 번호가 추측된 가상 서브페이지 번호(625)로서 선택되고 사전 계산된 추측된 물리적 서브페이지 번호(626)와 함께 저장된다. 일 실시예에서, 최근에 관찰된 가상 서브페이지 번호들 및 해당 물리적 서브페이지들의 작은 이력이 저장된다. 가상 서브페이지 변환들의 이력은 예를 들어 이력으로부터 액세스 스트라이드 정보를 추측하여 다음에 변환될 가능성이 있는 가상 서브페이지들을 예측하는 데 사용된다. 그런 다음, 다음의 하나 이상의 예상 가상 서브페이지 번호들 및 이에 수반되는 물리적 서브페이지 번호들이 사전 계산되며 TLB(303)에 저장된다.
변환될 가상 메모리 어드레스(600)가 변환이 사전 계산된 가상 서브페이지들(예를 들어, 추측된 가상 서브페이지 번호(625)) 중 어느 것과도 일치하지 않는 가상 서브 페이지 번호(602)를 지정하면, 앞서 설명된 바와 같이, 비트 벡터(622) 및 요청된 가상 서브페이지 번호(602)에 기초하여 요청된 가상 서브페이지 번호(602)에 대한 정확한 물리적 서브페이지 번호(612)를 계산하도록 선택 회로(631)에 의해 선택 동작이 수행된다. 선택 회로(631)는 바이패스 회로부를 포함하여서 가상 서브페이지 번호(602)가 추측된 가상 서브페이지 번호(625)와 일치하는 경우, 선택 회로(631)가 선택 동작을 바이패스하고 대신 관련 추측된 물리적 서브페이지 번호(626)를 물리적 서브페이지 번호(612)로 사용하도록 한다. 도 6c는 단일 TLB 엔트리(650)에 단일의 추측된 가상 서브페이지 번호(625) 및 그에 대응하는 사전 계산된 물리적 서브페이지 번호(626)를 저장하는 TLB(303)를 예시한다. 그러나, 대안적인 실시예들은 TLB 엔트리 당 이러한 추측된 변환 쌍들을 다수 포함할 수 있다. 대안적인 실시예들에서, 추측된 가상 서브페이지 번호(625) 및 추측된 물리적 서브페이지 번호(626)는 TLB(303)와 별도의 데이터 구조에 저장된다.
도 7은 일 실시예에 따르면, 메모리(206)에서 어느 물리적 메모리 페이지들이 새로운 데이터에 대한 할당에 이용 가능한지를 추적하기 위한 프리 리스트(312) 세트를 예시한다. 프리 리스트(312)는 두 세트의 프리 리스트들인; 단편화 해제된(즉, 연접한) 메모리 세그먼트들에 대한 제1 프리 리스트 세트(701) 및 단편화된 메모리 세그먼트들에 대한 제2 프리 리스트 세트(702)를 포함한다. 일 실시예에서, 프리 리스트(312)는 처리 유닛(204)에서 실행되는 운영 체제 루틴들에 의해 유지된다. 운영 체제는 세트들(701 및 702) 각각에서 다수의 프리 리스트들을 유지한다. 리스트들 각각은 서로 다른 메모리 크기(예를 들어, p, 2p, 4p 등)와 연관되며, 여기서 p는 메모리 페이지의 크기를 나타낸다. 세트(701)의 p, 2p 및 4p 프리 리스트들은 2의 거듭 제곱에 의해 달라지는 크기들과 연관된다. 즉, 세트(701)의 각 후속 프리 리스트는 이전 프리 리스트보다 2배 큰 메모리 크기와 연관된다. 메모리를 할당하기 위한 요청이 서비스될 때, 요청된 메모리 양은 물리적 페이지의 가장 가까운 크기에 2의 제곱을 곱한 값으로 반올림된다. 결정된 크기에 해당하는 프리 리스트가 식별되며, 프리 리스트로부터 프리 메모리 영역이 선택되어 할당을 완료한다.
운영 체제는 프리 리스트(701) 중 하나에 할당에 이용 가능한 연접한 프리 메모리의 영역들(즉, 임의의 데이터에 대해 아직 할당되지 않음)을 배치한다. 프리 리스트(701) 각각은 프리 리스트의 하나 이상의 연접한 메모리 영역들 각각에 대한 노드를 포함하며, 프리 리스트의 연접한 메모리 영역들 각각은 프리 리스트와 연관된 크기이다. 예를 들어, p 프리 리스트의 노드들은 크기 p의 연접한 프리 메모리 영역들을 포함하며, 2p 프리 리스트의 노드들은 크기 2p의 연접한 프리 메모리 영역들을 포함한다. 할당이 수행되면, 노드는 할당될 데이터를 저장하기에 충분한 크기의 프리 리스트로부터 제거되며, 제거된 노드의 프리 메모리 영역이 새 데이터에 할당된다. 일 실시예에서, 버디 할당 시스템은 하나의 프리 리스트에서 인접한 프리 페이지 세트들을 결합하고 이들을 다음 더 큰 용량의 프리 리스트로 이동(예를 들어, 두 개의 인접 p 크기 세그먼트들이 결합되며 p 프리 리스트로부터 2p 프리 리스트로 이동)하는 데 사용된다.
일 실시예에서, 운영 체제는 또한 이미 부분적으로 할당된(즉, 단편화된) 메모리 영역들을 백업하기 위한 제2 프리 리스트(702) 세트를 유지한다. 예를 들어, 대부분 프리한 64 MB 영역의 물리적 메모리의 영역은, 64MB 영역에 있는 물리적 메모리의 각 2 MB의 페이지가 이미 할당된 적어도 하나의 64 KB의 서브페이지를 갖는다는 점을 제외하고는, 새 데이터에 할당하기 위한 임의의 연접한 2 MB의 페이지를 포함하지 않는다. 그러나, 이 64 MB의 물리적 영역은 각각의 4 MB의 백업 물리적 영역이 적어도 절반이 프리한 경우 비연접한 물리적 메모리를 사용하여 32 MB의 연접한 가상 메모리(또는 여러 개의 작은 할당 요청들)를 할당하는 데 사용될 수 있다. 제2 프리 리스트(702) 세트는 예시적인 단편화된 64 MB의 영역과 같은 단편화된 메모리 영역들에서 이용 가능한 메모리를 추적한다. 프리 리스트(702) 각각은 메모리 크기(예를 들어, p, 2p)와 관련되며, 관련 메모리 크기의 2배를 갖고 적어도 관련 프리 공간 양을 갖는 부분적으로 프리한 물리적 메모리 영역을 각각 지정하는 하나 이상의 노드들을 포함한다. 예를 들어, p 프리 리스트의 각 노드는 총 크기가 2p이고 크기가 적어도 p인 총 프리 공간을 갖는 부분적으로 프리한 메모리 영역을 지정하며, 2p 프리 목록의 각 노드는 총 크기가 4p이고 크기가 적어도 2p인 총 프리 공간을 갖는 부분적으로 프리한 메모리 영역을 지정한다. 각 부분적으로 프리한 물리적 메모리 영역 부분적으로 사용 가능한 물리적 메모리 영역에 저장된 비트 벡터(예를 들어, 비트 벡터(710))는 부분적으로 프리한 물리적 메모리 영역에서 프리한 물리적 서브페이지들을 식별한다.
일 예로서, 비트 벡터(710)는 부분적으로 프리한 물리적 메모리 영역(711)에서 (어서트된 비트들에 대응하는) 프리한 물리적 서브페이지들의 서브셋 및 (디어서트된 비트들에 대응하는) 이미 할당된 물리적 서브페이지들의 서브셋을 식별한다. 비트 벡터(710)에서, 비트들은 대응하는 물리적 서브페이지들이 물리적 메모리 영역(711)에서 이들의 해당 물리적 서브페이지들과 동일한 순서로 배열된다. 도 7에 예시된 바와 같이, 비트 벡터(710)는 연관된 물리적 메모리 영역(711)에 저장된다. 대안적인 실시예에서, 부분적으로 프리한 다스의 물리적 메모리 영역들에 대한 프리 서브페이지들을 추적하는 별도의 글로벌 비트 벡터가 유지된다.
도 8은 일 실시예에 따르면, 가상 슈퍼페이지를 백업하기 위한 물리적 메모리 영역에서의 비연접한 물리적 서브페이지들의 할당을 예시한다. 물리적 메모리 영역(801)은 16개의 물리적 서브페이지들(0-15)을 포함한다. 물론, 서브페이지들(3, 5 및 13)은 이미 할당되어 있다. 따라서, 물리적 메모리 영역(801)(또는 글로벌 프리 페이지 비트 벡터의 세그먼트)과 연관된 프리 페이지 비트 벡터(802)는 이미 할당된 서브페이지들에 대응하는 위치들(3, 5 및 13)에 비어서트된 비트들을 포함한다. 비트 벡터(802)의 나머지 비트 위치들이 어서트되어, 해당 서브페이지들이 프리하다는 것을 나타낸다.
8개의 서브페이지들을 갖는 가상 슈퍼페이지를 할당하기 위해, 물리적 메모리 영역 (801)으로부터 할당할 8개의 프리 서브페이지들의 서브셋을 식별하도록 선택 동작이 수행된다. 선택 동작은 입력들로서 비트 벡터(802)와 인덱스 7(8개의 어서트된 비트를 카운팅하기 위해)을 취하고 인덱스 9를 출력한다. 물리적 메모리 영역(801)에서, 인덱스 9까지의 물리적 서브페이지들(즉, 세그먼트들(854, 855 및 856))이 요청된 가상 슈퍼페이지를 백업하기 위해 할당된다. 할당되지 않은 나머지 서브페이지들(851, 852 및 853)은 프리 리스트로 이동된다. 프리 세그먼트들(851 및 853)은 (2 페이지 연접한 프리 세그먼트들의 경우) 2p 프리 리스트로 이동되고 프리 세그먼트(852)는 (1 페이지 프리 세그먼트들의 경우) p 프리 리스트로 이동된다.
프리 페이지 비트 벡터(803)(또는 글로벌 프리 페이지 비트 벡터의 세그먼트)는 새로 할당된 서브페이지들에 대응하는 비트들(0-2, 4 및 6-9)을 디어서트하도록 업데이트된다. 비트 벡터(804)는 새로 할당된 물리적 서브페이지들에 대응하는 비트들을 어서트함으로써 계산된다. 비트 벡터(804)는 새로 할당된 가상 슈퍼페이지에 대한 페이지 테이블 엔트리에 포함되며, 페이지 테이블 엔트리는 페이지 테이블(311)에 추가된다. 일 실시예에서, 비트 벡터(804)를 포함하는 가상 슈퍼페이지에 대한 엔트리도 TLB(311)에 추가된다.
도 9는 일 실시예에 따른, 컴퓨팅 시스템(200)에서 메모리를 할당 및 할당 해제하는 프로세스(900)를 예시한다. 프로세스(900)는 메인 메모리(206)의 물리적 메모리를 하나 이상의 가상 페이지들에 할당하기 위해 컴퓨팅 시스템(200)(예를 들어, 프로세서(301) 및 MMU(302))의 컴포넌트들에 의해 수행된다.
블록(901)에서, 메모리 할당이 요청되지 않으면 할당이 수행되지 않으며, 시스템은 블록(1000)에 제공된 바와 같이 이미 할당된 메모리를 계속 사용하고 그에 액세스한다. 블록(901)에서, 메모리 할당이 요청되는 경우, 운영 체제(프로세서(301)에 의해 수행됨)는 블록들(903-911)에 따라 메인 메모리(206)로부터 물리적 메모리를 할당한다. 블록(903)에서, 운영 체제는 할당될 메모리의 크기에 기초하여 프리 리스트(312) 중 하나를 선택한다. 구체적으로, 요청된 할당 크기보다 크거나 같은 물리적 메모리 영역들을 포함하는 프리 리스트가 선택된다. 일 실시예에서, 할당될 메모리의 크기는 페이지의 가장 가까운 크기에 2의 거듭 제곱을 곱한 값으로 반올림되며, 결과적인 크기와 연관되는 프리 리스트가 선택된다. 일 실시예에서, 요청된 할당 크기 p에 대해, 선택된 프리 리스트는 2p가 다음으로 큰 프리 리스트와 연관된 크기이므로 각각 적어도 p개의 프리한 메모리 용량 및 2p 미만의 프리한 메모리 용량을 포함하는 노드들을 갖는다.
블록(905)에서, 운영 체제는 선택된 프리 리스트의 노드 세트로부터 노드들 중 하나를 선택한다. 선택된 프리 리스트가 연접한 프리 리스트(701) 중 하나이면, 선택된 노드의 임의의 물리적 메모리 서브페이지들이 할당에 사용될 수 있다. 영역으로부터 임의의 할당되지 않은 페이지들은 선택적으로 그들 각각의 크기들에 해당하는 프리 리스트들로 이동된다.
일 실시예에서, 할당은 단편화된 프리 리스트(702) 중 하나로부터 선택된 단편화된 메모리를 사용하여 채워진다. 노드의 부분적으로 프리한 물리적 영역들 각각(예를 들어, 영역(711))의 프리 서브페이지들은 블록(907)에 제공된 바와 같이, 노드의 하나 이상의 비트 벡터들(예를 들어, 비트 벡터(710))에 기초하여 가상 메모리 페이지에 할당하기 위해 식별되고 선택된다. 특히, 운영 체제는 노드에서 부분적으로 프리한 물리적 메모리 영역들과 관련된 하나 이상의 비트 벡터들을 체크하여 이러한 영역들의 프리한 물리적 서브페이지들을 식별한다. 사용 가능한 프리한 물리적 서브페이지들로부터, 운영 체제는 요청된 가상 페이지를 백업하기 위해 할당할 충분한 수의 프리 서브페이지들을 선택한다.
일 실시예에서, 프로세서(301)는 비트 벡터에서 동작하고 가상 페이지의 가상 서브페이지들의 수와 동일한 세트 비트의 수를 반환하는 인스트럭션을 사용하여 이러한 선택을 용이하게 한다. 이 인스트럭션에는 두 개의 레지스터 피연산자들인, 비트 벡터를 포함하는 제1 레지스터, 및 계산 결과를 수신하기 위한 제2 레지스터가 있다. 일 실시예에서, 선택 함수는 요청된 가상 페이지를 백업하기 위해 할당에 사용 가능한 프리 서브페이지들을 선택하는 데 사용된다. 예를 들어, 가상 페이지 당 32개의 가상 서브페이지들, 물리적 영역(예를 들어, 711) 당 64개의 물리적 서브페이지들 및 각 프리한 물리적 서브페이지에 대한 비트 벡터(예를 710)의 1 비트를 가정하면, 비트 벡터는 물리적 영역(예를 들어, 711) 당 길이가 64 비트이다. 각각 길이가 64 비트인 연관된 비트 벡터(v)(예를 들어, 710)를 갖는 각 물리적 메모리 영역(예를 들어, 711)의 경우, 선택 함수는 입력들로서 비트 벡터(v) 및 인덱스 31를 사용하여 호출된다. 선택 함수는 '1'로 설정된 31번째 비트의 비트 위치 인덱스를 반환한다; 이 인덱스는 유효한 경우 0 내지 63 사이이고, 유효하지 않은 경우 64이다. 반환된 인덱스는 요청된 가상 페이지의 가상 서브페이지들을 백업하기 위해 부분적으로 프리한 물리적 메모리 영역으로부터 할당될 프리한 물리적 서브페이지 세트의 가장 큰 물리적 서브페이지 번호를 나타낸다.
블록(909)에서, 운영 체제는 페이지 테이블(311)의 리프 노드(412)에 페이지 테이블 엔트리를 추가한다. 리프 노드(412), 차일드 노드(411) 및 루트 노드(410)는 이들이 아직 존재하지 않는 경우 생성되며, 엔트리들은 다음 레벨의 적절한 노드를 가리키는 이러한 노들 레벨들 각각에 설치된다. 리프 노드(412)의 새로운 페이지 테이블 엔트리는 다른 메타데이터 및 이용 가능한 비트들(도시되지 않음)이 있는 어드레스(422) 및 비트 벡터(423)를 포함한다. 비트 벡터(423)에서 어서트된 비트들은 비트에 대응하는 물리적 서브페이지가 페이지 테이블 엔트리의 가상 페이지에서 가상 서브페이지들 중 하나를 백업한다는 것을 나타낸다. 일 실시예에서, 비트 벡터(423)는 프리 리스트로부터 비트 벡터(710)를 복사하고 가장 큰 물리적 서브페이지 번호(즉, 앞서 설명된 바와 같이 선택 함수에 의해 계산된 인덱스) 위의 비트를 마스킹함으로써 생성된다. 결과적인 비트 벡터는 가상 페이지 번호에 할당된 각 물리적 서브페이지에 대한 어서트된 비트, 및 가상 페이지 번호에 할당되지 않은 각 물리적 서브페이지에 대한 디어서트된 비트를 포함한다. 일부 실시예들에서, 가상 페이지 번호가 새로 할당되었으므로, 곧 액세스될 가능성이 있다; 따라서, 비트 벡터(622)를 포함하는 새로운 페이지 테이블 엔트리도 TLB(303)에 캐시된다. 대안적인 실시예에서, 비트 벡터 대신에(또는 그 외에), TLB 엔트리에 저장된 매핑은 도 6b 및 6c를 참조하여 앞서 설명된 바와 같이, 가상 페이지의 모든(또는 일부) 가상 서브페이지 번호들과 연관된 사전 계산된 물리적 서브페이지 번호들을 포함한다.
블록(911)에서, 할당되지 않은 상태로 남아있는 물리적 메모리 영역의 서브페이지들은 메모리 할당 시스템(예를 들어, 버디 또는 슬랩 할당자)을 사용하여 프리 리스트에 배치된다. 단편화된 프리 리스트(702)가 지원되는 경우, 단편화된 메모리는 단편화된 프리 리스트(702) 중 하나에 배치된다. 예를 들어, 3 MB의 메모리가 할당된 4 MB의 백업 영역은 2 MB의 가상 페이지를 백업할 수 없다; 그러나, 256 KB가 지원되는 페이지 크기라고 가정하면, 나머지 1 MB의 메모리는 여러 256 KB의 가상 페이지들을 백업할 수 있다. 나머지 프리 페이지들이 프리 리스트에 추가된 후, 프로세스(900)는 블록(1000)에서 계속된다. 블록(1000)에서, 요청된 할당이 완료되며, 할당된 메모리가 애플리케이션 데이터를 저장하는 데 사용된다. 블록(921)에서, 메모리 할당 해제가 요청되지 않으면, 프로세스(900)는 블록(901)으로 돌아간다. 따라서, 블록들(901, 1000 및 921)은 메모리가 할당되거나 할당 해제되지 않는 동안 반복된다.
블록(921)에서, 메모리 할당 해제가 요청되면, 운영 체제는 블록들(923-927)의 동작들을 수행하여 이전에 할당된 물리적 서브페이지들 중 하나 이상을 프리하게 한다. 블록(923)에서, 운영 체제는 해제되는 물리적 서브페이지들을 포함하는 물리적 메모리 영역에 대한 단편화된 프리 리스트(702) 중 하나에 기록될 새로운 비트 벡터를 계산한다. 새 비트 벡터의 각 비트는 물리적 메모리 영역의 해당 서브페이지가 프리하거나 프리하게 되는 경우 어서트(예를 들어, '1')되거나, 해당 서브페이지가 할당된 상태로 남아 있을 경우 디어서트(예를 들어, '0')된다. 일 실시예에서, 프리하게 될 물리적 서브페이지들을 포함하는 각 물리적 메모리 영역에 대해 비트 벡터가 계산된다.
블록(925)에서, 프리하게 된 물리적 메모리 서브페이지들을 포함하는 물리적 메모리 영역들(예를 들어, 영역(711))은 각각의 비트 벡터들(예를 들어, 비트 벡터(710))와 함께 적절한 단편화된 프리 리스트(702)의 노드들에 추가된다. 각 물리적 메모리 영역에 대해, 연관 비트 벡터에 대한 모집단 카운트 동작(이는 1로 설정된 비트 수를 카운팅)은 물리적 메모리 영역에서 프리한 물리적 서브페이지들의 수를 결정하는 데 사용된다. 운영 체제는 물리적 메모리 영역들이 해당 프리 리스트와 연관된 요청의 세분화를 할당하기에 충분한 프리한 용량을 집합적으로 가지고 있는 경우 프리 리스트에 여러 개의 연접한 물리적 메모리 영역들을 배치한다. 예를 들어, 각각 크기 p(즉, 2p의 총 크기)를 갖는 2개의 연접한 물리적 메모리 영역들은 이들이 집합적으로 적어도 p개의 프리한 메모리 용량을 갖는 경우 크기 p와 연관된 단편화된 프리 리스트에 함께 배치된다.
일부 실시예들에서, 부분적으로 할당된 물리적 메모리 영역들 각각에 대한 비트 벡터들은 프리 리스트(702)에서 각각의 물리적 메모리 영역들과 별도로 저장된다. 대안 실시예들에서, 비트 벡터들은 물리적 메모리의 더 큰 영역들(예를 들어, 원래 비트 벡터와 연관된 다수의 연접한 물리적 메모리 영역들로 구성됨)과 연관된 하나 이상의 더 큰 비트 벡터들로 병합된다.
버디 할당이 사용되는 경우, 운영 체제는 프리하게 된 메모리(예를 들어, 절반만 할당되므로 32 MB의 16 x 4 MB 영역들)가 동일한 크기(예를 들어, 16 x 4 MB)의 인접한 물리적 메모리 영역들의 세트인, "버디"와 병합될 수 있는지 여부를 체크한다. 두 세트 모두 적어도 물리적 서브페이지들의 절반이 프리한 경우, 이들은 단일 요소로 병합되며 다음으로 높은 2의 거듭 제곱(예를 들어, 32 x 4 MB, 여기서 각 엔트리는 64 MB의 물리적 메모리를 할당함)과 관련된 프리 리스트에 배치된다. 이 프로세스는 최대 할당 세분화 크기까지 반복적으로 반복된다. 대안으로, 프리하게 된 물리적 서브페이지들은 연접한 프리 리스트(701) 중 하나 이상에 배치될 수 있다. 이 경우, 연접한 프리 페이지 세트는 각각이 페이지 크기의 2의 거듭 제곱인 크기를 갖는 하나 이상의 세그먼트들로 나뉜다. 결과적인 세그먼트들 각각은 해당 크기와 연관된 프리 리스트에 추가된다(예를 들어, 크기가 2p인 세그먼트가 2p 프리 리스트에 배치됨).
블록(927)에서, 프리하게 되는 서브페이지들에 의해 백업되는 가상 페이지들에 대한 페이지 테이블 엔트리들은 할당 해제를 반영하도록 업데이트되거나 제거된다. 하나 이상의 물리적 서브페이지들이 가상 페이지에 할당된 상태로 유지되는 경우, 페이지 테이블 엔트리의 비트 벡터가 업데이트되어 프리하게 된 서브페이지들에 해당하는 비트들을 디어서트하는 반면 할당된 나머지 서브페이지들에 해당하는 비트들은 어서트된 채 둔다. 더 이상 어떠한 물리적 메모리에 의해서도 백업되지 않는 가상 페이지들에 대한 페이지 테이블 엔트리들은 페이지 테이블로부터 제거되며 어떠한 해당 TLB 엔트리들도 무효화된다.
도 10은 일 실시예에 따른, 할당된 메모리에 액세스하기 위한 프로세스(1000)를 예시한다. 프로세스(1000)는 프로세스(990)의 블록(1000)에 해당한다. 블록(901)로부터, 메모리 액세스 요청(예를 들어, 부하 또는 저장 인스트럭션으로부터)이 수신되지 않는 경우, 프로세스(1000)는 프로세스(900)의 블록(921)으로 계속된다. 그렇지 않고, 메모리 액세스 요청이 수신되는 경우, 프로세스(1000)는 블록들(1003-1017)에 따라 메모리 요청을 서비스한다.
수신된 메모리 요청은 데이터가 기입되거나 판독될 물리적 메모리 어드레스(610)로 변환될 가상 메모리 어드레스(600)를 지정한다. 처리 유닛(204)은 가상 메모리 어드레스에 대한 엔트리가 이미 TLB(303)에 캐시된 경우 TLB(303)를 사용하여 메모리 변환을 수행한다. 따라서, 처리 유닛(204)의 메모리 액세스 로직은, 블록(1003)에서 제공된 바와 같이, 요청된 가상 어드레스(600)에서 요청된 가상 페이지 번호(601)에 기초하여 TLB(303)에서 조회를 수행한다. 블록(1005)에서, 가상 페이지 번호(601)가 TLB(303)에 엔트리를 갖는 경우, 블록(1003)에서의 TLB 조회는 적중을 초래하며, 프로세스(1000)는 블록(1007)에서 계속된다. 블록(1007)에서, 프로세서(204)는 매칭 TLB 엔트리(650)의 사전 계산된 변환 필드(624)에서 가상 서브페이지 번호(602)에 대한 조회를 수행한다. 일 실시예에서, 프로세서(204)는 가상 서브페이지 번호(602)를 사전 계산된 변환 필드(624)에서 하나 이상의 추측된 가상 서브페이지 번호들(예를 들어, 625) 각각과 비교한다.
블록(1009)에서, 가상 서브 페이지 번호(602)가 사전 계산된 변환 필드(624)에서 발견되면, 사전 계산된 물리적 서브페이지 번호(예를 들어, 626)는 사전 계산된 변환 필드(624)로부터 판독되며 출력 물리적 메모리 어드레스(610)에서 물리적 서브페이지 번호(612)로서 사용된다. 선택 회로(631)가 존재하는 경우, 선택 회로(631)는 바이패스되며 선택 동작은 수행되지 않는다. TLB 엔트리가 (도 6a에 도시된 바와 같이) 어떠한 사전 계산된 변환 필드도 포함하지 않거나 가상 서브페이지 번호(602)에 대해 사전 계산된 변환이 없는 경우, 프로세스(1000)는 블록(1009)에서 블록(1013)으로 계속된다.
블록(1013)에서, 선택 동작은 TLB 엔트리(650)의 비트 벡터(622)에 기초하여 물리적 서브페이지 번호(612)를 계산하기 위해 선택 회로(631)에 의해 수행된다. 선택 회로(631)는 비트 벡터(622) 및 가상 서브페이지 번호(602)를 입력들로서 취하고, 비트 벡터(622)에 있는 i 번째 최하위 어서트된 비트의 인덱스를 계산함으로써 물리적 서브페이지 번호(612)를 결정하며, 여기서 i는 요청된 가상 서브페이지 번호(602)를 나타낸다. 선택 회로(631)로부터 출력된 결과적인 인덱스는 요청된 가상 서브페이지 번호(602)에 할당되는 물리적 서브페이지를 식별하는 물리적 서브페이지 번호(612)이다.
물리적 서브페이지 번호(612)가 블록(1011 또는 1013)에 따라 계산되면, 프로세스(1000)는 블록(1015)에서 계속된다. 블록(1015)에서, TLB(303)는 TLB 엔트리(650)로부터의 물리적 영역 번호(611), 사전 계산되거나 계산된 물리적 서브페이지 번호(612) 및 요청된 가상 메모리 어드레스(600)로부터 서브페이지 오프셋(603)으로부터 복사된 서브페이지 오프셋(613)을 포함하는, 물리적 메모리 어드레스(610)를 출력한다.
블록(1005)에서, TLB(303)가 요청된 가상 페이지 번호(407)에 대한 엔트리를 포함하지 않도록 가상 메모리 어드레스(400)가 요청되면, TLB 누락이 발생하며, 프로세스(1000)는 블록(1021)에서 계속된다. 블록(1021)에서, 리프 노드(412)에 도달할 때까지 페이지 테이블(311)의 내부 노드들(예를 들어, 411, 412)을 통과하기 위해 가상 메모리 어드레스(400)의 가상 페이지 번호(407)를 사용하여 페이지 테이블 워크가 수행된다. 리프 노드(412)의 매핑(예를 들어, 비트 벡터(423))은, 블록(1023)에서 제공된 바와 같이, 물리적 서브페이지 번호를 계산하는 데 사용된다. 일 실시예에서, 선택 함수는, TLB(303)의 블록(1013)과 유사하게, 페이지 테이블 엔트리의 비트 벡터(423)를 사용하여 수행된다.
블록(1025)에서, 요청된 가상 페이지 번호를 페이지 테이블 워크로부터 결정된 물리적 페이지 번호(어드레스들(420, 421 및 422)을 결합)와 연관시키는 TLB 엔트리가 생성된다. 비트 벡터(423)는 페이지 테이블 엔트리로부터 새 TLB 엔트리로 복사된다. 블록(1017)에서, 가상 메모리 어드레스(600)가 (TLB(303) 또는 페이지 테이블(311)에 의해) 물리적 메모리 어드레스(610)로 변환되면, 메모리 요청은 원래의 메모리 요청에 따라 반환된 물리적 메모리 어드레스(610)에서 메모리(206)에 액세스한다. 상기 프로세스들(900 및 1000)의 동작에 의해, 컴퓨팅 시스템(200)은 따라서 대형 가상 슈퍼페이지들을 백업하기 위해 단편화된 비연접 메모리의 할당을 지원한다.
장치는, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호와 관련된 매핑을 저장하기 위한 어드레스 변환 버퍼를 포함한다. 매핑은 가상 페이지 번호에 할당된 물리적 서브페이지 세트를 식별하고, 물리적 서브페이지 세트는 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하고 복수의 물리적 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제2 물리적 서브페이지를 제외한다. 메모리 관리 유닛은 요청된 가상 서브페이지 번호 및 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여, 요청된 가상 페이지 번호와 연관된 매핑에 기초하여 요청된 가상 서브 페이지 번호에 대해 할당되는 복수의 연접한 서브페이지들 중 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하기 위해 어드레스 변환 버퍼와 결합된다.
장치에서, 복수의 가상 페이지 번호들 중 각 가상 페이지 번호에 대해, 가상 페이지 번호와 연관된 매핑은 가상 페이지 번호에 대해 할당되는 복수의 연접한 물리적 서브페이지들의 각 물리적 서브페이지에 대한 어서트된 비트 및 가상 페이지 번호에 할당되지 않은 물리적 메모리 영역의 각 물리적 서브페이지에 대한 디어서트된 비트를 포함하는 비트 벡터 포함한다.
장치는 또한, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 비트 벡터에서 i번째 최하위 어서트된 비트의 인덱스를 계산함으로써 물리적 서브페이지 번호를 결정하기 위해 어드레스 변환 버퍼와 결합된 선택 회로를 포함하며, 여기서 i는 요청된 가상 서브페이지 번호를 나타낸다.
장치에서, 어드레스 변환 버퍼는, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 추측된 가상 서브페이지 번호를 추측된 가상 페이지 번호에 할당된 물리적 서브페이지를 식별하는 사전 계산된 물리적 서브페이지 번호와 연관시키는 사전 계산된 변환 필드도 포함하는 변환 색인 버퍼(TLB)이다.
장치는 또한, 요청된 가상 서브페이지 번호를 수신하는 것에 응답하여, 요청된 가상 서브페이지 번호를 추측된 가상 서브페이지 번호와 비교하기 위한 선택 회로를 포함한다. 요청된 가상 서브페이지 번호가 추측된 가상 서브페이지 번호와 일치하는 경우, 선택 회로는 사전 계산된 변환 필드로부터 사전 계산된 물리적 서브페이지 번호를 판독하여 물리적 서브페이지 번호를 결정한다. 요청된 가상 서브페이지 번호가 추측된 가상 서브페이지 번호와 일치하지 않는 경우, 선택 회로는 매핑 및 요청된 가상 서브페이지 번호를 기반으로 물리적 서브페이지 번호를 계산하여 물리적 서브페이지 번호를 결정한다.
장치에서, 매핑은 사전 계산된 가상 서브페이지 번호를 사전 계산된 물리적 서브페이지 번호와 각각 연관시키는 사전 계산된 변환 세트를 포함한다.
장치는 또한 메모리 관리 유닛과 결합된 프리 리스트를 포함한다. 프리 리스트는 하나 이상의 노드들의 세트를 포함한다. 하나 이상의 노드들의 세트에 있는 각 노드는 비트 벡터를 포함하며 부분적으로 프리한 물리적 메모리 영역을 식별한다. 비트 벡터는 부분적으로 프리한 물리적 메모리 영역에 있는 프리 서브페이지들의 제1 서브셋 및 부분적으로 프리한 물리적 메모리 영역에 있는 할당된 서브페이지들의 제2 서브셋을 식별한다.
방법은, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호와 연관된 매핑을 저장하는 단계를 포함한다. 매핑은 가상 페이지 번호에 할당된 물리적 서브페이지 세트를 식별한다. 물리적 서브페이지 세트는 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하고 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제2 물리적 서브페이지를 제외한다. 방법은 또한, 요청된 가상 서브페이지 번호 및 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여, 요청된 가상 페이지 번호와 연관된 매핑에 기초하여 요청된 가상 서브페이지 번호에 할당되는 복수의 연접한 서브페이지들 중 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하는 단계를 포함한다.
방법은 또한, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호에 할당되는 복수의 연접한 물리적 서브페이지들의 각 물리적 서브페이지에 대한 어서트된 비트, 및 가상 페이지 번호에 할당되지 않은 물리적 메모리 영역에 있는 각 물리적 서브페이지에 대한 디어서트된 비트를 포함하는 비트 벡터로서 가상 페이지 번호와 연관된 매핑을 레코딩하는 단계를 포함한다.
방법은 또한, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 비트 벡터에 있는 i번째 최하위 어서트된 비트의 인덱스를 계산하여 물리적 서브페이지 번호를 결정하는 단계를 포함하며, 여기서 i는 요청된 가상 서브페이지 번호를 나타낸다.
방법은 또한, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 추측된 가상 서브페이지 번호 및 추측된 가상 서브페이지 번호에 할당된 물리적 서브페이지를 식별하는 사전 계산된 물리적 서브페이지 번호를 어드레스 변환 버퍼의 사전 계산된 변환 필드에 저장하는 단계를 포함한다.
방법은 또한, 요청된 가상 서브페이지 번호를 수신하는 것에 응답하여, 요청된 가상 서브페이지 번호를 추측된 가상 서브페이지 번호와 비교하는 단계 및 요청된 가상 서브페이지 번호가 추측된 가상 서브페이지 번화와 일치하는 경우, 사전 계산된 변환 필드로부터 사전 계산된 물리적 서브페이지 번호를 판독하여 물리적 서브페이지 번호를 결정하는 단계를 포함한다.
방법은 또한 프리 리스트의 하나 이상의 노드들의 세트를 저장하는 단계를 포함한다. 하나 이상의 노드들의 세트에 있는 각 노드는 비트 벡터를 포함하며 부분적으로 프리한 물리적 메모리 영역을 식별한다. 비트 벡터는 부분적으로 프리한 물리적 메모리 영역에 있는 프리 서브페이지들의 제1 서브셋 및 부분적으로 프리한 물리적 메모리 영역에 있는 할당된 서브페이지들의 제2 서브셋을 식별한다. 방법은 또한, 물리적 메모리를 할당하기 위한 요청에 응답하여, 프리 리스트의 하나 이상의 노드들의 세트로부터 제1 노드를 선택하는 단계를 포함한다. 프리 리스트는 요청의 메모리 크기보다 큰 크기 p와 연관된다. 선택된 제1 노드에서 식별된 부분적으로 프리한 물리적 메모리 영역은 적어도 p 프리한 메모리 용량을 포함한다.
방법은 또한 물리적 메모리 영역에 대한 비트 벡터를 계산하여 물리적 서브페이지 세트 중 하나 이상의 서브페이지들을 프리하게 하는 단계를 포함한다. 비트 벡터의 각 비트는 물리적 메모리 영역에 있는 대응되는 서브페이지가 프리한지 여부를 나타낸다. 방법은 또한 제1 프리 리스트에 새 노드를 추가하는 단계를 포함한다. 새 노드는 계산된 비트 벡터를 포함하며 물리적 메모리 영역을 식별한다.
방법은 또한, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호와 연관된 매핑을 저장하기 전에 그리고 변환 색인 버퍼(TLB) 누락에 응답하여, 페이지 테이블의 매핑을 식별하도록 가상 페이지 번호에 기초하여 페이지 테이블을 통과하는 단계를 포함한다. 매핑은 비트 벡터로서 페이지 테이블에 저장된다. 방법은 또한 페이지 테이블로부터 TLB로 매핑을 복사하여 매핑을 저장하는 단계를 포함한다.
컴퓨팅 시스템은 물리적 메모리 영역을 포함하는 메인 메모리, 메인 메모리와 결합된 프로세서 및, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호와 연관된 매핑을 저장하기 위한 어드레스 변환 버퍼를 포함한다. 매핑은 가상 페이지 번호에 할당된 물리적 서브페이지 세트를 식별한다. 물리적 서브페이지 세트는 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하고 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제2 물리적 서브페이지를 제외한다. 컴퓨팅 시스템은 또한 프로세서와 결합된 메모리 관리 유닛, 및 요청된 가상 서브페이지 번호 및 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여, 요청된 가상 페이지 번호와 연관된 매칭에 기초하여, 요청된 가상 서브페이지 번호에 할당되는 복수의 연접한 서브페이지들 중 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하기 위한 어드레스 변환 버퍼를 포함한다
컴퓨팅 시스템에서, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 가상 페이지 번호와 연관된 매핑은 가상 페이지 번호에 할당되는 복수의 연접한 물리적 서브페이지들의 각 물리적 서브페이지에 대한 어서트된 비트, 및 가상 페이지 번호에 할당되지 않은 물리적 메모리 영역의 각 프리 서브페이지에 대한 디어서트된 비트를 포함하는 비트 벡터를 포함한다. 컴퓨팅 시스템은 또한 어드레스 변환 버퍼와 결합된 선택 회로를 포함한다. 선택 회로는 비트 벡터의 i번째 최하위 어서트된 비트의 인덱스를 계산하여 물리적 서브페이지 번호를 결정하며, 여기서 i는 요청된 가상 서브페이지 번호를 나타낸다.
컴퓨팅 시스템에서, 어드레스 변환 버퍼는 또한, 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 추측된 가상 서브페이지 번호를 추측된 물리적 가상 서브페이지 번호에 할당된 물리적 서브페이지를 식별하는 사전 계산된 물리적 서브페이지 번호와 연관시키기 위한 사전 계산된 변환 필드를 포함한다. 컴퓨팅 시스템은 또한 요청된 가상 서브페이지 번호를 추측된 가상 서브페이지 번호와 비교하기 위한 선택 회로를 포함한다. 요청된 가상 서브페이지 번호가 추측된 가상 서브페이지 번호와 일치하는 경우, 선택 회로는 사전 계산된 변환 필드로부터 사전 계산된 물리적 서브페이지 번호를 판독하여 물리적 서브페이지 번호를 결정한다. 요청된 가상 서브페이지 번호가 추측된 가상 서브페이지 번호와 일치하지 않는 경우, 선택 회로는 매핑 및 요청된 가상 서브페이지 번호를 기반으로 물리적 서브페이지 번호를 계산하여 물리적 서브페이지 번호를 결정한다.
컴퓨팅 시스템은 또한 하나 이상의 노드들의 세트를 저장하기 위해 프로세서와 결합된 프리 리스트를 포함한다. 하나 이상의 노드들의 세트에 있는 각 노드는 비트 벡터를 포함하며 부분적으로 프리한 물리적 메모리 영역을 식별한다. 비트 벡터는 부분적으로 프리한 물리적 메모리 영역에 있는 프리 서브페이지들의 제1 서브셋 및 부분적으로 프리한 물리적 메모리 영역에 있는 할당된 서브페이지들의 제2 서브셋을 식별한다. 프로세서는 또한 가상 메모리 페이지의 크기에 기초하고 프리 리스트와 연관된 크기 p에 기초하여 프리 리스트를 선택하고, 프리 리스트의 하나 이상의 노드들의 세트로부터 제1 노드를 선택하고, 선택된 제1 노드에 있는 비트 벡터에 기초하여, 가상 메모리 페이지에 할당하기 위한 물리적 서브페이지 세트를 선택하여 가상 메모리 페이지에 대한 메인 메모리로부터 물리적 메모리를 할당한다. 선택된 제1 노드에서 식별된 부분적으로 프리한 물리적 메모리 영역은 적어도 p의 프리한 메모리 용량을 포함한다.
컴퓨팅 시스템에서, 프로세서는 또한 물리적 메모리 영역에 대한 비트 벡터를 계산하고 프리 리스트에 새 노드를 추가함으로써 물리적 서브 페이지 세트 중 하나 이상의 서브페이지를 프리하게 한다. 비트 벡터의 각 비트는 물리적 메모리 영역의 해당 서브페이지가 프리한지 여부를 나타내며, 새 노드는 계산된 비트 벡터를 포함하고 물리적 메모리 영역을 식별한다.
본원에 사용된 바와 같이, "~에 결합된" 이라는 용어는 직접 또는 하나 이상의 중간 컴포넌트들을 통해 간접적으로 결합된 것을 의미할 수 있다. 본원에 설명된 다양한 버스들을 통해 제공되는 모든 신호들은 다른 신호들과 타임 멀티플레싱될 수 있으며 하나 이상의 공통 버스들을 통해 제공될 수 있다. 추가로, 회로 컴포넌트들 또는 블록들 간의 상호 접속은 버스들 또는 단일 신호 라인들로 도시될 수 있다. 버스들 각각은 대안으로 하나 이상의 단일 신호 라인들일 수 있으며 단일 신호 라인들 각각은 대안으로 버스들일 수 있다.
특정 실시예들은 비일시적 컴퓨터 판독 가능 매체에 저장된 인스트럭션들 포함할 수 있는 컴퓨터 프로그램 제품으로 구현될 수 있다. 이러한 인스트럭션들은 설명된 동작들을 수행하기 위해 범용 또는 특수 목적 프로세서를 프로그래밍하는 데 사용될 수 있다. 컴퓨터 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태(예를 들어, 소프트웨어, 처리 애플리케이션)로 정보를 저장하거나 전송하기 위한 모든 메커니즘을 포함한다. 비일시적 컴퓨터 판독 가능 저장 매체는, 이에 제한되는 것은 아니나, 자기 저장 매체(예를 들어, 플로피 디스켓); 광학 저장 매체(예를 들어, CD-ROM); 광자기 저장 매체; 읽기 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 소거 가능한 프로그램 가능 메모리(예를 들어, EPROM 및 EEPROM); 플래시 메모리 또는 전자 인스트럭션들을 저장하기에 적합한 다른 유형의 매체를 포함할 수 있다.
추가로, 일부 실시예들은 컴퓨터 판독 가능 매체가 하나 이상의 컴퓨터 시스템에 저장 및/또는 실행되는 분산형 컴퓨팅 환경에서 실시될 수 있다. 추가로, 컴퓨터 시스템들 간에 전송되는 정보는 컴퓨터 시스템들을 연결하는 전송 매체를 통해 풀링되거나 푸시될 수 있다.
일반적으로, 컴퓨팅 시스템(200) 및/또는 컴퓨터 판독 가능 저장 매체에 운반되는 그 일부분들을 나타내는 데이터 구조는 프로그램에 의해 판독될 수 있고, 컴퓨팅 시스템(200)을 포함하는 하드웨어를 제조하기 위해 직접 또는 간접적으로 사용될 수 있는 데이터베이스 또는 기타 데이터 구조일 수 있다. 예를 들어, 데이터 구조는 베릴로그 또는 VHDL과 같은 고급 설계 언어(HDL)의 하드웨어 기능에 대한 동작 레벨 설명 또는 레지스터 트랜스퍼 수준(RTL) 설명일 수 있다. 설명은 합성 라이브러리로부터의 게이트 리스트를 포함하는 넷리스트를 생성하기 위해 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 넷리스트는 컴퓨팅 시스템(200)을 포함하는 하드웨어의 기능도 나타내는 게이트 세트를 포함한다. 그런 다음, 넷리스트는 마스크들에 적용될 기하학적 모양들을 설명하는 데이터 세트를 생성하기 위해 배치 및 라우팅될 수 있다. 그런 다음, 마스크들은 컴퓨팅 시스템(200)에 대응하는 반도체 회로 또는 회로들을 생성하기 위해 다양한 반도체 제조 단계들에서 사용될 수 있다. 대안으로, 컴퓨터 판독 가능 저장 매체의 데이터베이스는 원하는 바와 같은 넷리스트(합성 라이브러리 여부에 상관없이) 또는 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
본원의 방법(들)의 동작들이 특정 순서로 도시되고 설명되어 있지만, 각 방법의 동작들의 순서는 특정 동작들이 역순으로 수행되거나 특정 동작들이 적어도 부분적으로 다른 동작들과 동시에 수행될 수 있도록 변경될 수 있다. 다른 실시예에서, 별개의 동작들의 인스트럭션들 또는 서브 동작들은 간헐적 및/또는 교대 방식일 수 있다.
전술한 명세서에서, 실시예들은 그 특정한 예시적인 실시예들을 참조하여 설명되었다. 그러나, 첨부된 청구 범위에 기재된 실시예들의 더 넓은 범위를 벗어나지 않고 그에 대한 다양한 수정들 및 변경들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 장치에 있어서,
    복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 가상 페이지 번호와 연관된 매핑을 저장하도록 구성된 어드레스 변환 버퍼로서,
    상기 매핑은 상기 가상 페이지 번호에 할당된 물리적 페이지 세트를 식별하고,
    상기 물리적 페이지 세트는 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하고 상기 물리적 메모리 영역에 있는 상기 복수의 연접한 서브페이지들 중 적어도 제2 물리적 서브페이지를 제외하는, 상기 어드레스 변환 버퍼; 및
    상기 어드레스 변환 버퍼와 결합된 메모리 관리 유닛으로서, 상기 메모리 관리 유닛은,
    요청된 가상 서브페이지 번호 및 상기 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여,
    상기 요청된 가상 페이지 번호와 연관된 상기 매핑에 기초하여, 상기 요청된 가상 서브페이지 번호에 할당되는 상기 복수의 연접한 서브페이지들 중 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하도록 구성되는, 상기 메모리 관리 유닛을 포함하는, 장치.
  2. 제1항에 있어서, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 가상 페이지 번호와 연관된 상기 매핑은,
    상기 가상 페이지 번호에 할당되는 상기 복수의 연접한 물리적 서브페이지들의 각 물리적 서브페이지에 대한 어서트된 비트; 및
    상기 가상 페이지 번호에 할당되지 않은 상기 물리적 메모리 영역에 있는 각 물리적 서브페이지에 대한 디어서트된 비트를 포함하는 비트 벡터를 포함하는, 장치.
  3. 제1항에 있어서, 상기 어드레스 변환 버퍼와 결합된 선택 회로를 더 포함하며, 상기 선택 회로는, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 비트 벡터에 있는 i번째 최하위 어서트된 비트의 인덱스를 계산하여 상기 물리적 서브페이지 번호를 결정하도록 구성되며, i는 상기 요청된 가상 서브페이지 번호를 나타내는, 장치.
  4. 제1항에 있어서, 상기 어드레스 변환 버퍼는 변환 색인 버퍼(TLB)이며, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 추측된 가상 서브페이지 번호를 상기 추측된 가상 서브페이지 번호에 할당된 물리적 서브페이지를 식별하는 사전 계산된 물리적 서브페이지 번호와 연관시키도록 구성된 사전 계산된 변환 필드를 더 포함하는, 장치.
  5. 제1항에 있어서, 상기 요청된 가상 서브페이지 번호를 수신하는 것에 응답하여,
    상기 요청된 가상 서브페이지 번호를 상기 추측된 가상 서브페이지 번호와 비교하고;
    상기 요청된 가상 서브페이지 번호가 상기 추측된 가상 서브페이지 번화와 일치하는 경우, 상기 사전 계산된 변환 필드로부터 상기 사전 계산된 물리적 서브페이지 번호를 판독함으로써 상기 물리적 서브페이지 번호를 결정하고;
    상기 요청된 가상 서브페이지 번호가 상기 추측된 가상 서브페이지 번호와 일치하지 않은 경우, 상기 매핑 및 상기 요청된 가상 서브페이지 번호에 기초하여 상기 물리적 서브페이지 번호를 계산함으로써 상기 물리적 서브페이지 번호를 결정하도록 구성되는 선택 회로를 더 포함하는, 장치.
  6. 제1항에 있어서, 상기 매핑은 사전 계산된 가상 서브페이지 번호를 사전 계산된 물리적 서브페이지 번호와 각각 연관시키는 사전 계상된 변환 세트를 포함하는, 장치.
  7. 제1항에 있어서,
    상기 메모리 관리 유닛과 결합된 프리 리스트로서,
    상기 프리 리스트는 하나 이상의 노드들의 세트를 포함하고,
    상기 하나 이상의 노드들의 세트의 각 노드는 비트 벡터를 포함하며 부분적으로 프리한 물리적 메모리 영역을 식별하고,
    상기 비트 벡터는 상기 부분적으로 프리한 물리적 메모리 영역에 있는 프리 서브페이지들의 제1 서브셋 및 상기 부분적으로 프리한 물리적 메모리 영역에 있는 할당된 서브페이지들의 제2 서브셋을 식별하는, 상기 프리 리스트를 더 포함하는, 장치.
  8. 방법에 있어서,
    복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 가상 페이지 번호와 연관된 매핑을 저장하는 단계로서,
    상기 매핑은 상기 가상 페이지 번호에 할당된 물리적 서브페이지 세트를 식별하고,
    상기 물리적 서브페이지 세트는 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하며 상기 물리적 메모리 영역에 있는 상기 복수의 연접한 서브페이지들의 적어도 제2 물리적 서브페이지를 제외하는, 상기 저장하는 단계; 및
    요청된 가상 서브페이지 번호 및 상기 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여, 상기 요청된 가상 페이지 번호와 연관된 상기 매핑에 기초하여, 상기 요청된 가상 서브페이지 번호에 할당되는 상기 복수의 연접한 서브페이지들 중 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하는 단계를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 가상 페이지 번호와 연관된 상기 매핑을 비트 벡터로서 레코딩하는 단계로서, 상기 비트 벡터는,
    상기 가상 페이지 번호에 할당되는 상기 복수의 연접한 물리적 서브페이지들의 각 물리적 서브페이지에 대한 어서트된 비트; 및
    상기 가상 페이지 번호에 할당되지 않은 상기 물리적 메모리 영역에 있는 각 물리적 서브페이지에 대한 디어서트된 비트를 포함하는, 상기 레코딩하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 비트 벡터에 있는 i번째 최하위 어서트된 비트의 인덱스를 계산함으로써 상기 물리적 서브페이지 번호를 결정하는 단계로서, i는 상기 요청된 가상 서브페이지 번호를 나타내는, 상기 결정하는 단계를 더 포함하는, 방법.
  11. 제8항에 있어서, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 추측된 가상 서브페이지 번호 및 상기 추측된 가상 서브페이지 번호에 할당된 물리적 서브페이지를 식별하는 사전 계산된 물리적 서브페이지 번호를 어드레스 변환 버퍼의 사전 계산된 변환 필드에 저장하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서, 상기 요청된 가상 서브페이지 번호를 수신하는 것에 응답하여,
    상기 요청된 가상 서브페이지 번호를 상기 추측된 가상 서브페이지 번호와 비교하는 단계; 및
    상기 요청된 가상 서브페이지 번호가 상기 추측된 가상 서브페이지 번호와 일치하는 경우, 상기 사전 계산된 변환 필드로부터 상기 사전 계산된 물리적 서브페이지 번호를 판독함으로써 상기 물리적 서브페이지 번호를 결정하는 단계를 더 포함하는, 방법.
  13. 제8항에 있어서,
    프리 리스트의 이상의 모드들의 세트를 저장하는 단계로서,
    상기 하나 이상의 모드들의 세트의 각 노드는 비트 벡터를 포함하며 부분적으로 프리한 물리적 메모리 영역을 식별하고,
    비트 벡터는 상기 부분적으로 프리한 물리적 메모리 영역에 있는 프리 서브페이지들의 제1 서브셋 및 상기 부분적으로 프리한 물리적 메모리 영역에 있는 할당된 서브페이지들의 제2 서브셋을 식별하는, 상기 저장하는 단계; 및
    물리적 메모리를 할당하기 위한 요청에 응답하여, 상기 프리 리스트의 상기 하나 이상의 모드들의 세트로부터 제1 노드를 선택하는 단계로서,
    상기 프리 리스트는 상기 요청의 메모리 크기보다 큰 크기 p와 연관되고,
    상기 선택된 제1 노드에서 식별된 상기 부분적으로 프리한 물리적 메모리 영역은 크기가 적어도 p인 프리한 메모리 용량을 포함하는, 상기 선택하는 단계를 더 포함하는, 방법.
  14. 제8항에 있어서,
    상기 물리적 메모리 영역에 대한 비트 벡터를 계산하되, 상기 비트 벡터에 있는 각 비트는 상기 물리적 메모리 영역에 있는 해당 서브페이지가 프리한지 여부를 나타내고,
    새 노드를 상기 제1 프리 리스트에 추가하되, 상기 새 노드는 상기 계산된 비트 벡터를 포함하며 상기 물리적 메모리 영역을 식별함으로써 상기 물리적 서브페이지 세트의 하나 이상의 서브페이지들을 프리하게 하는 단계를 더 포함하는, 방법.
  15. 제8항에 있어서, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해,
    상기 가상 페이지 번호와 연관된 상기 매핑을 저장하기 전에 그리고 변환 색인 버퍼(TLB) 누락에 응답하여, 페이지 테이블의 상기 매핑을 식별하도록 상기 가상 페이지 번호에 기초하여 상기 페이지 테이블을 통과하는 단계로서, 상기 매핑은 상기 페이지 테이블에 비트 벡터로서 저장되는, 상기 통과하는 단계; 및
    상기 매핑을 상기 페이지 테이블로부터 상기 TLB로 복사함으로써 상기 매핑을 저장하는 단계를 더 포함하는, 방법.
  16. 컴퓨팅 시스템에 있어서,
    물리적 메모리 영역을 포함하는 메인 메모리;
    상기 메인 메모리와 결합된 프로세서;
    복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 가상 페이지 번호와 연관된 매핑을 저장하도록 구성된 어드레스 변환 버퍼로서,
    상기 매핑은 상기 가상 페이지 번호에 할당된 물리적 서브페이지 세트를 식별하고,
    상기 물리적 서브페이지 세트는 상기 물리적 메모리 영역에 있는 복수의 연접한 서브페이지들 중 적어도 제1 물리적 서브페이지를 포함하며 상기 물리적 메모리 영역에 있는 상기 복수의 연접한 서브페이지들 중 적어도 제2 물리적 서브페이지를 제외하는, 상기 어드레스 변환 버퍼; 및
    상기 프로세서 및 상기 어드레스 변환 버퍼와 결합된 메모리 관리 유닛으로서, 상기 메모리 관리 유닛은,
    요청된 가상 서브페이지 번호 및 상기 복수의 가상 페이지 번호들 중 요청된 가상 페이지 번호를 수신하는 것에 응답하여, 상기 요청된 가상 페이지 번호와 연관된 상기 매핑에 기초하여, 상기 요청된 가상 서브페이지 번호에 할당되는 상기 복수의 연접한 서브페이지들 중 물리적 서브페이지를 식별하는 물리적 서브페이지 번호를 결정하도록 구성되는, 상기 메모리 관리 유닛을 포함하는, 컴퓨팅 시스템.
  17. 제16항에 있어서,
    상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 상기 가상 페이지 번호와 연관된 상기 매핑은,
    상기 가상 페이지 번호에 할당되는 상기 복수의 연접한 물리적 서브페이지들의 각 물리적 서브페이지에 대한 어서트된 비트, 및
    상기 가상 페이지 번호에 할당되지 않은 상기 물리적 메모리 영역에 있는 각 프리 서브페이지에 대한 디어서트된 비트를 포함하는 비트 벡터를 포함하고,
    상기 컴퓨팅 시스템은 상기 어드레스 변환 버퍼와 결합된 선택 회로를 더 포함하고,
    상기 선택 회로는 상기 비트 벡터에 있는 i번찌 최하위 어서트된 비트의 인덱스를 계산함으로써 상기 물리적 서브페이지 번호를 결정하되, i는 상기 요청된 가상 서브페이지 번호를 나타내도록 구성되는, 컴퓨팅 시스템.
  18. 제16항에 있어서,
    상기 어드레스 변환 버퍼는, 상기 복수의 가상 페이지 번호들의 각 가상 페이지 번호에 대해, 추측된 가상 서브페이지 번호를 상기 추측된 가상 서브페이지 번호에 할당된 물리적 서브페이지를 식별하는 사전 계산된 물리적 서브페이지 번호와 연관시키도록 구성된 사전 계산된 변환 필드를 더 포함하며,
    상기 컴퓨팅 시스템은,
    상기 요청된 가상 서브페이지 번호를 상기 추측된 가상 서브페이지 번호와 비교하고,
    상기 요청된 가상 서브페이지 번호가 상기 추측된 가상 서브페이지 번호와 일치하는 경우, 상기 사전 계산된 변환 필드로부터 상기 사전 계산된 물리적 서브페이지 번호를 판독함으로써 상기 물리적 서브페이지 번호를 결정하고,
    상기 요청된 가상 서브페이지 번호가 상기 추측된 가상 서브페이지 번호와 일치하지 않은 경우, 상기 매핑 및 상기 요청된 가상 서브페이지 번호에 기초하여 상기 물리적 서브페이지 번호를 계산함으로써 상기 물리적 서브페이지 번호를 결정하도록 구성된 선택 회로를 더 포함하는, 컴퓨팅 시스템.
  19. 제16항에 있어서,
    상기 프로세서와 결합되고 하나 이상의 노드들의 세트를 저장하도록 구성된 프리 리스트를 더 포함하며,
    상기 하나 이상의 노드들의 세트의 각 노드는 비트 벡터를 포함하며 부분적으로 프리한 물리적 메모리 영역을 식별하고,
    상기 비트 벡터는 상기 부분적으로 프리한 물리적 메모리 영역에 있는 프리 서브페이지들의 제1 서브셋 및 상기 부분적으로 프리한 물리적 메모리 영역에 있는 할당된 서브페이지들의 제2 서브셋을 식별하며,
    상기 프로세스는,
    가상 메모리 페이지의 크기에 기초하고 상기 프리 리스트와 연관된 크기 p에 기초하여 상기 프리 리스트를 선택하고,
    상기 프리 리스트의 상기 하나 이상의 세트로부터 제1 노드를 선택하고,
    상기 선택된 제1 노드에 있는 상기 비트 벡터에 기초하여, 상기 가상 메모리 페이지에 대해 할당하기 위한 상기 물리적 서브페이지 세트를 선택하되, 상기 선택된 제1 노드에서 식별된 상기 부분적으로 프리한 물리적 메모리 영역은 크기가 적어도 p인 프리한 메모리 용량을 포함함으로써 상기 가상 메모리 페이지를 위해 상기 메인 메모리로부터 물리적 메모리를 할당하도록 더 구성되는, 컴퓨팅 시스템.
  20. 제16항에 있어서, 상기 프로세서는,
    상기 물리적 메모리 영역에 대한 비트 벡터를 계산하되, 상기 비트 벡터의 각 비트는 상기 물리적 메모리 영역에 있는 해당 서브페이지가 프리한지 여부를 나타내고,
    새 노드를 프리 리스트에 추가하되, 상기 새 노드는 상기 계산된 비트 벡터를 포함하고 상기 물리적 메모리 영역을 식별함으로써 상기 물리적 서브페이지 세트 중 하나 이상의 서브페이지들을 프리하게 하도록 더 구성되는, 컴퓨팅 시스템.
KR1020217019110A 2019-04-08 2020-01-27 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법 KR20210144656A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/378,479 2019-04-08
US16/378,479 US20200320016A1 (en) 2019-04-08 2019-04-08 Method enabling virtual pages to be allocated with noncontiguous backing physical subpages
PCT/US2020/015275 WO2020209925A1 (en) 2019-04-08 2020-01-27 Method enabling virtual pages to be allocated with noncontiguous backing physical subpages

Publications (1)

Publication Number Publication Date
KR20210144656A true KR20210144656A (ko) 2021-11-30

Family

ID=69724134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217019110A KR20210144656A (ko) 2019-04-08 2020-01-27 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법

Country Status (6)

Country Link
US (1) US20200320016A1 (ko)
EP (1) EP3953825A1 (ko)
JP (1) JP7469306B2 (ko)
KR (1) KR20210144656A (ko)
CN (1) CN113227989A (ko)
WO (1) WO2020209925A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169809B2 (en) * 2017-03-31 2021-11-09 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
US11537527B2 (en) * 2020-12-10 2022-12-27 Micron Technology, Inc. Dynamic logical page sizes for memory devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5946716A (en) * 1996-05-30 1999-08-31 Hewlett-Packard Company Sectored virtual memory management system and translation look-aside buffer (TLB) for the same
US6457107B1 (en) * 2000-02-28 2002-09-24 International Business Machines Corporation Method and apparatus for reducing false sharing in a distributed computing environment
CN101661437A (zh) * 2008-08-28 2010-03-03 国际商业机器公司 旁路转换缓冲器以及在其中进行地址匹配的方法和装置
US20140108766A1 (en) 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
US10162525B2 (en) 2015-09-11 2018-12-25 Red Hat Israel, Ltd. Translating access requests for a multi-level page data structure

Also Published As

Publication number Publication date
WO2020209925A1 (en) 2020-10-15
EP3953825A1 (en) 2022-02-16
CN113227989A (zh) 2021-08-06
JP7469306B2 (ja) 2024-04-16
JP2022528027A (ja) 2022-06-08
US20200320016A1 (en) 2020-10-08

Similar Documents

Publication Publication Date Title
US20210374069A1 (en) Method, system, and apparatus for page sizing extension
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US7539843B2 (en) Virtual memory fragment aware cache
US7783859B2 (en) Processing system implementing variable page size memory organization
US7376808B2 (en) Method and system for predicting the performance benefits of mapping subsets of application data to multiple page sizes
US7917725B2 (en) Processing system implementing variable page size memory organization using a multiple page per entry translation lookaside buffer
US9104327B2 (en) Fast translation indicator to reduce secondary address table checks in a memory device
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
US10915459B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
JPH11102323A (ja) 仮想アドレス変換用の柔軟な変換記憶バッファ
CN113039530A (zh) 压缩式存储系统的空闲空间管理
US10884948B2 (en) Replacing pointers with hashing in tree-based page table designs
JP7469306B2 (ja) 仮想ページを不連続なバッキング物理サブページに割り当てることを可能にする方法
US10740248B2 (en) Methods and systems for predicting virtual address
US7237084B2 (en) Method and program product for avoiding cache congestion by offsetting addresses while allocating memory
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
US7143239B2 (en) Cache structure and methodology
US10977176B2 (en) Prefetching data to reduce cache misses