KR20130048261A - 마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템 - Google Patents

마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템 Download PDF

Info

Publication number
KR20130048261A
KR20130048261A KR1020137007415A KR20137007415A KR20130048261A KR 20130048261 A KR20130048261 A KR 20130048261A KR 1020137007415 A KR1020137007415 A KR 1020137007415A KR 20137007415 A KR20137007415 A KR 20137007415A KR 20130048261 A KR20130048261 A KR 20130048261A
Authority
KR
South Korea
Prior art keywords
memory
page
micro
hot
physical
Prior art date
Application number
KR1020137007415A
Other languages
English (en)
Other versions
KR101457825B1 (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 KR20130048261A publication Critical patent/KR20130048261A/ko
Application granted granted Critical
Publication of KR101457825B1 publication Critical patent/KR101457825B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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/1028Power efficiency
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

장치, 방법, 기계 판독 가능 매체, 및 시스템이 개시된다. 일 실시예에서, 장치는 글로벌 메모리 어드레스 공간 내의 페이지에 대한 메모리 페이지 요청을 수신할 수 있는 로직을 포함하는 마이크로 페이지 테이블 엔진이다. 장치는 또한 하나 이상의 메모리 페이지 어드레스 변환을 저장할 수 있는 TLB(translation lookaside buffer)를 포함한다. 추가적으로, 장치는 또한 메모리 페이지 요청에 의해 참조되는 메모리의 페이지에 대한 메모리 페이지 어드레스 변환을 저장하지 않는 TLB에 대응하여 페이지 미스 핸들러 태그 테이블에서 마이크로 물리적 어드레스 룩업을 수행할 수 있는 페이지 미스 핸들러를 갖는다. 장치는 또한 페이지 미스 핸들러 태그 테이블 엔트리를 관리할 수 있는 메모리 관리 로직을 포함한다. 마이크로 페이지 테이블 엔진은 TLB가 2레벨 메모리 계층 내의 데이터가 메모리의 핫 영역 또는 메모리의 콜드 영역에 있는지를 판단하는 에이전트가 되는 것을 가능하게 한다. 데이터가 메모리의 콜드 영역에 있을 때, 마이크로 페이지 테이블 엔진은 데이터를 핫 메모리로 페치하며 이 때 핫 메모리 블록은 콜드 메모리 영역으로 푸시된다.

Description

마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템{APPARATUS, METHOD, AND SYSTEM FOR IMPLEMENTING MICRO PAGE TABLES}
본 발명은 컴퓨터 시스템에서 구현되는 메모리 페이지 테이블에 관한 것이다.
현대의 컴퓨터 시스템은 시스템 내의 구성요소 사이에서 시스템 메모리의 공유를 처리하기 위해 복합 메모리 관리 방식을 포함하고 있다. 컴퓨터 시스템은 여러개의 멀티 코어 프로세서를 포함할 수 있으며, 각 코어(즉, 각 하드웨어 스레드)는 메모리에 대한 액세스를 필요로 한다. 예를 들어, 시스템 상에 실행되는 운영 체제뿐만 아니라 잠재적으로 가상 기계 모니터도 모든 하드웨어 스레드 사이에서 시스템 메모리의 공유의 관리에 도움이 되는 로직을 포함할 수 있다. 이 메모리 관리는 자주 메모리가 실제로 시스템에 레이아웃되는 방식의 물리적 제약을 고려하지 않는다. 예를 들어, 플랫폼 전력을 절약하기 위해 메모리 랭크(rank)가 저전력 상태로 파워 다운되는 것을 가능하게 하는 메모리 절전 능력이 있을 수 있다. 다른 예에서, 시스템(즉, 동종 메모리 시스템이라기보다는 이종 메모리 시스템) 내에 다수의 물리적 타입의 메모리가 있을 수 있다. 컴퓨터 시스템의 메모리 서브시스템의 이 변화된 물리적 구현은 논의된 수단을 통해 현재 이용 가능한 표준 메모리 관리에서 그 만큼 이득을 얻을 수 없다.
본 발명은 예로서 도시되며, 동일한 참조 부호가 유사한 요소를 지시하는 도면에 의해 한정되지 않는다.
도 1은 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 일 실시예를 도시한다.
도 2는 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 추가 실시예를 도시한다.
도 3은 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 다른 실시예를 도시한다.
도 4는 페이지 미스 핸들러 태그 테이블의 실시예를 예시한다.
도 5는 랭크 쉐딩(rank shedding)을 위해 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 실시예를 예시한다.
도 6은 랭크 쉐딩을 위해 적어도 부분적으로 이용되는 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 실시예를 예시한다.
도 7은 랭크 쉐딩을 위해 적어도 부분적으로 구현될 때 페이지 미스 핸들러 태그 테이블의 실시예를 예시한다.
도 8은 핫 페이지 미스를 취급하는데 사용되는 프로세스의 실시예의 흐름도이다.
도 9는 핫 페이지 미스에 반응할 때 마이크로 페이지 테이블 엔진에 의해 이용되는 추가 마이크로 페이지 테이블 데이터 구조의 일부의 실시예를 예시한다.
도 10은 콜드 투 핫 메모리 페이지 데이터 전송 동안 핫 페이지로서 이용되는 능력을 다수의 메모리 페이지에 제공하는 유지 프로세스의 실시예의 흐름도이다.
도 11은 유지 프로세스 동안 마이크로 페이지 테이블 엔진에 의해 이용되는 추가 마이크로 페이지 테이블 데이터 구조의 일부의 실시예를 예시한다.
도 12(a)-도 12(d)는 사용을 위해 메모리 페이지를 복구할 때를 판단하기 위해 마이크로 페이지 테이블 엔진 처리 로직이 이용될 수 있는 흐름도의 여러실시예를 예시한다.
도 13은 컴퓨터 시스템 내의 마이크로 페이지 테이블 관리된 2레벨 메모리 서브시스템의 실시예를 도시한다.
도 14는 상 변화 메모리-특정 메모리 서브시스템의 실시예를 도시한다.
마이크로 페이지 테이블을 구현하는 장치, 방법, 시스템, 및 기계 판독 가능 매체의 실시예가 설명된다.
컴퓨터 시스템은 메모리의 소프트웨어 뷰를 메모리의 물리적 구현에 맵핑하는 마이크로 페이지 테이블의 사용을 통해 효율적인 방식으로 메모리를 관리하기 위해 추가 하드웨어 및 펌웨어 로직을 구현할 수 있다. 마이크로 페이지 테이블 구현 아키텍처는 추가 히든 데이터 구조 세트를 관리하기 위해 프로세서 코어 및 언코어 내에 어떤 로직을 포함할 수 있다. 이 히든 데이터 구조는 컴퓨터 상에 실행되는 상부(overlying) 운영 체제 및 응용에 투명하다.
관습적으로, 운영 CPU가 운영 체제로부터 메모리 요청을 수신할 때, 그것은 선형 메모리 어드레스를 포함한다. 이 선형 메모리 어드레스는 요청된 메모리 위치의 실제 물리적 어드레스가 아니라, 오히려 컴퓨터 시스템 내의 운영 체제에 의해 이용되는 어드레스이다. 실제 물리적 어드레스에 도달하기 위해, CPU 내의 로직은 선형 어드레스를 취하고 표준 메모리 페이지 테이블을 통해 워크(walk)를 수행하여 물리적 페이지를 발견한다. 많은 실시예에서, 마이크로 페이지 테이블을 구현하는 프로세서는 워크에 추가 단계를 필요로 한다. 페이지 워크 룩업 프로세스(Platform Physical Address(PPA))의 끝에서 통상 물리적 어드레스인 것은 실제로 순수 물리적 어드레스로부터 제거되는 1레벨이며, 이는 이제 MPA(micro physical address)로 지칭될 수 있다.
CPU로 구현되는 마이크로 페이지 테이블 엔진 로직은 MPA 어드레스를 발견하기 위해 인덱스로서 PPA를 갖는 페이지 미스 핸들러 태그 테이블을 이용한다. 추가 1레벨만큼 인디렉션 레벨(level of indirection)을 증가시킴으로써, 마이크로 페이지 테이블 엔진 내의 로직은 시스템 내의 임의의 다른 하드웨어 또는 소프트웨어에 완전히 알려져 있지 않은 물리적 메모리의 다량의 메모리 관리를 수행할 수 있다. 이어지는 것은 여러상이한 범용 컴퓨터 시스템 내의 마이크로 페이지 테이블의 개념적 레이아웃뿐만 아니라 마이크로 페이지 테이블의 여러 상이한 구현 및 그것이 컴퓨터 메모리 관리의 추가 이점을 제공하기 위해 어떻게 이용될 수 있는지에 대한 상세한 설명이다.
마이크로 페이지 테이블의 생성은 메모리의 근거리(예를 들어, 고성능/고전력 소비 메모리) 및 원거리(예를 들어, 저성능/저전력 소비 메모리) 부분 사이에서 메모리를 분할하는 잠재적으로 투명한 방법을 허용할 수 있다. 메모리 관리의 이 추가 층은 메모리 서브시스템 비용, 메모리 전력 소비, 및 메모리 성능의 최적화를 가능하게 할 수 있다.
마이크로 페이지 테이블 전체 구현
도 1은 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 일 실시예를 도시한다.
컴퓨터 시스템(100)이 도시되어 있다. 컴퓨터 시스템은 데스크톱, 서버, 워크스테이션, 랩톱, 핸드헬드, 텔레비젼 셋톱, 미디어 센터, 게임 콘솔, 통합 시스템(자동차에서와 같은), 또는 다른 타입의 컴퓨터 시스템일 수 있다. 여러실시예에서, 컴퓨터 시스템(100)은 하나 이상의 중앙 처리 유닛(CPU)을 포함한다. 많은 실시예에서 잠재적으로 많은 CPU가 있을지라도, 도 1에 도시된 실시예에서, 명확화를 위해 CPU(102)만이 도시되어 있다. CPU(102)는 Intel? Corporation CPU 또는 다른 브랜드의 CPU일 수 있다. CPU(102)는 상이한 실시예에서 하나 이상의 코어를 포함한다. 명확화를 위해 단일 코어(코어(104))를 또한 포함하는 CPU(102)가 도시되어 있다.
많은 실시예에서, 코어(104)는 하나 이상의 실행 유닛, 종료 유닛, 범용 및 특수 레지스터 세트 등과 같은 내부 기능 블록을 포함한다. 코어(104)가 멀티 스레드되거나 하이퍼 스레드되면, 이 때 각 하드웨어 스레드는 마찬가지로 "로직(logical)" 코어로 간주될 수 있다.
CPU(102)는 캐시(106)와 같은 하나 이상의 캐시를 포함할 수도 있다. 도시되지 않은 많은 실시예에서, 캐시(106) 이외의 추가 캐시는 캐시의 다수의 레벨이 코어 및 메모리 내의 실행 유닛 사이에 존재하도록 구현된다. 상이한 실시예에서, 캐시(106)는 상이한 방법으로 할당될 수 있다. 추가적으로, 캐시(106)는 상이한 실시예에서 많은 상이한 사이즈 중 하나일 수 있다. 예를 들어, 캐시(106)는 8메가바이트(MB) 캐시, 16MB 캐시 등일 수 있다. 추가적으로, 상이한 실시예에서, 캐시는 직접 맵핑된 캐시, 전체 연관 캐시, 멀티웨이 세트 연관 캐시, 또는 다른 타입의 맵핑을 갖는 캐시일 수 있다. 다수의 코어를 포함하는 다른 실시예에서, 캐시(106)는 모든 코어 사이에 공유되는 하나의 큰 부분을 포함할 수 있거나 여러개별 기능 슬라이스(예를 들어, 각 코어에 대해 하나의 슬라이스)로 분할될 수 있다. 캐시(106)는 모든 코어 사이에 공유되는 하나의 부분 및 코어 당 개별 기능 슬라이스인 여러다른 부분을 포함할 수도 있다.
많은 실시예에서, CPU(102)는 인터페이스를 제공하여 시스템 메모리(110)와 통신하기 위해 통합 시스템 메모리 컨트롤러(108)를 포함한다. 도시되지 않은 다른 실시예에서, 메모리 컨트롤러(108)는 컴퓨터 시스템(100) 내의 다른 곳에 개별 칩으로 위치될 수 있다.
시스템 메모리(110)는 DDR(double data rate) DRAM 타입과 같은 DRAM(dynamic random access memory), 플래시 메모리와 같은 비휘발성 메모리, PCM(phase change memory), 또는 다른 타입의 메모리 기술을 포함할 수 있다. 시스템 메모리(110)는 CPU(102)에 의해 조작되는 데이터 및 명령어를 저장하는 범용 메모리일 수 있다. 추가적으로, DMA(direct memory access) 가능 I/O(input/output) 장치와 같은 시스템 메모리에 판독 및 기록하는 능력을 갖는 컴퓨터 시스템(100) 내에 다른 잠재적 장치가 있을 수 있다.
CPU(102)와 시스템 메모리(110)를 결합하는 링크(즉, 버스, 인터커텍트 등)는 데이터, 어드레스, 제어, 및 클록 정보를 전송할 수 있는 하나 이상의 광, 금속, 또는 다른 와이어(즉 라인)를 포함할 수 있다.
I/O 컴플렉스(112)는 CPU(102)와 I/O 장치(114)와 같은 하나 이상의 I/O 장치 사이에서 통신을 가능하게 한다. 도 1에 도시된 실시예에서, I/O 장치(114)는 I/O 인터페이스(116)를 통해 I/O 컴플렉스(112) 및 CPU(102)의 나머지에 통신 결합된다. I/O 컴플렉스(112)는 CPU(102)와 많은 I/O 서브시스템 사이에 액세스를 제공하기 위해 여러I/O 호스트 어댑터 및 다른 I/O 회로를 포함하는 I/O 허브 인터페이스일 수 있다. 예를 들어, I/O 컴플렉스(112)는 PCH(platform controller hub)를 포함할 수 있다. 구체적으로, I/O 컴플렉스(112)는 하나 이상의 I/O 인터커텍트(즉 I/O 버스)에 결합되는 다수의 I/O 장치와 CPU(102) 사이에 범용 통신 인터페이스를 제공할 수 있다. 이것을 성취하기 위해, I/O 허브 컴플렉스는 이용된 각 I/O 프로토콜을 위한 적어도 하나의 통합된 I/O 어댑터를 가질 수 있다. I/O 인터페이스(116)에 통신 결합되는 많은 I/O 장치가 있을 수 있지만, 명확화를 위해 I/O 장치(114)만이 도시되어 있다.
I/O 컴플렉스(112) 내에 통합된 I/O 어댑터로서 도 1에 도시된 I/O 어댑터(118)는 CPU(102) 내에 이용되는 호스트 통신 프로토콜을 I/O 장치(118)와 같은 특정 I/O 장치와 호환되는 프로토콜로 변환한다. 주어진 I/O 어댑터가 변환할 수 있는 프로토콜의 일부는 그 중에서 PCI(Peripheral Component Interconnect)-익스프레스, USB(Universal Serial Bus), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), RAID(Redundant Array of Inexpensive Disks), 및 1394 "Firewire"를 포함한다. 추가적으로, 하나 이상의 무선 프로토콜 I/O 어댑터가 있을 수 있다. 무선 프로토콜의 예는 그 중에서 블루투스, IEEE 802.11 기반 무선 프로토콜, 및 셀룰러 프로토콜이다.
많은 실시예에서, BIOS(120)(basic input/output system)는 I/O 컴플렉스(112)에 결합된다. BIOS는 부트 프로세스 동안 중요 컴퓨터 시스템 구성요소를 초기화하기 위해 명령어를 포함하는 컴퓨터 시스템에 저장되는 펌웨어이다. BIOS(120)는 일반적으로 플래시 메모리 장치 내에 저장되지만, 비휘발성 방식으로 정보를 저장하도록 설계되는 다른 그러한 저장 장치는 BIOS를 저장하기 위해 이용될 수도 있다. 추가적으로, 도 1에 도시되지 않을지라도, 간단히 BIOS 이외의 다른 펌웨어는 확장 가능 펌웨어와 같은 CPU(102)에 결합되는 플래시 장치에 저장될 수도 있다.
I/O 인터페이스(116) 외에도, CPU(102) 외부의 하나 이상의 링크를 통신 인터페이스에 제공하기 위해 CPU(102)에 통합되는 다른 인터페이스가 있을 수 있다. 고속 I/O 인터페이스(122)는 CPU(102)를 하나 이상의 링크에서 그래픽스 서브시스템 및/또는 네트워크 서브시스템과 같은 고속 I/O 서브시스템으로 통신 결합할 수 있다. 예를 들어, 고속 I/O 인터페이스는 단일 또는 멀티 레인 고속 인터페이스, 양방향 인터페이스, PCI-익스프레스와 같은 직렬 인터페이스일 수 있다. 인터-CPU 고속 인터페이스(124)는 인터페이스를 하나 이상의 추가 CPU에 결합되는 링크에 제공하고 인터-CPU 통신이 발생되는 것을 가능하게 할 수 있다. 예를 들어, 인터-CPU 고속 인터페이스는 QPI(quick path interconnect) 또는 다른 유사한 인터페이스일 수 있다.
많은 실시예에서, 컴퓨터 시스템(100)은 VM(virtual machine) 환경에서 실행되는 하나 이상의 게스트 OS(operating system)를 가상화된 환경에 제공할 수 있는 하드웨어 및 소프트웨어 로직을 포함한다. VMM(virtual machine monitor) 또는 하이퍼바이저는 각 VM의 운영 환경을 분리하기 위해 시스템 내의 로직으로 구현될 수 있다(즉 따라서 그것 내에서 실행되는 각 VM 및 OS 및 응용은 시스템에 존재하는 다른 VM으로부터 분리되고 이를 인식하지 못한다).
무결절성 가상화된 환경을 생성하는데 필요한 영역 중 하나는 가상화된 I/O이다. I/O 가상화 로직(126)은 I/O 장치(114)와 같은 I/O 서브시스템 내의 I/O 장치를 가상화 및 분리하는 능력을 제공한다. 일부 실시예에서, I/O 가상화 로직은 Intel? VT-d 아키텍처를 포함한다.
I/O 장치에 의해 개시되는 장치 트랜스퍼(Direct Memory Access(DMA)) 및 인터럽트는 주어진 VM에 장치 분리를 필요로 하는 중요 프로세스이다. 많은 실시예에서, I/O 가상화 로직(126)은 시스템 소프트웨어가 다수의 DMA 보호 도메인을 생성할 수 있게 한다. 보호 도메인은 시스템 메모리 서브세트가 할당되는 분리된 환경이다. 소프트웨어 사용 모델에 따라, DMA 보호 도메인은 VM에 할당되는 메모리, 또는 VM에서 또는 VMM 또는 하이퍼바이저 자체의 일부로서 실행되는 게스트 OS 드라이버에 의해 할당되는 DMA 메모리를 나타낼 수 있다. I/O 가상화 로직(126)은 시스템 소프트웨어가 하나 이상의 I/O 장치를 보호 도메인에 할당할 수 있게 한다. DMA 분리는 그것에 할당되지 않은 I/O 장치로부터 보호 도메인의 물리적 메모리로의 액세스를 제한함으로써 달성된다.
인터럽트 핸들링에 대해, I/O 가상화 로직(126)은 "메시지 식별자(message identifier)"를 포함하고 실제 인터럽트 속성을 포함하지 않는 DMA 기록 요청인 것으로 인터럽트 메시지 포맷을 수정할 수 있다. 임의의 DMA 요청과 같은 기록 요청은 인터럽트를 발생시키는 I/O 장치 기능의 요청자 id를 지정할 수 있다. 그 다음, 인터럽트 요청이 I/O 가상화 로직(126)에 의해 수신될 때, 인터럽트는 인터럽트의 테이블 구조를 통해 리맵핑된다. 인터럽트 리맵핑 테이블 내의 각 엔트리는 임의의 필요한 인터럽트 속성(예를 들어, 수신지 CPU, 벡터 등)을 포함하는 장치로부터의 고유 인터럽트 메시지 식별자에 대응한다.
도 1에 도시된 실시예에서, I/O 가상화 로직(126)은 하나 이상의 I/O 장치로부터 I/O 인터페이스(116)를 통해 요청을 수신한다. I/O 가상화 로직(126)은 상술한 바와 같이, 그것이 메모리 컨트롤러(108)에 통과되는 것을 가능하게 하기 전에 이 요청을 취급한다.
많은 실시예에서, MPT(micro page table) 엔진(128) 로직은 가능하게 히든(OS 및 응용으로부터의) 페이지 테이블 구조를 사용하여 하드웨어 관리된 메모리 어드레스 공간을 제공하기 위해 코어(104)에서 구현된다. MPT 엔진(128)은 컴퓨터 시스템(100) 상에서 실행되는 OS 및 응용 소프트웨어에 의해 인지되는 바와 같이 메모리 어드레스 공간을 가상화한다. 구체적으로, 하나 이상의 응용/프로세스를 실행하는 운영 체제를 포함할 수 있는 소프트웨어는 시스템 메모리(110) 내의 물리적 어드레스에 액세스를 직접 요청할 수 있는 것을 가정하지만, MPT 엔진(128)은 히든 인디덱션 레벨을 제공하므로 물리적 메모리는 운영 체제 내의 커널이 인식하는 물리적 메모리의 레이아웃과 개별적으로 관리될 수 있다. 이 메모리에 대한 하드웨어 구현 가능한 히든 인디렉션 레벨은 모든 메모리 일관성 및 시스템 메모리(110)의 영역 사이의 데이터 이동을 관리한다.
MPT 엔진(128)는 코어(104)와 같은 코어 각각 내에 수정된 TLB(translation lookaside buffer)(130) 및 PMH(page miss handler) 로직(132)을 포함한다.
많은 실시예에서, TLB(130)는 일반적으로 메모리 관리 하드웨어가 선형 어드레스 변환 속도를 개선하기 위해 사용하는 CPU 캐시인 것으로 간주된다. TLB(130)는 일반적으로 선형 어드레스를 PPA(platform physical address)에 맵핑하는 페이지 테이블 엔트리를 포함하는 고정된 수의 슬롯을 포함한다. 더욱이, TLB(130)는 CAM(content-addressable memory)이며, 여기서 탐색 키는 선형 어드레스이고 탐색 결과는 플랫폼 물리적 어드레스이다. 코어 메모리 요청(134)으로부터의 요청된 선형 어드레스가 TLB에 존재하면, CAM 탐색은 TLB 히트인 매치를 초래한다. 그렇지 않으면, 요청된 어드레스가 TLB에 없는 경우, CAM 탐색은 TLB 미스를 발생시킨다.
TLB 히트가 있으면, 선형 어드레스 → 플랫폼 물리적 어드레스 변환은 이미 발생되었고 변환은 TLB(130)에 저장된다. TLB 미스가 있으면, 변환은 그 결과 저장되지 않고 MPT 엔진(128) 로직은 이 때 플랫폼 물리적 어드레스를 검색하기 위해 OS 설정된 페이지 테이블을 사용하여 페이지 워크를 수행하도록 요구된다. 페이지 워크가 완료되었다면, 정확한 플랫폼 물리적 어드레스가 발견되고 변환은 이 때 TLB로 저장될 수 있다.
그러나, 컴퓨터 시스템(100)에서, 플랫폼 물리적 어드레스는 시스템 메모리(110)를 포함하는 메모리 장치에 액세스하는데 사용되는 실제 물리적 메모리 어드레스가 아니다. 오히려, MPT 엔진(128)이 변환의 플랫폼 물리적 어드레스를 수신했다면, 플랫폼 물리적 어드레스는 이 때 물리적 메모리로의 순수 어드레스를 검색하기 위해 히든 메모리 영역(138)에 저장되는 PMH TT(tag table)(136)로의 인덱스(즉, 탐색 키)로서 사용된다. 이 문헌에 걸쳐 이용될 수 있는 다른 실시예에서, 메모리 영역(138), 및 잠재적으로 그것이 저장하는 구조의 일부 또는 전부는 숨겨지는 것이 아니라 오히려 OS 및 소프트웨어 응용에 보여진다.
구체적으로, PMH TT(136)는 다수의 엔트리를 갖는다. 각 엔트리는 최종 물리적 메모리 공간으로 직접 맵핑되는 MPA(micro physical address)를 저장한다. 따라서, 그것은 선형 어드레스로부터 MPA를 획득하기 위해 적어도 2개의 어드레스 변환을 취한다. MPT 엔진(128)을 사용할 때의 추가 테이블 룩업은 플랫폼 물리적 어드레스를 MPA로 변환하기 위해 이용되는 테이블 룩업이다. 다시 말하면, 컴퓨터 시스템(100) 내의 기본 어드레스 변환은 이하의 순서로 처리될 것이다: 선형 어드레스 -> 플랫폼 물리적 어드레스 -> MPA. 플랫폼 물리적 어드레스 대 마이크로 물리적 어드레스 변환(PMH TT(136)를 사용하는)은 완전 연관 맵핑이다. 따라서, PMH TT(136) 내의 임의의 엔트리는 임의의 MPA를 저장할 수 있다. MPT 엔진이 PMH-TT로부터 MPA를 수신했다면, 그것은 선형 어드레스로부터 MPA로의 변환이 직접 수행될 수 있는 후속 액세스를 위해 이것을 TLB에 저장한다. 다른 실시예에서, PMH TT(136)는 더욱 제한된 세트 연관성을 사용하여 구현될 수 있다.
많은 실시예에서, PMH TT(136)와 같은 모든 필요한 MPT 데이터 구조를 저장하는 히든 메모리 영역(138)은 소프트웨어(예를 들어, OS)에 보여지지 않고 특히 MPT 엔진(128)에 의해 이용되어 추가 어드레스 인디렉션 계층(즉, 히든 영역(138) 내의 테이블을 사용하는 추가 변환)을 통해 물리적 메모리를 관리한다.
플랫폼이 가상화된 환경에서 실행되고 메모리 어드레스 요청이 게스트 OS(또는 더욱 일반적으로, 게스트 VM)로부터 수신되는 실시예에서, EPT(확장된 페이지 테이블)로 지칭되는 다른 어드레스 변환 테이블을 사용하는 제 2 추가 어드레스 변환이 있다. 구체적으로, 게스트 OS로부터 수신되는 선형 어드레스는 우선 OS 페이지 테이블을 사용하여 표준 페이지 워크를 통해 게스트 물리적 어드레스(GPA)로 변환되고, 그 다음에 게스트 물리적 어드레스는 EPT를 사용함으로써 PPA(플랫폼 물리적 어드레스)로 변환되며, 최종적으로 플랫폼 물리적 어드레스는 PMH TT(136)를 사용함으로써 대응하는 MPA로 변환된다.
MML(Memory management logic)(142)은 CPU(102)에 상주한다. 일부 실시예에서, MML(142)은 코어(104)에서 구현되거나, 코어(104)의 외부(예를 들어, 언코어)에서 구현되거나, 코어 및 언코어에 걸쳐 가능하게 심지어 구현된다. 언코어는 일반적으로 실제로 코어에 있지 않는 CPU 내의 로직/회로를 지칭한다. 예를 들어, 주어진 CPU 및 다른 CPU의 코어 사이에서 통신을 가능하게 하는 어떤 I/O 회로는 CPU의 언코어에 위치될 수 있다. MML(142)은 PMH-TT(136)와 같은 MPT 데이터 구조를 관리하는데 조력하는 MPT 엔진(128)의 일부이다. 아래에 상세히 논의되는 많은 실시예에서, 메모리 페이지는 어떤 방식으로 지정될 것이고 그 페이지 상에 저장되는 데이터는 다른 페이지로 스왑 아웃될(swapped out) 필요가 있을 수 있다. 이 메모리 페이지 스왑 전송의 관리는 대부분 MML(142)에 의해 취급될 수 있다. 도 1에 도시된 실시예에서, MML(142)은 언코어 내의 하드웨어 회로, 언코어에 저장되는 마이크로코드, 또는 둘 다의 조합을 포함한다. 도시되지 않은 다른 실시예에서, MML(142)을 포함하는 회로 및/또는 마이크로코드는 코어에 상주한다. 또 다른 실시예에서, MML(142)은 코어 및 언코어에 걸쳐있을 수 있다.
더욱이, 일반적으로 MPT 엔진(128)에 의해 관리되는 "마이크로 페이지 테이블"로서 지칭될 수 있는 히든 메모리 영역(138)에 저장되는 추가 데이터 구조뿐만 아니라 PMH-TT(136)가 있다.
도 1은 설명의 용이함을 위해 단일 코어를 구비한 단일 CPU를 갖는 컴퓨터 시스템을 도시하지만, 다른 더 복잡한 실시예가 아래의 도 3에 예시되어 있다. 도 1을 참조하면, CPU(102)는 일반적으로 시스템 보드(즉, 마더보드)에 결합된다. 마더보드는, 도 1에 도시되지 않을지라도, 컴퓨터 시스템 내의 다른 구성요소와 CPU(102)에서 비롯되는 각 외부 전력 및 통신 핀 사이의 접촉을 보장하도록 설계된 소켓을 포함할 수 있다. 이 소켓은 본래 CPU(102)로 통합되는 모든 회로와, 시스템 메모리(예를 들어, 범용 스토리지(140)), I/O 컴플렉스(112), 및 도시되지 않은 다른 추가 구성요소와 같은 구성요소를 통신 결합한다. 많은 예에서, 메모리와 같은 시스템 자원의 할당은 소켓 당 레이아웃에 기초할 수 있다. 따라서, CPU 및 소켓은 다르게 언급되지 않으면, 시스템 설정을 지칭할 때 교환가능하게 이용될 수 있다.
마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 다른 실시예는 도 2 및 도 3에 도시되어 있다.
도 2는 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 추가 실시예를 도시한다.
도 2에 예시된 컴퓨터 시스템은 I/O 컴플렉스 및 I/O 컴플렉스로 통합되는 회로가 CPU(102)로부터 분리되는 외부 I/O 컴플렉스(200)인 것을 제외하고는 도 1에 도시된 컴퓨터 시스템과 유사하다. 많은 실시예에서, I/O 가상화 로직(202) 및 I/O 어댑터(204)는 둘 다 개별 I/O 컴플렉스(200)로 통합된다. 이 구성요소의 기능성은 단지 컴퓨터 시스템 내의 상이한 위치에서, I/O 컴플렉스(112), I/O 어댑터(118) 및 I/O 가상화 로직(126)에 관하여 도 1에서 상술한 것과 동일할 수 있다. 도 1 및 도 2에 도시되지 않은 또 다른 실시예에서, I/O 컴플렉스(200)는 CPU(102) 다이 상에서 부분적으로 구현될 수 있고 CPU(102) 외부에서 부분적으로 구현될 수 있다.
도 3은 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 다른 실시예를 도시한다.
도 1 및 도 2에 예시된 컴퓨터 시스템은 단일 코어를 갖는 단일 CPU를 도시하는 것에 한정된다. 기재한 바와 같이, 이것은 예시적 목적을 위해 수행된다. 많은 실시예에서, 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템은 많은 코어 및 많은 CPU를 갖는 컴퓨터일 수 있다. 예를 들어, 도 3은 4개의 CPU AO, A1, B0, 및 B1을 갖는 컴퓨터 시스템을 예시한다. CPU AO 및 A1은 노드 A 내에 상주하고 CPU B0 및 B1은 노드 B 내에 상주한다. 모든 4개의 CPU는 고속 인터-CPU 인터페이스(I/F)를 통해 서로 통신한다. 노드 사이에서, 고속 인터페이스는 각 노드에 대한 노드 컨트롤러(노드 컨트롤러 A 및 B)를 통해 라우팅된다.
도 3에 도시된 실시예에서, 각 CPU는 4개의 별개 코어를 포함한다(코어 AOa, AOb, AOc, 및 AOd는 CPU AO 내에 있고; 코어 A1a, A1b, A1c, 및 A1d는 CPU A1 내에 있고; 코어 BOa, BOb, BOc, 및 BOd는 CPU B0 내에 있으며; 코어 B1a, B1b, B1c, 및 B1d는 CPU B1 내에 있음). MPT 엔진에 대한 로직의 적어도 일부는 16 코어 각각 내에 상주한다.
많은 실시예에서, 모든 CPU가 액세스할 수 있는 단일 글로벌 시스템 메모리(300)가 있다. 도시되지 않을지라도, 시스템 메모리(300) 내에 히든 메모리 영역(도 1에서의 138)이 있을 수 있다. 더욱이, 도면의 명확화를 위해 각 CPU(예를 들어, 캐시) 내의 추가 구성요소가 도 3에 도시되지 않는다.
도 4는 페이지 미스 핸들러 태그 테이블의 실시예를 예시한다. 많은 실시예에서, PMH-TT(400)는 물리적 메모리(404) 모두에 각 페이지에 대한 엔트리(402)를 저장한다. 도 4에 도시된 바와 같이, 물리적 메모리(404)는 여러 번 다수의 랭크(랭크 0-7과 같은)로 이루어진다. 각 PMH-TT 엔트리(예를 들어, 402)는 물리적 메모리(404)의 랭크 중 하나에서 특정 페이지를 참조하는 MPA를 포함한다. 일부 실시예에서, 엔트리(402)는 또한 MPA에서 메모리의 현재 상태를 저장하기 위해 상태 정보를 포함한다. 예를 들어, 도 4는 엔트리(402)의 상세의 일부 예를 도시한다. 도 4에서, 상태는 3 비트를 포함하고, 이 비트의 어떤 조합은 더티(dirty), 빅팀(victim), 리클레임(reclaim), 로크(lock), 페칭(fetching), 제로 등의 리스트된 상태와 같은 상이한 상태로 엔트리를 나타낼 수 있다. 많은 이 예시적 상태는 상이하게 집중된 MPT 실시예에 관하여 아래에 더 상세히 설명될 것이다. 다른 실시예에서, 상태는 3 비트가 8 상태를 나타낼 수 있는 간단한 인코딩일 수 있는 것이 아니라, 오히려 상태 각각에 대한 하나 이상의 개별 비트가 있을 수 있다(이 실시예가 도시되지 않을지라도).
도 4에 도시된 페이지 룩업 예시를 참조하면, 어드레스 요청은 MPT 엔진(도 1에서의 128) 로직에 도달한다. 예를 들어, 선형 어드레스는 OS로부터의 어드레스 요청일 수 있다. 플랫폼 상에 어떤 가상화도 없으면, 페이지 워크는 앞서 논의된 PPA(platform physical address)를 생성할 것이다. PPA는 물리적 메모리 내의 위치(예를 들어, 물리적 메모리 페이지 어드레스)를 직접 지칭하는 MPA(micro physical address)를 포함하는 관련된 엔트리를 검색하기 위해 PMH-TT(400)로의 인덱스로서 사용될 수 있다.
한편, 하나 이상의 가상 기계뿐만 아니라 VMM(virtual machine manager)도 포함할 수 있는 플랫폼 상에 가상화의 레벨이 있으면, VMM 유지된 페이지 테이블 세트를 통한 중계 페이지 워크가 추가적으로 취해진다. 구체적으로, 이 실시예에서, OS 유지된 페이지 테이블(406)을 통한 페이지 워크는 선형 어드레스를 공급하는 OS가 실행되고 있는 VM에 알려져 있는 페이지 테이블을 통한 워킹을 지칭한다. 이 경우에, 선형 어드레스 페이지 워크로부터 생성되는 어드레스는 GPA(guest OS physical address)를 지칭한다. GPA는 플랫폼에 존재하는 가능하게 많은 가상 기계 중 하나 상에 실행되는 게스트 OS에 알려져 있지 않은 그 자체의 페이지 테이블 세트를 관리하는 게스트 OS 아래에 VMM 계층이 있기 때문에 PMH-TT로 직접 인덱스되지 않는다. 일반적으로, VMM 페이지 테이블은 EPT(extended page table)로 지칭되고 GPA는 이 때 PMH-TT(400)로 인텍스되는 PPA를 생성하기 위해 EPT를 통한 페이지 워크에 대한 인덱스로서 사용될 것이다. 이 추가 페이지 워크 단계는 일반적으로 가상화된 플랫폼을 다룰 때 표준이다.
어느 하나의 경우에, PPA가 생성되었다면, 그것은 물리적 메모리(404)를 직접 참조하는 MPA를 포함하는 엔트리를 발견하기 위해 PMH-TT(400)로의 인덱스로서 이용된다.
메모리가 상술한 방식으로 모든 소프트웨어에 대해 가상화되는 것을 가능하게 하기 위해, 메모리 및 MPT 엔진를 지원하는 데이터 구조는 초기화될 필요가 있다. 많은 실시예에서, 컴퓨터 시스템의 부팅 동안, BIOS는 시스템에 존재하는 많은 구성요소를 초기화하기 위해 명령 세트를 컴퓨터에 제공한다.
많은 컴퓨터 시스템에서, BIOS의 중요한 양상은 MRC(Memory Reference Code)이다. MRC는 메모리 초기화에 관한 것이고 메모리 컨트롤러의 메모리 설정, 주파수, 타이밍, 구동 및 상세한 동작에 관한 정보를 포함한다. MPT를 지원하기 위해, 컴퓨터 시스템 내의 BIOS는 CPU 소켓 특정 메모리 어드레스 영역을 공개하기 위해 갱신될 수 있다. 이것은 시스템에 존재하는 각 메모리 랭크의 물리적 어드레스 거리 범위를 공개하는 것뿐만 아니라, PMH-TT(400)는 물론 다른 MPT 데이터 구조를 구현하기 위해 모든 소프트웨어로부터 시스템 메모리의 일부(도 1에서의 히든 메모리 영역(130))를 초기에 숨기는 것을 포함할 수 있으며, 이는 아래에 상술될 것이다. 특히 PMH-TT(400)에 대해, 아이덴티티는 초기화 목적을 위해 이용될 수 있다.
많은 실시예에서, PPA에서 MPA로의 맵핑은 전체 연관 맵핑이다. 따라서, 주어진 PPA는 전체 PMH-TT(400) 내의 정확히 하나의 위치로 인덱스될 수 있지만, 그 위치에서의 엔트리는 메모리 내의 어떤 임의의 MPA 위치로 맵핑될 수 있다.
이 추가 인디렉션 레벨은 하드웨어에 숨겨지므로 플랫폼 상에서 동작하는 게스트 OS, VM, VMM, 하이퍼바이저, 또는 잠재적으로 임의의 다른 소프트웨어 구성은 추가 변환 계층을 완전히 인식할 수 없다. 다시 말하면, 소프트웨어 관점에서, PPA는 메모리의 페이지를 인덱스하는 실제 물리적 어드레스인 것으로 생각된다. 그 대신에, PMH-TT(400)가 구현될 때, MPA는 메모리로의 순수 물리적 어드레스이다. 추가 인디렉션 계층은 소프트웨어 솔루션에 한정될 때 다르게 상당히 덜 효율적이거나 가능하게 달성할 수 없는 많은 응용을 허용할 수 있다.
마이크로 페이지 테이블 랭크 쉐딩( Rank Shedding )
도 5는 랭크 쉐딩을 위해 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 실시예를 예시한다.
랭크 쉐딩은 메모리의 랭크가 사용 시에 우선 순위가 결정될 수 있도록 허용하는 것을 포함한다. 랭크 우선 순위 결정이 구현될 수 있는 다수의 이유가 있다. 예를 들어, 많은 실시예에서, 그것은 컴퓨터 시스템 내의 모든 시스템 메모리 랭크를 동시에 이용하기 위해 항상 전력 관점에서 효율적인 것은 아니다. 예를 들어, 서버에서, 이용가능한 많은 메모리 랭크가 있을 수 있지만, 서버는 현재 사용되고 있지 않거나 적어도 높게 사용되고 있지 않을 수 있다. 이 시나리오에서, 서버 상에 존재하는 워크로드는 시스템 내의 메모리 랭크 서브세트가 사용되면 성능 저하를 나타낼 수 없다. 따라서, 다른 것을 통해 어떤 랭크의 사용을 우선화시키는 것이 달성될 수 있고, 낮은 사용 기간에, 메모리 서브시스템에 존재하는 어떤 낮은 우선 순위 랭크는 이 때 능동적 사용으로부터 중지될 수 있다. 능동적 사용으로부터 랭크를 중지하는 것은 메모리 서브시스템 전력 관리 방식이 미사용된 랭크를 일정 시간 길이 동안 저전력 상태에 두는 것을 가능하게 함으로써, 전체 컴퓨터 시스템의 전력 소비를 낮출 수 있다.
다른 실시예에서, 인터리브된 메모리 액세스 아키텍처는 NUMA 아키텍처 대신에 존재한다. 따라서, 일반적으로 메모리의 구성에 관한 어떤 제한이 없고 구성은 구현에 따라 변할 것이다. 예를 들어, 일부 실시예에서, 단일 DIMM을 공유하는 다수의 CPU가 있을 수 있다. 다른 실시예에서, 각 CPU에 사용되는 다수의 DIMM이 있을 수 있다. 또 다른 실시예에서, DIMM의 수와 CPU의 수 사이에 1 대 1 상관이 있을 수 있다.
도 5를 참조하면, 랭크 쉐딩을 구현하는 멀티 CPU 소켓 컴퓨터 시스템의 실시예가 도시되어 있다.
CPU A(500)는 포인트 투 포인트 링크(504)에 걸쳐 CPU B(502)에 결합된다. CPU A(500)는 또한 메모리 A(506)에 직접 결합되고 (링크(504) 및 CPU B(502)를 통해) 메모리 B(508)에 간접 결합된다. CPU B(502)는 메모리 B(508)에 직접 결합되고 (링크(504) 및 CPU A(500)를 통해) 메모리 A(504)에 간접 결합된다. 워크로드에 대한 메모리를 이용할 때, 그것은 일반적으로 CPU A(500)가 메모리 A(506)를 이용하기로 했다면 및 CPU B(502)가 메모리 B(508)를 이용하기로 했다면 더 효율적이다. 이것은 UMA 환경 내의 CPU 당 메모리의 집약성으로 인한 것이다. 따라서, 많은 실시예에서, CPU A는 메모리 A(506)에 위치되는 메모리 랭크의 사용을 우선시킬 수 있고 CPU B는 메모리 B(508)에 위치되는 메모리 랭크의 사용을 우선시킬 수 있다.
많은 실시예에서, 랭크 쉐딩은 CPU 당(이것은 각 CPU가 그 자체의 소켓에 의해 시스템 보드에 결합되므로 "소켓 당"으로 지칭될 수도 있는) 랭크의 우선 순위 결정을 구현하는데 조력할 수 있다. 소켓 당 랭크의 우선 순위 결정은 그 CPU에 의해 사용되는 랭크를 동적으로 우선시키기 위해 각 CPU에서 MPT 엔진을 사용함으로써 달성된다. MPA 어드레스 공간은 모든 소켓에 걸쳐있다. 따라서, 모든 소켓이 보이는 어드레스 공간의 범위는 동일하지만, 어드레스 공간의 상이한 부분은 소켓 당 우선될 수 있다.
예를 들어, 도 5에 도시된 2개의 소켓 시스템에서, CPU A는 그 아래에 도시된 바와 같이 CPU A/소켓 1 MPA 어드레스 공간을 갖는다. 이것은 어드레스 0에서 어드레스 2 기가바이트(GB)-1까지, 소켓 1의 하부 NUMA 영역이 소켓 1의 핫 영역에 있는 것을 나타낸다. CPU B는 어드레스 2GB 내지 4GB-1, 소켓 2의 하부 NUMA 영역이 소켓 2의 핫 영역에 있는 것을 나타내는 CPU B/소켓 2 MPA 어드레스 공간을 갖는다.
구체적으로, 메모리의 첫번째 4GB는 하부 NUMA 영역이다. 첫번째 2개의 기가바이트는 소켓 1에 맵핑되고 두번째 2개의 기가바이트는 소켓 2에 맵핑된다. 도 5에 도시된 실시예에서, 4GB보다 위에 추가 어드레스 공간이 있다. 어드레스 공간의 동일한 분할을 위해, 상부 NUMA 영역은 모든 소켓 사이에서 같게 분할될 수 있다. 더욱이, 상부 NUMA 영역은 ToM(Top of memory) 마이너스 하부 NUMA 영역의 상단(예를 들어, 4GB)과 같을 것이다. 도 5에 도시된 실시예에서, 16GB의 전체 어드레스 공간이 있고 하부 NUMA 영역은 4GB이다. 따라서, 상단 12GB(16GB-4GB)는 상부 NUMA 영역에 있다. 그 다음, 12GB는 2개의 소켓 사이에서 상부 NUMA 영역을 배분하기 위해 2로 나누어지므로, 각 소켓은 6GB의 어드레스 가능 상부 NUMA 영역 어드레스 공간을 갖는다. 그러므로, 소켓 1은 4GB로부터 1OGB-1까지 어드레스 공간을 할당받을 수 있고 소켓 2는 10GB로부터 이 예에서 16GB-1인 메모리의 상단까지 어드레스를 할당받을 수 있다.
핫 및 콜드 영역의 사이즈는 사용 조건에 기초하여 시간에 따라 다를 수 있다. 도 5에 도시된 예에서, 메모리의 스냅숏이 이루어질 때, 핫 영역은 전체 어드레스 공간의 1/2을 포함하고 콜드 영역은 다른 1/2을 포함한다. 따라서, 소켓 1에 대한 상부 NUMA 영역은 핫 영역에 어드레스 4GB 내지 6GB-1을 갖고 콜드 영역에 6GB 내지 1OGB-1을 가지며 소켓 2는 핫 영역에 어드레스 10GB 내지 12GB-1을 갖고 콜드 영역에 12GB 내지 16GB-1을 갖는다. 각 NUMA 영역의 사이즈, 메모리의 사이즈, 및 소켓의 수는 상이한 실시예에서 변경될 수 있는 것이 인식되어야 한다.
추가적으로, 메모리의 핫 및 콜드 영역이 잠재적으로 동적으로 조정가능할 수 있으므로, 각 소켓의 핫 및 콜드 영역의 사이즈는 또한 가변적일 수 있다. 각 소켓에 대한 핫 및 콜드 영역이 있을지라도, 소켓 당 사이즈의 가변성은 대칭 또는 비대칭일 수 있다. 예를 들어, 어떤 상황에서, 각 소켓에 대한 핫 및 콜드 영역의 사이즈는 항상 소켓에 걸쳐 동일하다. 따라서, 핫 영역이 어드레스 가능 메모리의 25% 내지 50% 확장되면, 이 변경은 동시에 모든 소켓에 대해 수행될 수 있다(소켓에 걸쳐 대칭 처리). 한편, 다른 상황에서, 각 소켓에 대한 핫 및 콜드 영역의 사이즈는 개별적으로 유지된다(소켓에 걸쳐 비대칭 처리). 예를 들어, 소켓 1이 헤비 워크로드를 갖고 소켓 2가 라이트 워크로드를 가지면, 소켓 1의 핫 영역은 소켓 2의 어드레스 가능 메모리 공간에 대한 각 핫 영역보다 높은 비율의 소켓 1의 어드레스 가능 메모리 공간에 걸쳐있을 수 있다.
일반적으로, PMH-TT에 대한 아이덴티니 맵은 메모리 어드레스 공간의 핫 영역에 저장되고, PMH-TT를 포함하는 MPT 데이터 구조 자신은 또한 메모리 어드레스 공간의 핫 영역에 저장된다. 많은 실시예에서, 데이터 구조는 도 5에 도시된 바와 같이 2개의 소켓 각각에 대한 핫 영역에 걸쳐있다.
도 6은 랭크 쉐딩을 위해 적어도 부분적으로 이용되는 마이크로 페이지 테이블을 구현하는 컴퓨터 시스템의 실시예를 예시한다. 도 6 내의 컴퓨터 시스템은 도 1에 예시된 컴퓨터 시스템과 유사하다. 모든 주요 구성요소는 유사한 방식으로 이용되고 상술한 설명에서 참조될 수 있다. 도 6은 시스템 메모리(110)에 랭크 쉐딩 구현 특정 파티션을 추가한다. 활성 메모리(600) 파티션 및 비활성 메모리(602) 파티션이 도시되어 있다. 활성 메모리(600) 파티션은 CPU(102)에 의해 현재 이용되는 그의 메모리 랭크(즉, 어드레스 공간의 핫 영역)를 포함한다. 반면에, 비활성 메모리(602) 파티션은 CPU(102)에 의해 현재 이용되지 않는 그의 메모리 랭크(즉, 어드레스 공간의 콜드 영역)를 포함한다.
더 많은 랭크가 사용될 때, 활성 메모리(600) 파티션이 증가할 것이고, 더 적은 랭크가 사용될 때, 비활성 메모리(602) 파티션이 증가할 것이다. 활성 및 비활성 메모리 부분 사이에서 사이즈의 잠재적인 변경의 정밀도는 구현 특정이다. 예를 들어, 랭크 쉐딩이 전력 관리에 이용되면, 활성 대 비활성 랭크의 변경의 정밀도는 전력을 위해 개별적으로 관리될 수 있는 랭크의 수를 반영할 수 있다. 시스템 메모리에 16 랭크가 있고 이 랭크가 4의 그룹 내의 시스템 보드 상의 파워 플레인에 결합되면, 그것은 임의의 주어진 시간에, 0, 4, 6, 12, 또는 16 랭크가 활성일 수 있고 비활성 랭크에 대해서도 같은 것을 의미할 수 있다. 한편, 시스템 메모리 내에 전원의 미세한 정밀도가 있으면, 더 많은 선택권이 있을 수 있다. 각 랭크가 개별 전력으로 제어될 수 있으면, 이 때 활성 대 비활성 메모리 부분의 16개의 상이한 조합이 있을 수 있다.
단일 모듈(예를 들어, DIMM)을 통해 시스템 보드에 결합되는 모든 메모리가 그룹으로서 전력 관리되는 것을 가능하게 하는 메모리 모듈에 기초하여 정밀도에 초점이 맞추어지는 것이 가능해질 수도 있다.
한편, 활성 및 비활성 랭크는 NUMA 기반 시스템의 성능에 기초하여 CPU 당 관리될 수 있다. 예를 들어, 도 5를 참조하면, 2개의 CPU 시스템에서, 메모리 A(506)는 CPU A(500)에 근거리이므로, 메모리 A(506)를 나타내는 어드레스 공간은 초기에 CPU A(500)에 대한 활성 메모리로서 지정될 수 있다. 반면에, 메모리 B(508)는 CPU A(500)에 원거리이므로, 메모리 B(508)를 나타내는 어드레스 공간은 초기에 CPU A(500)에 대한 비활성 메모리로서 지정될 수 있다. 워크로드는 CPU A(500)에 대해 증가된 메모리 사용을 필요로 할지라도, 메모리 B(508)는 활성 메모리에 스위치되는 그 목적지의 일부를 가질 수 있다. 이 근거리 메모리 어드레스 공간의 이용은 메모리 B(508)를 활성 메모리로서 사용하고 메모리 A(506) 및 비활성 메모리를 초기에 사용하여 CPU B(502)에도 유효할 수 있다.
이제 도 7을 참조하면, 이 도면은 랭크 쉐딩을 위해 적어도 부분적으로 구현될 때 페이지 미스 핸들러 태그 테이블의 실시예를 예시한다.
초기 입력 선형 어드레스에서 MPA를 획득하는 페이지 워킹 프로세스는 도 4에 설명되고 예시된 프로세스와 유사하다. 프로세스 내의 주요 단계는 유사한 방식으로 완료되고 상기 설명에 참조될 수 있다. 도 5는 추가 랭크 쉐딩 구현 상세를 포함한다.
도 7의 우측에 도시된 물리적 메모리(즉, 랭크 0-7)는 MPA(micro page address) 공간 콜드 영역(500) 및 MPA 공간 핫 영역(502)을 포함한다. 콜드 영역은 비활성 메모리 영역으로 간주될 수 있고 핫 영역은 활성 메모리 영역으로 간주될 수 있다. 따라서, 랭크 0 및 1은 현재 활성이고 랭크 2-7은 현재 비활성이다.
702 상세에 도시된 상태 정보에 이용되는 하나의 가능한 상태는 "콜드(cold)" 비트이다. 이 비트는 PMH-TT(704) 내의 각 엔트리에 대해, 그 엔트리가 MPA 공간의 콜드 영역 또는 MPA 공간의 핫 영역으로 인덱스되는지를 지시할 수 있다. 시스템의 초기화 동안, 콜드 영역 내의 랭크에 대응하는 PMH-TT(704) 내의 각 엔트리는 콜드 비트(예를 들어, 콜드 비트 = "1")를 사용하여 cMPA(cold MPA)로서 초기에 설정될 수 있다. 그리고, 엔트리의 나머지는 핫 비트(예를 들어, 콜드 비트 = "0" 또는 현재 비트 = "1")로서 설정될 수 있다.
시스템이 우선 부트될 때, 그 랭크(및 그것이 포함하는 모든 MPA 엔트리)가 전체 시스템 메모리의 콜드 영역 또는 핫 영역 내에 있는지에 관하여 각 랭크에 대한 초기 상태가 있을 수 있다. 사용 패턴이 동작(예를 들어, 헤비 메모리 워크로드, 라이트 메모리 워크로드, 아이들 등) 동안 메모리에 대해 변경될 때, MPT 엔진 로직은 메모리의 핫 영역(702)을 축소 또는 확대하기로 결정할 수 있다. 따라서, 메모리의 핫 및 콜드 영역은 시스템 동작 동안 동적으로 조정가능할 수 있다. 이것은 성능 정책(즉, 성능이 저하될 때, 핫 영역이 보상되도록 확대되는) 또는 전력 정책(시스템 아이들 동안 더 많은 랭크가 메모리 서브시스템의 적어도 일부에 대한 저전력 모드의 잠재적 사용을 위해 콜드 영역 추가되는)에 잠재적으로 기초할 수 있다. 이 시나리오 외에도, 메모리의 랭크를 쉐딩하는 많은 다른 잠재적 사용이 있다.
핫 및 콜드 MPA 변환은 시스템이 가상화를 사용하고 있는지와 아무 관련이 없고 추가 GPA→PPA 페이지 워크 단계를 필요로 한다. 도면은 단지 단일 예의 예시적 목적을 위해 그런 식으로 구체적으로 도시된다.
많은 실시예에서, 핫 페이지 변환만이 TLB에 저장된다. 따라서, 메모리의 콜드 영역에 있는 MPA 어드레스에서 물리적 페이지에 액세스하는 요청이 있을 때, 랭크 쉐딩 미스가 발생한다. 핫 페이지가 특히 CPU 또는 다른 버스 마스터 장치에 의해 범용 액세스에 이용되기 때문에, 요청된 페이지에 저장되는 데이터는 이 때 메모리의 콜드 페이지에서 핫 페이지로 이동된다. 많은 실시예에서, 메모리의 핫 영역은 콜드 페이지로부터의 데이터가 액세스될 필요가 있을 때 데이터 스왑에 이용되는 프리 메모리 페이지로서 전체 핫 공간의 어떤 비율을 적어도 항상 유지한다. 이 프리 핫 페이지의 비율은 전체 핫 페이지(예를 들어, 하나의 프리 핫 페이지)의 매우 작은 비율로부터 핫 페이지의 전체 범위의 상당한 비율(예를 들어, 핫 페이지의 전체 수의 10%가 프리인)까지의 범위에 있을 수 있다.
도 8은 핫 페이지 미스를 취급하는데 사용되는 프로세스의 실시예의 흐름도이고 도 9는 핫 페이지 미스에 반응할 때 MPT 엔진에 의해 이용되는 추가 마이크로 페이지 테이블 데이터 구조의 일부의 실시예를 예시한다. 명확히 하기 위해, 핫 페이지 미스는 간단히 메모리의 콜드 영역에 있는 물리적 페이지에 대한 메모리 페이지 요청이다. 도 8은 도 9와 관련된다. 구체적으로, 도 8에 예시된 프로세스는 도 9에 도시된 도시된 데이터 구조를 이용함으로써 MPT 엔진 로직이 핫 페이지 미스를 어떻게 취급하는지를 도시한다. 도 8에 예시된 프로세스는 MPT 엔진과 관련되는 처리 조직에 의해 수행될 수 있다. 이 처리 로직은 하드웨어, 소프트웨어, 펌웨어, 또는 그 로직의 3개의 형태의 임의의 조합을 포함할 수 있다. 더욱이, 도 8 및 도 9에 걸쳐, 문자(예를 들어, A, B, C 등)로 지정되는 작은 원이 있다. 이 문자 지정 원은 어떤 데이터 구조에 관하여 중요한 아이템이고 데이터 전송은 도 8에서의 블록마다의 프로세스 흐름을 수행하고 있는 동안 처리 조직에 의해 이용된다.
이제 도 8을 참조하면, 프로세스는 수신된 메모리 요청이 TLB에 있지 않는 메모리의 페이지를 타겟팅하는지를 판단하는 처리 로직에 의해 시작한다(처리 블록 800). 상술한 바와 같이, TLB는, 많은 실시예에서, 콜드 페이지 변환을 저장하지 않고, 따라서 TLB 히트가 있었다면, 이 실시예에서 요청된 메모리 페이지가 이미 메모리의 핫 영역 내에 상주하는 것은 고유의 것이다. TLB 히트가 있으면, 이 때 이 프로세스는 처리 로직이 핫 페이지 미스를 다루지 않으므로 완료된다. 처리 블록 800은 처리 블록 802가 요청된 메모리 페이지가 핫 또는 콜드 영역에 있는지를 판단할지라도, 처리 블록 802는 TLB 히트가 없었다면 필요하지 않은 추가 룩업 시간을 요구하기 때문에 이용된다.
프로세스(TLB 미스가 있는 것을 가정하는)를 계속하면, 다음 처리 로직은 PMH-TT(도 9에서의900) 내의 페이지와 연관되는 상태 정보를 체크함으로써 요청된 메모리 페이지가 핫 또는 콜드 영역에 있는지를 특히 판단한다(처리 블록 802). 이 판단은 PMH-TT(900) 내에 메모리의 물리적 페이지의 룩업을 필요로 한다. 룩업은 상기 도 7에 상세히 설명되어 있다. 구체적으로, 처리 로직은 특정 엔트리를 발견하기 위해 PMH-TT(900)로 인덱스되는 메모리 페이지 요청의 PPA를 이용한다.
특정 엔트리는 MPA뿐만 아니라 그 특정 메모리 페이지에 대한 상태 정보도 포함한다. 일부 실시예에서, 상태 정보는 P 비트가 설정되면(P=1) 메모리 페이지가 핫 영역에 있는 것을 지시하거나 P 비트가 요청된 메모리 페이지의 PPA를 사용하여 제거되면(P=0) 메모리 페이지가 콜드 영역에 있는 것을 지시할 수 있는 현재 비트(P)를 포함한다. 많은 다른 실시예에서, 콜드 비트(C)가 추가적으로 이용되며, 이는 C 비트가 설정되면(C=1) 메모리 페이지가 콜드 영역에 있는 것을 지시하거나 C 비트가 제거되면(C=0) 메모리 페이지가 핫 영역에 있는 것을 지시할 수 있다. 예를 들어, 도 8의 프로세스에 도시된 바와 같이, 처리 로직은 P=0인지를 판단한다. 처리 로직은 PPA 인덱스 위치(아이템 A)에서 PMH-TT(900) 내를 주시함으로써 이것을 결정한다.
P 비트가 제거되면(P=0), 이 때 처리 로직은 PPA 인덱스 위치에서 PMH-TT(900)를 로크(lock)한다(처리 블록 804). PMH-TT(900)는 처리 로직이 콜드 투 핫 메모리 페이지 전송을 개시하는 것을 가능하게 하기 위해 로크될 필요가 있다. PMH-TT(900)가 PPA 인덱스 위치에서 로크되지 않으면, 콜드 투 핫 전이의 손상은 예를 들어 유사한 액세스를 동시에 시도하는 다른 엔티티로 인해 일어날 수 있다. 많은 실시예에서, 로크는 PMH-TT(900) 내의 PPA 인덱스 위치(아이템 B)에서의 상태 정보 비트를 "페칭"(F=1)에 설정함으로써 달성될 수 있다.
그 다음, 처리 로직은 PMH-TT(900)로부터 cMPA를 페치한다(처리 블록 806). [많은 실시예에서, 이 페칭 절차는 cMPA 메모리 위치(아이템 C)로부터 데이터를 페치한다. 데이터는 일시적 저장을 위해 버퍼 로직 내에 배치될 수 있다.] 다음에, 처리 로직은 cMPA 물리적 메모리 페이지 어드레스를 콜드 프리 리스트로 로드한다(처리 블록 808). 다시 말하면, PMH-TT(900) 내의 cMPA 어드레스는 도 9에서의 데이터 전송 D에 의해 예시되는 콜드 프리 리스트 데이터 구조(도 9에서의 902)에 카피된다. 콜드 프리 리스트는 메모리의 콜드 영역에 있었던 물리적 메모리 페이지 어드레스를 저장하지만 메모리 요청의 타겟이었고 따라서 페이지 내의 데이터는 핫 메모리 영역 페이지에 전송을 필요로 했다. 콜드 영역 페이지가 더 이상 데이터를 계속해서 유지하기 위해 필요하지 않으면(데이터의 카피가 버퍼로 카피되었기 때문에), 이 때 메모리의 콜드 페이지는 덮여쓰여지도록 비워지므로 그의 어드레스는 콜드 프리 리스트로 배치된다.
그 다음, 처리 로직은 핫 프리 리스트 데이터 구조(도 9에서의 904)로부터 프리 hMPA 물리적 메모리 페이지 어드레스(도 9에서의 아이템 E)를 페치한다(처리 블록 810). 핫 프리 리스트는 이 프로세스를 위해 기록되는데 이용가능한 핫 영역 메모리 페이지를 포함한다. 도 10 및 도 11은 핫 프리 리스트(904)가 어떻게 거주되는지를 아래에 설명한다. 그 다음, 처리 로직은 cMPA 메모리 페이지에서 hMPA 메모리 페이지(처리 블록 812 및 도 9에서의 아이템 F)로 카피한다. 콜드 투 핫 메모리 페이지 데이터 전송이 발생했다면, 이 때 처리 로직은 PMH-TT(900)(처리 블록 814 및 도 9에서의 아이템 G)를 갱신 및 언로크한다.
많은 실시예에서, PMH-TT(900)는 페이지를 언로크 및 갱신하기 위해 상태 정보 세트를 hMPA 어드레스에서의 메모리 페이지에 대한 현재 (P=1) 및 페칭되지 않은 (F=0)로 갱신한다. 추가적으로, 이 프로세스 전에, hMPA 어드레스에서의 이 핫 영역 메모리 페이지는 그것이 콜드 투 핫 전송에 사용되는데 이용가능하기 때문에 핫 프리 리스트에 있었지만, 이제 그것이 전송에 사용되었기 때문에, 페이지는 사용 중에 있고 더 이상 프리가 아니다. 따라서, 처리 로직은 핫 프리 리스트(904)로부터 hMPA 어드레스를 제거한다.
이제 도 10 및 도 11을 참조하면, 도 10은 콜드 투 핫 메모리 페이지 데이터 전송 동안 핫 페이지로서 이용되는 능력을 다수의 메모리 페이지에 제공하기 위해 유지 프로세스의 실시예의 흐름도이며, 도 11은 유지 프로세스 동안 MPT 엔진에 의해 이용되는 추가 마이크로 페이지 테이블 데이터 구조의 일부의 실시예를 예시한다. 도 10은 도 11과 관련된다. 구체적으로, 도 10에 예시된 프로세스는 도 11에 도시된 데이터 구조를 이용함으로써 MPT 엔진 로직이 유지 방법을 통해 어떻게 진행하는지를 나타낸다. 도 10에 예시된 프로세스는 MPT 엔진과 관련되는 처리 로직에 의해 수행될 수 있다. 이 처리 로직은 하드웨어, 소프트웨어, 펌웨어, 또는 그 로직의 3개의 형태의 임의의 조합을 포함할 수 있다. 더욱이, 도 8 및 도 9와 유사하게, 도 10 및 도 11에 걸쳐 문자(예를 들어, A, B, C 등)로 지정되는 작은 원이 있다. 이 문자 지정 원은 어떤 데이터 구조에 관하여 중요한 아이템이고 데이터 전송은 도 10에서의 블록마다의 프로세스를 수행하고 있는 동안 처리 로직에 의해 이용된다.
도 10에서의 프로세스는 핫 페이지 미스 상에서 LDT(local descriptor table)에 대한 hMPA를 할당하는 처리 로직에 의해 시작한다(처리 블록 1000 및 아이템 A). LDT(도 11에서의 1102)는 PMH TT(도 11에서의 1100)에 엔트리 서브세트를 포함한다. LDT 내의 특정 엔트리 서브세트는 실제로 사용(즉, "현재" 또는 "핫" 비트가 설정되는) 중에 있는 것이다. 일반적으로, LDT(1102)는 로직에 대한 퀵 룩업이 엔트리가 존재하는지를 판단하는 것을 가능하게 한다. LDT(1102) 없이, PMH TT는 PMH TT에서, 모든 메모리 어드레스 공간 위치가 참조되기 때문에 본 엔트리가 존재하는지를 판단하기 위해 탐색될 필요가 있을 것이며, 많은 실시예에서, 대부분의 PMH TT 엔트리는 비어 있을 것이다(즉, "현재" 또는 "핫" 비트가 제거됨). 핫 페이지 미스는, 상기 도 8 및 도 9에 상세히 설명된 바와 같이 태그테이블 룩업으로부터의 MPA 어드레스가 PMH-TT 내의 PPA 인덱스 위치에서 상태 정보(및/또는 C=1) 내의 P=0로 발견되면 결정된다(도 10 및 도 11 둘 다에서의 처리 블록 1000 및 아이템 A). PMH-TT(도 11에서의 1100) 내의 핫 페이지에서 콜드 페이지로의 전이에 지정되는 hMPA에서의 데이터는 도 8 및 도 9에 관하여 상술한 핫 페이지 미스 상에 할당될 수 있다. LDT(도 11에서의 1102)는 MPA 어드레스를 사용하여 인덱스된다. 구체적으로, 할당된 hMPA는 PPA를 발견하기 위해 LDT(1102)로의 인덱스로서 사용된다. 따라서, PMH-TT(1100)가 물리적 MPA 어드레스를 저장하고 PPA 어드레스를 사용하여 인덱스될지라도, LDT(1102)는 그것이 PPA 어드레스를 저정하고 물리적 MPA 어드레스를 사용하여 인덱스되기 때문에 반대이다.
상이한 실시예에서, LDT(1102) 내의 슬롯의 할당은 각 핫 페이지 미스 상에 또는 어떤 수의 핫 페이지 미스 후에 즉시 할당되는 여러슬롯과 같은 다른 방식으로 발생할 수 있다. 어떤 시간에 PPA 메모리 위치가 LDT(1102)에 저장된 후에, MPT 엔진 처리 로직은 희생을 위해 LDT(1102)에서 하나 이상의 PPA 메모리 위치를 선택할 것이다(도 10 및 도 11에서의 처리 블록 1002 및 아이템 B). 랭크 쉐딩 희생은 메모리의 핫 페이지에 저장되는 데이터를 메모리의 콜드 페이지로 이동시키는 프로세스이므로 메모리의 핫 페이지는 장래의 필요한 콜드 투 핫 페이지 전송을 위해 비워질 수 있다.
희생을 위한 선택 프로세스는 여러실시예 중 하나일 수 있다. 예를 들어, MPT 엔진 처리 로직은 각 핫 페이지가 CPU 또는 다른 엔티티에 의해 그 데이터에 기초하여 액세스되었는지 얼마나 되었는지를 추적할 수 있으며, 빅팀은 가장 긴 시간 동안 비활성이었던 그 핫 페이지를 포함할 수 있다. 다른 예에서, MPT 엔진 처리 로직은 데이터의 집약성을 추적하고, 활성적으로 이용되고 있을 뿐만 아니라 상대적으로 인접한 물리적 메모리 페이지 위치에서 함께 클러스터되는 핫 페이지에서 데이터를 유지하고, 핫 페이지 클러스터 근방에 없는 다른 핫 페이지를 희생시킬 수 있다. 논의되지 않을지라도, 많은 다른 타입의 희생 알고리즘은 MPT 엔진 처리 로직에 의해 수행될 수 있다.
많은 실시예에서, LDT(1102) 슬롯은 페이지의 상태 정보 빅팀 비트를 V=1에 설정하는 처리 로직에 의해 희생을 위해 선택된다. V가 "1"에 설정될 때, 어느 하나의 것은 hMPA를 저장을 위한 빅팀 리스트(1104) 구조에 전송하기 위해 로직을 프롬프트할 수 있거나 처리 로직은 다른 수단에 의해 빅팀 리스트(1104)에 전송을 개시하고 전송이 완료된 후에 빅팀 비트를 "1"로 변경할 수 있다. 빅팀 리스트(1104)는 핫 투 콜드 영역 전이를 위해 지정되는 빅팀 물리적 메모리 페이지 어드레스 세트를 저장하기 위해 사용된다. 빅팀으로서 지정될지라도, MPT 엔진 처리 로직은 빅팀 비트(V=0)를 제거하고 리클레임 비트(R=1)를 PMH-TT(1100)에서 설정하고 페이지에 대한 빅팀 리스트(1104)를 삭제함으로써 빅팀 리스트(1104)에서 임의의 주어진 빅팀 페이지를 리클레임할 수 있다. 빅팀 페이지를 리클레임하는 프로세스는 현재 TLB 내의 변환을 사용하여 활성 페이지에 CPU 또는 I/O DMA 액세스를 가능하게 한다. 이것은 페이지가 TLB 미스 룩업 프로세스를 겪지 않고 클레임되는 것을 가능하게 한다.
빅팀은 장소가 있기만 하면 및/또는 이용가능한 충분한 수의 프리 핫 페이지가 있기만 하면 빅팀 리스트(1104)에 위치할 수 있다. 어떤 점에서, 빅팀 리스트(1104)는 리스트 내의 빅팀의 수가 임계값을 넘거나 프리 핫 페이지의 수가 다른 임계값을 하회할 정도로 될 수 있다. 이 임계값 중 하나가 통과되었다면, MPT 엔진 처리 로직은 이 때 콜드 공간에 대한 상당한 수의 빅팀 페이지 데이터 전송을 처리할 수 있다. 이 핫 투 콜드 데이터 전송은 핫 영역 메모리 페이지 내의 데이터가 우선 콜드 영역 메모리 페이지 내의 데이터에 전송되어야 하기 때문에 그 핫 영역 메모리 페이지가 "프리(free)"로 간주될 수 있기 전에 수행된다.
따라서, 도 10을 참조하면, MPT 엔진 처리 로직은 메모리의 콜드 영역으로의 데이터 전송 이동을 위해 빅팀 리스트(1104)로부터 하나 이상의 빅팀을 선택할 것이다(처리 블록 1004 및 도 11에서의 데이터 전송 아이템 C). TLB 셧다운은 엔트리를 빅팀 리스트(1104)에서 더티 리스트(1106)로 이동시킬 때 필요하다. 따라서, 그것은 시스템이 TLB 셧다운 프로세스로 인해 느려지는 시간을 제한하기 위해 TLB 셧다운이 각 페이지에 대한 것보다 오히려 페이지 그룹을 함께 처리하면 일반적으로 더 효율적이다. TLB 셧다운은 영향을 받은 TLB 룩업 변환을 플러시(flush)하기 위해 인터프로세서 인터럽트를 필요로 한다. 메모리 페이지에 대한 TLB 셧다운 후에, 빅팀 리스트(1104) 내의 그 MPA 물리적 메모리 페이지에 대한 엔트리는 더티 리스트(1106)로 전송될 수 있다. 이 전송은 또한 빅팀 비트(V=0)를 제거하고 더티 비트(D=1)를 설정하기 위해 각 엔트리에 대한 상태 정보를 수정하는 것을 수반한다. 상기 논의된 바와 같이, 많은 실시예에서, 핫 페이지 변환만이 TLB에 캐시되고, 따라서 hMPA에서 cMPA로의 핫 투 콜드 영역 데이터 전송이 TLB 셧다운을 필요로 할지라도, 콜드 투 핫 이동은 TLB 셧다운을 필요로 하지 않는다.
더티 리스트에 저장되는 이 TLB 셧다운 처리된 페이지 엔트리는 CPU 또는 I/O DMA 액세스에 의해 리클레임될 수도 있다. 또한, 리클레임 프로세스는 간단히 더티 리스트에서 페이지 엔트리를 삭제하는 것 및 더티 비트(D=0)를 제거하고 리클레임 비트(R=0)를 설정하기 위해 그 특정 페이지에 대한 PMH-TT(1100) 엔트리를 갱신하는 것을 필요로 한다. 따라서, 빅팀 및 더티 리스트 엔트리 둘 다는 리클레임될 수 있다. 리클레임되는 엔트리는 상태 비트가 갱신되면 그것이 결코 빅팀되지 않는 것처럼 사용될 수 있는 엔트리를 지칭한다.
주어진 시간에, 더티 리스트(1106) 내의 각 엔트리는 hMPA 메모리 페이지 위치에서 선택된 프리 cMPA 메모리 페이지 위치로 카피되는 그의 데이터를 콜드 프리 리스트(1108)로부터 가질 필요가 있다(처리 블록 1006 및 도 11에서의 아이템 D). 상술한 바와 같이, 이것은 hMPA 페이지가 장래의 사용을 위해 비워지는 것을 가능하게 하기 위해 프리 cMPA 페이지에서 hMPA 페이지에 저장된 데이터의 카피를 생성한다. 메모리의 콜드 영역으로의 데이터 전송이 발생하면, 이 때 처리 로직은 새로운 cMPA 정보를 사용하여 PMH-TT(1100)를 갱신한다(처리 블록 1008 및 도 11에서의 아이템 E). PMH-TT(1100) 갱신은 이용된 cMPA의 인덱스를 카피된 hMPA의 PPA 인덱스에 설정하기 위해 LDT(1102)를 이용한다. 이것은 본래 PMH-TT(1100) 엔트리를 리맵핑하므로 PPA 어드레스의 룩업은 이제 오래된 hMPA를 지적하는 것보다는 오히려 데이터의 카피를 이제 갖는 이용된 cMPA를 이제 지적할 것이다.
최종적으로, MPT 엔진 처리 로직은 이 때 hMPA 정보를 사용하여 핫 프리 리스트(1110)를 갱신할 것이다(처리 블록 1010 및 도 11에서의 아이템 F). hMPA 어드레스에서 메모리 페이지에 저장된 데이터가 이제 새로운 cMPA 페이지에 안전하게 저장된 상태에서, hMPA 페이지는 프리 핫 메모리 영역 페이지로서 사용되도록 이제 비워진다. 따라서, hMPA 엔트리는 이러한 이유로 핫 프리 리스트(1110)에 저장된다. 핫 프리 리스트(1110) 페이지는 더 이상 TLB에 있지 않다. 이것은 핫 프리 리스트로부터 그랩(grab)되는 요구된 핫 페이지가 추가 TLB 셧다운을 필요로 하지 않기 때문에 TLB 셧다운의 수의 감소를 허용한다. 오히려, TLB 셧다운 프로세스는 큰 페이지 엔트리 그룹이 단일 셧다운 동안 처리될 수 있는 경우에 빅팀 및 더티 리스트 사이에서 발생한다.
리클레임 비트 특징은, 상기 논의된 바와 같이, 그 비트 세트를 갖는 빅팀 및 더티 리스트 페이지 엔트리를 폐기하는 것을 가능하게 한다. 카피 프로세스 블록(블록 1006 및 도 11에서의 아이템 D)은 리클레임된 페이지를 카피하지 않는다. 일부 실시예에서, MPT 엔진은 카프 프로세스 블록에서 리클레임되는 페이지를 폐기한다. 다른 실시예에서, 리클레임된 페이지는 리클레임이 발생한 후에 빅팀 및 더티 리스트로부터 삭제된다.
PMH-TT가 글로벌 구조일지라도, 일반적으로 도 9 및 도 11에 도시된 다른 구조는 소켓마다 배치된다. 그러므로, 일반적으로, 주요 메모리는 소켓마다 할당되며 히든 메모리 영역(도 1에서의 138)은 글로벌 PMH-TT 및 로컬 추가 구조(예를 들어, LDT, 빅팀 리스트, 핫 프리 리스트 등)를 포함할 것이다. 일부 실시예에서, 컴퓨터 시스템은 시스템 내의 CPU 중 하나에 대한 메모리 저장 영역 중 하나 내의 어떤 위치에 단일 글로벌 PMH-TT를 저장한다. 다른 실시예에서, 글로벌 PMH-TT의 로컬 카피는 CPU 당 각 히든 메모리 영역에 저장되고 PMH-TT의 그 로컬 카피를 갱신하기 위해 CPU 사이에 송신된 갱신 메시지를 브로드캐스트하므로 모든 카피는 시스템 동작에 걸쳐 동일하게 존속하지만, 이것은 비공통적일 수 있다. 일반적으로, PMH-TT는 시스템 내의 코어/소켓 사이에서 분할되어 PMH-TT 액세스는 소켓에 근거리인 메모리 및 다른 소켓 상의 메모리를 히트하는 같은 확률을 갖는다.
엔트리를 한쪽 리스트에서 다른 쪽 리스트로 이동시키는 시간은 하나 이상의 임계값에 의해 지시될 수 있다. 도 12(a)-도 12(d)는 사용(즉 메모리 페이지 하우스키핑(memory page housekeeping))을 위해 메모리 페이지를 복구할 때를 판단하기 위해 처리 로직이 사용할 수 있는 흐름도의 여러실시예를 예시한다. 각 프로세스는 하드웨어, 소프트웨어, 펌웨어, 또는 그 로직의 3개의 형태 중 어느 하나의 조합일 수 있는 처리 조직에 의해 수행될 수 있다. 이 도면 각각에서, 언급된 "임계값(threshold)"은 피크 성능을 유지하기 위해 사용되는 최적 임계값을 결정하는 테스팅 절차를 부트 전에 이용하는지에 관하여 임의의 주어진 시간에 또는 임계값이 현재 워크로드에 기초하여 증가 또는 감소될 필요가 있을 수 있는지를 판단하는 알고리즘 분석을 이용하여 런타임에 결정될 수 있는 값이다. 일부 실시예에서, 모든 임계값 테스트가 이용되는 것은 아니며, 오히려 임계값 테스트 서브세트가 이용된다(예를 들어, 하나 이상).
도 12(a), 도 12(b), 도 12(c), 및 도 12(d) 사이의 본 "임계값(threshold)" 각각 뿐만 아니라, 임의의 다른 묘사되지 않은 임계값 확률은 서로 유사 또는 상이한 값일 수 있다. MPT 엔진 유지된 리스트 데이터 구조의 하우스키핑 부분에 대한 많은 상이한 임계값이 이용될 수 있으며 각 임계값은 구현 특정적이다. 도 12(a)-도 12(d)는 임계값이 MPT 엔진에 관하여 어떻게 이용될 수 있는지의 어떤 예를 간단히 제공한다. 논의된 많은 실시예에서, "하나 이상의(one or more)" 엔트리가 카피/이동된다. 실제로, 여러 번 카피/이동되는 리스트 엔트리의 수는 리스트 내의 엔트리의 전체 수이다(즉, 리스트은 전적으로 플러시됨). 다른 실시예에서, 블록에서 카피/이동되는 리스트 엔트리의 설정 최대 수가 있으며 엔트리의 전체 수가 최대를 초과하면, 이 때 임의의 단일 프로세스에 대해 즉시 카피/이동되도록 허용된 최대 수가 이용되고 하나 이상의 사후 프로세스는 임의의 나머지 리스트 엔트리를 처리하기 위해 사용될 수 있다.
도 12(a)는 빅팀 리스트가 하우스키핑을 시작하기 위해 임계값에 도달했을 때를 판단하는 프로세스의 실시예를 예시한다. 많은 실시예에서, MPT 엔진 처리 로직은 빅팀 리스트 내의 엔트리의 전체 수가 고임계값에 도달했는지를 판단한다(처리 블록 1200). 이것이 사실인 것으로 판단되면, 이 때 처리 로직은 메모리의 콜드 영역으로의 이동을 위해 빅팀 리스트에서 하나 이상의 엔트리를 선택한다(처리 블록 1202). 그 다음, 처리 로직은 선택된 엔트리 상에서 TLB 셧다운을 수행하여(처리 블록 1204) 이 하우스키핑 프로세스가 완료된다.
도 12(b)는 더티 리스트가 하우스키핑을 시작하기 위해 고임계값에 도달했을 때를 판단하는 프로세스의 실시예를 예시한다. 많은 실시예에서, MPT 엔진 처리 로직은 더티 리스트 내의 엔트리의 전체 수가 고임계값에 도달했는지를 판단한다(처리 블록 1206). 이것이 사실인 것으로 판단되면, 이 때 처리 로직은 하나 이상의 더티 리스트 엔트리를 메모리의 핫 영역에서 메모리의 콜드 영역으로 카피하여(처리 블록 1208) 프로세스가 완료된다.
도 12(c)는 핫 프리 리스트가 하우스키핑을 시작하기 위해 저임계값에 도달했을 때를 판단하는 프로세스의 실시예를 예시한다. 많은 실시예에서, MPT 엔진 처리 로직은 핫 프리 리스트 내의 엔트리의 전체 수가 최소 임계 요구 값을 하회하는 수까지 감소되었는지를 판단한다(처리 블록 1210). 이것이 사실인 것으로 판단되면, 이 때 처리 로직은 희생에 대한 LDT로부터 하나 이상의 엔트리를 선택한다(처리 블록 1212). 희생 선택은 도 10에 관하여 위에서 상세히 설명된 프로세스를 시작한다. 도 12(c)를 참조하면, 하나 이상의 엔트리가 선택되었다면, 이 때 처리 로직은 선택된 엔트리를 빅팀 리스트로 카피한다(처리 블록 1214).
많은 실시예에서, 핫 프리 리스트가 그것에 충분한 엔트리를 갖지 않으면, 빅팀은 우선 도 12(c) 프로세스로부터 수집된 다음에, 그것이 수집되면, 처리 로직은 빅팀을 핫 프리 리스트로 이동시키기 위해 빅팀 상에서 도 12(a)의 프로세스를 수행한다.
최종적으로, 도 12(d)는 핫 프리 리스트가 하우스키핑을 시작하기 위해 저임계값에 도달했을 때를 판단하는 프로세스의 다른 실시예를 예시한다. 도 12(c)에서와 같이, 도 12(d)에서의 MPT 엔진 처리 로직은 핫 프리 리스트 내의 엔트리의 전체 수가 최소 임계 요구 값을 하회하는 수까지 감소되었는지를 판단한다(처리 블록 1216). 이것이 사실인 것으로 판단되면, 이 때 처리 로직은 하나 이상의 더티 리스트 엔트리를 메모리의 핫 영역에서 메모리의 콜드 영역으로 카피하여(처리 블록 1218) 프로세스가 종료된다. 임의의 경우에, TLB 셧다운은 이 카피된 엔트리가 핫 프리 리스트에서 재사용될 수 있기 전에 필요하다.
2-레벨 메모리
마이크로 페이지 테이블 엔진은 2LM(two-level memory) 메모리 서브시스템을 구현하기 위해 이용될 수도 있다. 도 13은 컴퓨터 시스템 내의 마이크로 페이지 테이블 관리된 2레벨 메모리 서브시스템의 실시예를 도시한다.
도 13에 예시된 컴퓨터 시스템은 도 1에 도시된 컴퓨터 시스템과 유사하며, 많은 구성요소는 유사한 기능성을 제공한다. 이 도면의 다른 버전에 도시된 I/O 서브시스템과 같은 어떤 요소는 명확화를 위해 도 13에 구체적으로 도시되지 않는다. 도시되지 않을지라도, 도 1 및 도 2에 도시된 것과 유사한 I/O 서브시스템은 일반적으로 도 13에 도시된 시스템에서 구현될 것이다.
많은 실시예에서, 개별 메모리 컨트롤러, 메모리 컨트롤러 B(1300)는 컴퓨터 시스템(100)에 상주한다. 메모리 컨트롤러 B(1300)는 고속 I/O 인터페이스(122)를 통해 CPU(102)에 결합되거나 메모리 컨트롤러 B는 개별 칩으로서라기 보다는 오히려 CPU 다이에서 구현될 수 있었지만, 이 실시예는 예시되지 않는다. 고속 I/O 인터페이스는 PCI-익스프레스, QPI 등과 같은 여러타입의 인터커넥트 중 하나일 수 있다. 메모리 컨트롤러 B(1300)는 차례로 메모리 B(1302)와 같은 제 2 메모리를 통해 제어를 제공한다. 메모리 B(1302)는 메모리 A(110)와 상이한 타입의 메모리일 수 있다. 예를 들어, 메모리 A(110)가 DRAM의 형태를 포함할 수 있을지라도, 메모리 B(1302)는 비휘발성 메모리의 형태를 포함할 수 있다. 상이한 실시예에서, 메모리 B(1302)는 그 중에서 PCM(phase change memory), 다른 형태의 비휘발성 메모리, 또는 표준 DRAM이나 저전력 DRAM일 수 있다.
많은 실시예에서, 범용 저장 영역 B(1304)를 포함하는 메모리 B(1302)는 컴퓨터 시스템(100) 내의 주요 메모리로 간주될 수 있으며, 여기서 범용 저장 영역 A(140)를 포함하는 메모리 A(110)는 DRAM 캐시로서 구현될 수 있다. DRAM을 포함하고 많은 실시예에서 많은 기가바이트의 저장 공간을 포함하는 캐시는 컴퓨터 시스템(100)의 정규 동작 동안 대부분의 기록을 흡수할 수 있다. 메모리 B가 비휘발성 메모리인 실시예에서, 이 흡수 효과는 비휘발성 메모리 B(1302)의 마모를 최소화하는데 도움이 되며, 이는 PCM 또는 다른 형태의 NVM의 제한된 기록 수명의 효과를 최소화할 뿐만 아니라 이 타입의 메모리에 긴 기록 레이턴시를 숨기는데 도움이 된다.
MPT 엔진을 사용하는 2LM의 구현은 일반적으로 앞서 상세히 설명된 바와 같이 랭크 쉐딩과 유사한 방식으로 될 것이다. 특히, MPT 엔진(128)은 범용 저장 A(140)에 맵핑하기 위해 메모리 공간의 핫 영역을 설정하고 범용 저장 B(1304)에 맵핑하기 위해 메모리 공간의 콜드 영역을 설정할 수 있다. 따라서, 많은 실시예에서, 범용 저장 A는 핫 영역이고 범용 저장 B는 콜드 영역이다. 메모리 액세스에서 콜드 영역으로의 데이터는 메모리 페이지 전송 스왑을 사용하여 핫 영역으로 들어간다.
메모리 요청이 TLB에 있지 않는 것으로 판정되고 또한 페이지 워크 룩업 프로세스 후에 메모리(범용 저장 A(140))의 핫 영역에 존재하지 않는 것으로 판정되면, MML(142)은 이 때 메모리 컨트롤러 B(1300)로 가서 범용 저장 B(1304) 내의 페이지에 액세스를 요청할 수 있다.
도 8 및 도 9에서 상술한 표준 핫 페이지 미스 프로세스는 단지 메모리의 콜드 영역에 대한 제 2 메모리 컨트롤러 및 제 2 메모리를 이용하는 도 13 구현에 재적용된다. 추가적으로, 메모리의 핫 및 콜드 페이지를 스왑하는 하우스키핑이 또한 전체적으로 적용된다. 많은 2LM 실시예에서, MML(142)에 의해 실행되는 추가 프로세스가 있다. 마모 레벨링 알고리즘은 메모리 B(1302)가 비휘발성일 때 MML(142) 내의 로직으로 통합될 수 있다. 활동이 거의 없는 기간 동안, MPT 엔진(128)의 MML(142) 부분은 메모리 B(1302)의 모두를 포함하는 PCM 장치 사이에서 마모를 균일하게 배분하기 위해 메모리 컨트롤러 B(1300)에게 메모리 B(1302) 내에 저장된 데이터의 일부를 재배분하라고 명령할 수 있다.
도 14는 PCM-특정 메모리 서브시스템의 실시예를 도시한다. 메모리 B(1302)는 x16 PCM 장치 구성에 도시되어 있다. 도시되지 않은 많은 다른 실시예에서, PCM 장치는 액세스 시간의 상대적으로 작은 증가 지연을 사용하여 저장을 더욱 증가시키기 위해 높아지는 적층된 여러장치일 수 있다. 메모리 B 컨트롤러(1300)는 링크(1400)에 의해 CPU에 결합된다. 요청은 CPU 내의 로직으로부터 컨트롤러로 들어간다. 메모리 B 컨트롤러(1300)는 메모리 B(1302) 내의 통합된 링크 1502(즉, 버스)와 결합되는 여러DMA 유닛(유닛 1-N)을 포함할 수 있다. DMA 유닛은 요청을 메모리 B(1302)에 송신하고 데이터를 다시 수신하는 협력 관계로 작동할 수 있다. 그 다음, 이 데이터는 링크(1400)를 통해 CPU에 다시 송신된다.
본 발명의 실시예의 요소는 기계 실행 가능 명령어를 저장하는 기계 판독 가능 매체로서 제공될 수도 있다. 기계 판독 가능 매체는 플래시 메모리, 광 디스크, 콤팩트 디스크 판독 전용 메모리(CD-ROM), 디지털 다기능/비디오 디스크(DVD) ROM, 랜덤 액세스 메모리(RAM), 소거 가능 프로그래머블 판독 전용 메모리(EPROM), 전기적으로 소거 가능 프로그래머블 판독 전용 메모리(EEPROM), 자기 또는 광 카드, 전파 매체 또는 전자 명령어를 저장하기에 적절한 다른 타입의 기계 판독 가능 매체를 포함할 수 있지만, 이에 한정되지 않는다.
상기 설명 및 청구범위에서, 그 파생어와 함께 용어 "포함한다(include)" 및 "포함한다(comprise)"가 사용될 수 있으며, 서로에 대한 동의어로서 취급되도록 의도된다. 게다가, 이하의 설명 및 청구범위에서, 그 파생어와 함께 용어 "결합된(coupled)" 및 "연결된(connected)"이 사용될 수 있다. 이 용어는 서로에 대한 동의어로서 의도되지 않는다는 점이 이해되어야 한다. 오히려, 특정 실시예에서, "연결된(connected)"은 2개 이상의 요소가 서로 직접적인 물리적 또는 전기적 접촉을 하고 있는 것을 지시하기 위해 사용될 수 있다. "결합된(coupled)"은 2개 이상의 요소가 직접적인 물리적 또는 전기적 접촉을 하고 있는 것을 의미할 수 있다. 그러나, "결합된(coupled)"은 또한 2개 이상의 요소가 서로 직접적인 접촉을 하고 있지 않지만 서로 여전히 협력하거나, 상호작용하거나, 통신하는 것을 의미할 수 있다.
상기 설명에서, 어떤 전문용어가 본 발명의 실시예를 설명하기 위해 사용된다. 예를 들어, 용어 "로직(logic)"은 하나 이상의 기능을 수행하는 하드웨어, 펌웨어, 소프트웨어(또는 그의 임의의 조합)를 나타낸다. 예를 들어, "하드웨어(hardware)"의 예는 집적 회로, 유한 상태 기계, 또는 심지어 조합 로직을 포함하지만, 이에 한정되지 않는다. 집적 회로는 마이크로프로세서, 주문형 반도체, 디지털 신호 프로세서, 마이크로컨트롤러 등과 같은 프로세서의 형태를 취할 수 있다.
본 명세서 전체에 걸쳐 "일 실시예(one embodiment)" 또는 "하나의 실시예(an embodiment)"에 대한 언급은 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 일 실시예에 포함되는 것을 의미한다는 점이 이해되어야 한다. 그러므로, 본 명세서의 여러 부분에서 "하나의 실시예" 또는 "일 실시예" 또는 "대안적 실시예(an alternative embodiment)"에 대한 2개 이상의 언급이 모두 반드시 동일한 실시예를 언급하지 않는다는 점이 강조되며 이해되어야 한다. 더욱이, 특정 특징, 구조 또는 특성은 본 발명의 하나 이상의 실시예에 적절하게 결합될 수 있다.
유사하게, 본 발명의 실시예의 이전 설명에서, 하나 이상의 각종 발명의 양상의 이해를 돕기 위한 개시를 간소화하기 위해 각종 특징이 때때로 단일 실시예, 도면, 또는 그의 설명에서 함께 그룹화된다는 점이 이해되어야 한다. 그러나, 이 개시 방법은 청구된 발명 대상이 각 청구항에 명백하게 열거된 것보다 더 많은 특징을 필요로 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 다음의 청구범위가 반영하는 것처럼, 발명의 양상은 이전에 개시된 단일 실시예의 모든 특징보다 더 적게 되어 있다. 따라서, 상세한 설명에 이어지는 청구범위는 이에 의해 본 상세한 설명에 명백하게 포함된다.

Claims (25)

  1. 글로벌 메모리 어드레스 공간 내의 페이지에 대한 메모리 페이지 요청을 수신하는 로직과,
    하나 이상의 메모리 페이지 어드레스 변환을 저장하는 변환 색인 버퍼(translation lookaside buffer(TLB))와,
    상기 변환 색인 버퍼가 상기 메모리 페이지 요청에 의해 참조되는 메모리의 상기 페이지에 대한 상기 메모리 페이지 어드레스 변환을 저장하지 않는 것에 응답하여 페이지 미스 핸들러 태그 테이블에서 마이크로 물리적 어드레스 룩업을 수행하는 페이지 미스 핸들러 로직과,
    상기 페이지 미스 핸들러 태그 테이블에서 엔트리를 관리하는 메모리 관리 로직을 포함하는
    마이크로 페이지 테이블 엔진 장치.
  2. 제 1 항에 있어서,
    상기 페이지 미스 핸들러 태그 테이블은 마이크로 페이지 테이블 엔진에 의해 액세스 가능한 시스템 메모리의 히든(hidden) 영역에 위치되는
    마이크로 페이지 테이블 엔진 장치.
  3. 제 2 항에 있어서,
    상기 페이지 미스 핸들러 태그 테이블은 전체 연관이며 상기 시스템 메모리의 복수의 페이지에 대한 개별 엔트리를 갖는
    마이크로 페이지 테이블 엔진 장치.
  4. 제 3 항에 있어서,
    마이크로 물리적 어드레스 공간은 콜드 영역 및 핫 영역으로 분할되는
    마이크로 페이지 테이블 엔진 장치.
  5. 제 4 항에 있어서,
    상기 메모리 관리 로직은 데이터를 상기 핫 영역 내의 제 1 메모리 페이지에서 상기 콜드 영역 내의 제 2 메모리 페이지로 전송함으로써 상기 제 1 메모리 페이지를 비우도록(free) 동작가능한
    마이크로 페이지 테이블 엔진 장치.
  6. 제 5 항에 있어서,
    상기 수신된 메모리 요청이 상기 콜드 영역 내의 제 3 메모리 페이지를 타겟팅하는 것에 응답하여 데이터를 상기 콜드 영역 내의 제 3 메모리 페이지에서 상기 핫 영역 내의 상기 제 1 메모리 페이지로 전송하는 로직을 더 포함하는
    마이크로 페이지 테이블 엔진 장치.
  7. 제 6 항에 있어서,
    상기 마이크로 물리적 어드레스 공간은 물리적 메모리의 2개의 부분, 즉 물리적 메모리 A 및 물리적 메모리 B에 걸쳐있으며, 상기 물리적 메모리 A의 마이크로 물리적 어드레스 공간은 상기 핫 영역을 포함하며 상기 물리적 메모리 B의 마이크로 물리적 어드레스 공간은 상기 콜드 영역을 포함하는
    마이크로 페이지 테이블 엔진 장치.
  8. 제 3 항에 있어서,
    상기 마이크로 물리적 어드레스 공간은 복수의 프로세서 사이에 공유되는 마이크로 물리적 어드레스 공간의 공유된 부분, 및 마이크로 물리적 어드레스 공간의 복수의 공유되지 않은 부분을 포함하며, 상기 복수의 프로세서 각각은 상기 공유되지 않은 부분 중 하나를 수신하는
    마이크로 페이지 테이블 엔진 장치.
  9. 글로벌 메모리 어드레스 공간 내의 페이지에 대한 메모리 페이지 요청을 수신하는 단계와,
    변환 색인 버퍼(TLB)에 하나 이상의 메모리 페이지 어드레스 변환을 저장하는 단계와,
    상기 변환 색인 버퍼가 상기 메모리 페이지 요청에 의해 참조되는 메모리의 상기 페이지에 대한 상기 메모리 페이지 어드레스 변환을 저장하지 않는 것에 응답하여 페이지 미스 핸들러 태그 테이블에서 마이크로 물리적 어드레스 룩업을 수행하는 단계와,
    상기 페이지 미스 핸들러 태그 테이블에서 엔트리를 관리하는 단계를 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 페이지 미스 핸들러 태그 테이블은 마이크로 페이지 테이블 엔진에 의해 액세스 가능한 시스템 메모리의 히든 영역에 위치되는
    방법.
  11. 제 10 항에 있어서,
    상기 페이지 미스 핸들러 태그 테이블은 전체 연관되며 상기 시스템 메모리의 모든 페이지에 대한 개별 엔트리를 갖는
    방법.
  12. 제 11 항에 있어서,
    마이크로 물리적 어드레스 공간은 콜드 영역 및 핫 영역으로 분할되는
    방법.
  13. 제 12 항에 있어서,
    데이터를 상기 핫 영역 내의 상기 제 1 메모리 페이지에서 상기 콜드 영역 내의 제 2 메모리 페이지로 전송함으로써 제 1 메모리 페이지를 비우는 단계를 더 포함하는
    방법.
  14. 제 13 항에 있어서,
    상기 수신된 메모리 요청이 상기 콜드 영역 내의 제 3 메모리 페이지를 타겟팅하는 것에 응답하여 데이터를 상기 콜드 영역 내의 제 3 메모리 페이지에서 상기 핫 영역 내의 제 1 메모리 페이지로 전송하는 단계를 더 포함하는
    방법.
  15. 제 14 항에 있어서,
    상기 마이크로 물리적 어드레스 공간은 물리적 메모리의 2개의 부분, 즉 물리적 메모리 A 및 물리적 메모리 B에 걸쳐있고, 물리적 메모리 A 및 물리적 메모리 B는 상이한 메모리 기술을 포함하며, 상기 물리적 메모리 A의 마이크로 물리적 어드레스 공간은 상기 핫 영역을 포함하며 상기 물리적 메모리 B의 마이크로 물리적 어드레스 공간은 상기 콜드 영역을 포함하는
    방법.
  16. 제 11 항에 있어서,
    상기 마이크로 물리적 어드레스 공간은 복수의 프로세서 사이에서 공유되는 마이크로 물리적 어드레스 공간의 공유된 부분, 및 마이크로 물리적 어드레스 공간의 복수의 공유되지 않은 부분을 포함하며, 상기 복수의 프로세서 각각은 상기 공유되지 않은 부분 중 하나를 수신하는
    방법.
  17. 명령어를 저장한 기계 판독 가능 매체로서,
    상기 명령어는 기계에 의해 실행될 때 상기 기계로 하여금
    글로벌 메모리 어드레스 공간 내의 페이지에 대한 메모리 페이지 요청을 수신하는 단계와,
    변환 색인 버퍼(TLB)에 하나 이상의 메모리 페이지 어드레스 변환을 저장하는 단계와,
    상기 변환 색인 버퍼가 상기 메모리 페이지 요청에 의해 참조되는 메모리의 상기 페이지에 대한 상기 메모리 페이지 어드레스 변환을 저장하지 않는 것에 응답하여 페이지 미스 핸들러 태그 테이블에서 마이크로 물리적 어드레스 룩업을 수행하는 단계와,
    상기 페이지 미스 핸들러 태그 테이블에서 엔트리를 관리하는 단계를 포함하는 방법을 수행하도록 하는
    기계 판독 가능 매체.
  18. 제 17 항에 있어서,
    상기 페이지 미스 핸들러 태그 테이블은 상기 마이크로 페이지 테이블 엔진에 의해 액세스 가능한 시스템 메모리의 히든 영역에 위치되는
    기계 판독 가능 매체.
  19. 제 18 항에 있어서,
    상기 페이지 미스 핸들러 태그 테이블은 전체 연관되며 상기 시스템 메모리의 모든 페이지에 대한 개별 엔트리를 갖는
    기계 판독 가능 매체.
  20. 제 19 항에 있어서,
    마이크로 물리적 어드레스 공간은 콜드 영역 및 핫 영역으로 분할되는
    기계 판독 가능 매체.
  21. 제 20 항에 있어서,
    상기 방법은
    데이터를 상기 핫 영역 내의 제 1 메모리 페이지에서 상기 콜드 영역 내의 제 2 메모리 페이지로 전송함으로써 상기 제 1 메모리 페이지를 비우는 단계를 더 포함하는
    기계 판독 가능 매체.
  22. 제 21 항에 있어서,
    상기 방법은
    상기 수신된 메모리 요청이 상기 콜드 영역 내의 제 3 메모리 페이지를 타겟팅하는 것에 응답하여 데이터를 상기 콜드 영역 내의 제 3 메모리 페이지에서 상기 핫 영역 내의 제 1 메모리 페이지로 전송하는 단계를 더 포함하는
    기계 판독 가능 매체.
  23. 제 22 항에 있어서,
    상기 마이크로 물리적 어드레스 공간은 물리적 메모리의 2개의 부분, 즉 물리적 메모리 A 및 물리적 메모리 B에 걸쳐있으며, 상기 물리적 메모리 A 및 상기 물리적 메모리 B는 상이한 메모리 기술을 포함하고, 상기 물리적 메모리 A의 마이크로 물리적 어드레스 공간은 상기 핫 영역을 포함하며 상기 물리적 메모리 B의 마이크로 물리적 어드레스 공간은 상기 콜드 영역을 포함하는
    기계 판독 가능 매체.
  24. 제 19 항에 있어서,
    상기 마이크로 물리적 어드레스 공간은 복수의 프로세서 사이에서 공유되는 마이크로 물리적 어드레스 공간의 공유된 부분, 및 마이크로 물리적 어드레스 공간의 복수의 공유되지 않은 부분을 포함하며, 상기 복수의 프로세서 각각은 상기 공유되지 않은 부분 중 하나를 수신하는
    기계 판독 가능 매체.
  25. 적어도 페이지 미스 핸들러 태그 테이블을 저장하기 위한 히든 부분을 포함하는 제 1 메모리와,
    제 1 프로세서를 포함하되, 상기 제 1 프로세서는
    글로벌 메모리 어드레스 공간 내의 페이지에 대한 메모리 페이지 요청을 수신하는 로직과,
    하나 이상의 메모리 페이지 어드레스 변환을 저장하는 변환 색인 버퍼(TLB)와,
    상기 변환 색인 버퍼가 상기 메모리 페이지 요청에 의해 참조되는 메모리의 상기 페이지에 대한 상기 메모리 페이지 어드레스 변환을 저장하지 않는 것에 응답하여 페이지 미스 핸들러 태그 테이블에서 마이크로 물리적 어드레스 룩업을 수행하는 페이지 미스 핸들러 로직과,
    상기 페이지 미스 핸들러 태그 테이블에서 엔트리를 관리하는 메모리 관리 로직을 포함하는
    시스템.
KR1020137007415A 2010-09-24 2011-09-26 마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템 KR101457825B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,585 2010-09-24
US12/890,585 US8838935B2 (en) 2010-09-24 2010-09-24 Apparatus, method, and system for implementing micro page tables
PCT/US2011/053306 WO2012040723A2 (en) 2010-09-24 2011-09-26 Apparatus, method, and system for implementing micro page tables

Publications (2)

Publication Number Publication Date
KR20130048261A true KR20130048261A (ko) 2013-05-09
KR101457825B1 KR101457825B1 (ko) 2014-11-04

Family

ID=45871861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137007415A KR101457825B1 (ko) 2010-09-24 2011-09-26 마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템

Country Status (6)

Country Link
US (1) US8838935B2 (ko)
EP (1) EP2619675B1 (ko)
KR (1) KR101457825B1 (ko)
CN (2) CN103119570B (ko)
TW (1) TWI461911B (ko)
WO (1) WO2012040723A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632927B2 (en) 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US9779021B2 (en) 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US9886208B2 (en) 2015-09-25 2018-02-06 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams
US10078582B2 (en) 2014-12-10 2018-09-18 International Business Machines Corporation Non-volatile memory system having an increased effective number of supported heat levels

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032398B2 (en) * 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US20120124269A1 (en) * 2010-11-15 2012-05-17 International Business Machines Corporation Organizing Memory for Effective Memory Power Management
US9235500B2 (en) * 2010-12-07 2016-01-12 Microsoft Technology Licensing, Llc Dynamic memory allocation and relocation to create low power regions
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US9003101B1 (en) * 2011-06-29 2015-04-07 Western Digital Technologies, Inc. Prioritized access for media with heterogeneous access rates
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
WO2013048385A1 (en) 2011-09-28 2013-04-04 Intel Corporation Maximum-likelihood decoder in a memory controller for synchronization
US9378133B2 (en) 2011-09-30 2016-06-28 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
WO2013048491A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
EP3346386B1 (en) 2011-09-30 2020-01-22 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
EP3712774B1 (en) 2011-09-30 2023-02-15 Tahoe Research, Ltd. Apparatus and method for implementing a multi-level memory hierarchy
CN107608910B (zh) 2011-09-30 2021-07-02 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
CN103946813B (zh) 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
CN103946824B (zh) 2011-11-22 2016-08-24 英特尔公司 一种用于非易失性随机访问存储器的访问控制方法、装置及系统
WO2013089685A1 (en) 2011-12-13 2013-06-20 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
WO2013089686A1 (en) 2011-12-13 2013-06-20 Intel Corporation A method and system for providing instant responses to sleep state transitions with non-volatile random access memory
WO2013095385A1 (en) 2011-12-20 2013-06-27 Intel Corporation Apparatus and method for phase change memory drift management
KR101915073B1 (ko) 2011-12-20 2018-11-06 인텔 코포레이션 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단
CN103999067A (zh) 2011-12-21 2014-08-20 英特尔公司 以多个非易失性存储器为特征的高性能存储结构和系统
WO2013095530A1 (en) 2011-12-22 2013-06-27 Intel Corporation Efficient pcms refresh mechanism background
KR101572403B1 (ko) 2011-12-22 2015-11-26 인텔 코포레이션 메모리 채널 셧다운에 의한 전력 절약
WO2013095644A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Page miss handler including wear leveling logic
CN104137084B (zh) 2011-12-28 2017-08-11 英特尔公司 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射
US10002075B1 (en) * 2012-03-13 2018-06-19 Aggregate Knowledge, Inc. Managing memory resources in a network environment in order to handle querying of logical data structures
JP5624583B2 (ja) * 2012-05-31 2014-11-12 株式会社東芝 プログラム、計算処理装置、メモリ管理方法および計算機
KR20140006299A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9152428B2 (en) 2012-09-28 2015-10-06 Intel Corporation Alternative boot path support for utilizing non-volatile memory devices
WO2014059613A1 (zh) 2012-10-17 2014-04-24 华为技术有限公司 降低内存系统功耗的方法和内存控制器
EP3042305A4 (en) * 2013-09-05 2017-04-05 Tidalscale Inc. Selective resource migration
US9645934B2 (en) * 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9297559B2 (en) * 2013-09-25 2016-03-29 Intel Corporation Adaptive thermoelectric cooling in a processor
US9298389B2 (en) 2013-10-28 2016-03-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Operating a memory management controller
US20150261688A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Extended page table for i/o address translation
US9766888B2 (en) * 2014-03-28 2017-09-19 Intel Corporation Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements
CN103902486B (zh) * 2014-04-08 2017-02-22 华为技术有限公司 一种远端直接内存访问实现方法、装置及系统
US10282100B2 (en) * 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US10289423B2 (en) 2014-10-31 2019-05-14 Hewlett Packard Enterprise Development Lp Management controller
JP6460497B2 (ja) * 2014-11-28 2019-01-30 華為技術有限公司Huawei Technologies Co.,Ltd. ファイルアクセス方法およびファイルアクセス装置、ならびに記憶装置
EP3251021B1 (en) * 2015-01-30 2023-07-19 Hewlett Packard Enterprise Development LP Memory network to prioritize processing of a memory access request
US9582430B2 (en) * 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
US10204047B2 (en) 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
US9600417B2 (en) * 2015-04-29 2017-03-21 Google Inc. Data caching
US9715268B2 (en) 2015-05-08 2017-07-25 Microsoft Technology Licensing, Llc Reducing power by vacating subsets of CPUs and memory
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10073659B2 (en) 2015-06-26 2018-09-11 Intel Corporation Power management circuit with per activity weighting and multiple throttle down thresholds
US10387259B2 (en) 2015-06-26 2019-08-20 Intel Corporation Instant restart in non volatile system memory computing systems with embedded programmable data checking
US10108549B2 (en) 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10261901B2 (en) 2015-09-25 2019-04-16 Intel Corporation Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US10185501B2 (en) 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US9792224B2 (en) 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in persistent memory
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
US10095618B2 (en) 2015-11-25 2018-10-09 Intel Corporation Memory card with volatile and non volatile memory space having multiple usage model configurations
US9747041B2 (en) 2015-12-23 2017-08-29 Intel Corporation Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US10057069B2 (en) 2016-02-29 2018-08-21 Red Hat Israel, Ltd. Securing code loading by a guest in a virtual environment
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器
US20170255565A1 (en) * 2016-03-02 2017-09-07 Intel Corporation Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US10007606B2 (en) 2016-03-30 2018-06-26 Intel Corporation Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory
US10185619B2 (en) 2016-03-31 2019-01-22 Intel Corporation Handling of error prone cache line slots of memory side cache of multi-level system memory
WO2017190266A1 (zh) * 2016-05-03 2017-11-09 华为技术有限公司 管理转址旁路缓存的方法和多核处理器
US10120806B2 (en) 2016-06-27 2018-11-06 Intel Corporation Multi-level system memory with near memory scrubbing based on predicted far memory idle time
US10353813B2 (en) 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
US10579421B2 (en) 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
US10915453B2 (en) 2016-12-29 2021-02-09 Intel Corporation Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
US10445261B2 (en) 2016-12-30 2019-10-15 Intel Corporation System memory having point-to-point link that transports compressed traffic
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10496290B1 (en) * 2017-04-11 2019-12-03 EMC IP Holding Company LLC Method and system for window-based churn handling in data cache
US10503658B2 (en) * 2017-04-27 2019-12-10 Advanced Micro Devices, Inc. Page migration with varying granularity
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10304814B2 (en) 2017-06-30 2019-05-28 Intel Corporation I/O layout footprint for multiple 1LM/2LM configurations
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11188467B2 (en) 2017-09-28 2021-11-30 Intel Corporation Multi-level system memory with near memory capable of storing compressed cache lines
US10860244B2 (en) 2017-12-26 2020-12-08 Intel Corporation Method and apparatus for multi-level memory early page demotion
KR20190107504A (ko) * 2018-03-12 2019-09-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US11055228B2 (en) 2019-01-31 2021-07-06 Intel Corporation Caching bypass mechanism for a multi-level memory
CN110413537B (zh) * 2019-07-25 2021-08-24 杭州电子科技大学 一种面向混合固态硬盘的闪存转换层及转换方法
JP2022551627A (ja) * 2019-10-09 2022-12-12 マイクロン テクノロジー,インク. 自己適応型ウェアレベリングの方法及びアルゴリズム
US20210132979A1 (en) * 2019-10-30 2021-05-06 TidalScale, Inc. Goal-directed software-defined numa working set management
CN111666230B (zh) * 2020-05-27 2023-08-01 江苏华创微系统有限公司 在组相联tlb中支持巨页的方法
US20220197829A1 (en) * 2020-12-21 2022-06-23 Intel Corporation High capacity hidden memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US6795907B2 (en) * 2001-06-28 2004-09-21 Hewlett-Packard Development Company, L.P. Relocation table for use in memory management
US7139877B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
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
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US20060184713A1 (en) 2005-02-16 2006-08-17 Hob Gmbh & Co. Kg Method for operating a virtual machine computer system running guest operating systems on a central processing means virtualized by a host system having register stack engine functionality
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7673345B2 (en) 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US8010764B2 (en) 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
US20070061549A1 (en) 2005-09-15 2007-03-15 Kaniyur Narayanan G Method and an apparatus to track address translation in I/O virtualization
JP2008090395A (ja) 2006-09-29 2008-04-17 Hitachi Ltd 計算機システム、演算用ノード及びプログラム
TW200842579A (en) 2007-04-30 2008-11-01 Univ Nat Chiao Tung Asynchronous processing system
US8046559B2 (en) 2008-03-27 2011-10-25 Intel Corporation Memory rank burst scheduling
TWI467369B (zh) * 2008-10-01 2015-01-01 A Data Technology Co Ltd 混合密度記憶體系統及其控制方法
DE102008056843A1 (de) * 2008-11-12 2010-05-20 Frank Maiworm & Dr. Wolfhart Bosien Grundstücks GbR (vertretungsberechtigter Gesellschafter: Dr. Wolfhart Bosien, 01458 Ottendorf-Okrilla) Aufzeichnungsmedium, Verfahren und Vorrichtung zu seiner Herstellung sowie Verfahren zum Schreiben und Lesen von Informationen
US8321645B2 (en) * 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632927B2 (en) 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US10162533B2 (en) 2014-09-25 2018-12-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US10579270B2 (en) 2014-09-25 2020-03-03 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US10078582B2 (en) 2014-12-10 2018-09-18 International Business Machines Corporation Non-volatile memory system having an increased effective number of supported heat levels
US10831651B2 (en) 2014-12-10 2020-11-10 International Business Machines Corporation Non-volatile memory system having an increased effective number of supported heat levels
US9779021B2 (en) 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US10387317B2 (en) 2014-12-19 2019-08-20 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US11036637B2 (en) 2014-12-19 2021-06-15 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US9886208B2 (en) 2015-09-25 2018-02-06 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams
US10613784B2 (en) 2015-09-25 2020-04-07 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams

Also Published As

Publication number Publication date
CN105760312B (zh) 2019-03-15
TWI461911B (zh) 2014-11-21
US20120079232A1 (en) 2012-03-29
WO2012040723A2 (en) 2012-03-29
US8838935B2 (en) 2014-09-16
TW201220046A (en) 2012-05-16
CN105760312A (zh) 2016-07-13
CN103119570B (zh) 2016-04-13
WO2012040723A3 (en) 2012-06-21
EP2619675A2 (en) 2013-07-31
EP2619675B1 (en) 2018-08-22
CN103119570A (zh) 2013-05-22
EP2619675A4 (en) 2014-06-25
KR101457825B1 (ko) 2014-11-04

Similar Documents

Publication Publication Date Title
KR101457825B1 (ko) 마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US10061526B2 (en) Frame buffer access tracking via a sliding window in a unified virtual memory system
US9798487B2 (en) Migrating pages of different sizes between heterogeneous processors
US10445243B2 (en) Fault buffer for resolving page faults in unified virtual memory system
US10409730B2 (en) Microcontroller for memory management unit
US10216413B2 (en) Migration of peer-mapped memory pages
KR20130032402A (ko) 전력-최적화된 인터럽트 전달
US10073644B2 (en) Electronic apparatus including memory modules that can operate in either memory mode or storage mode
US11741015B2 (en) Fault buffer for tracking page faults in unified virtual memory system
KR20230162100A (ko) 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee