KR101379596B1 - Tlb 프리페칭 - Google Patents

Tlb 프리페칭 Download PDF

Info

Publication number
KR101379596B1
KR101379596B1 KR1020127003086A KR20127003086A KR101379596B1 KR 101379596 B1 KR101379596 B1 KR 101379596B1 KR 1020127003086 A KR1020127003086 A KR 1020127003086A KR 20127003086 A KR20127003086 A KR 20127003086A KR 101379596 B1 KR101379596 B1 KR 101379596B1
Authority
KR
South Korea
Prior art keywords
block
tlb
page table
mmu
prefetch
Prior art date
Application number
KR1020127003086A
Other languages
English (en)
Other versions
KR20120037975A (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 KR20120037975A publication Critical patent/KR20120037975A/ko
Application granted granted Critical
Publication of KR101379596B1 publication Critical patent/KR101379596B1/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
    • 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/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • 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/654Look-ahead translation
    • 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/681Multi-level TLB, e.g. microTLB and main TLB
    • 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

Abstract

한 실시예에서, 메모리 관리 유닛(MMU)은 다중 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 보유하도록 구성된다. MMU는 TLB 미스에 응답하여 블럭을 체크하고, 변환이 변환에 대한 메모리 판독을 발생하지 않고 블럭에서 발견되는 경우 블럭으로부터 변환을 제공하도록 구성된다. 일부 실시예에서, MMU는 또한 블럭으로부터의 변환을 사용한 TLB 미스의 이력을 또한 유지하고, 이력에 기초하여 제2 블럭의 프리페치를 발생할 수 있다. 예를 들어, 이력은 가장 최근에 사용된 Q 페이지 테이블 엔트리의 리스트일 수 있고, 이력은 블럭의 끝에 가까운 억세스의 패턴을 나타낼 수 있다. 다른 실시예에서, 이력은 사용된 블럭 내의 페이지 테이블 엔트리의 번호의 카운트를 포함할 수 있다.

Description

TLB 프리페칭{TLB PREFETCHING}
본 발명은 프로세서의 분야에 관한 것으로, 특히 프로세서에서의 메모리 관리 유닛에 관한 것이다.
프로세서는 전형적으로 어드레스 변환을 구현한다. 어드레스 변환이 인에이블링되면, 페치 어드레스 및 로드/저장 어드레스가 유효 또는 가상 어드레스이다. 유효/가상 어드레스는 물리 어드레스(또는 실제 어드레스)에 도달하도록 어드레스 변환 메카니즘을 통해 변환된다. 본 명세서에서 사용되는 물리 어드레스 및 실제 어드레스라는 용어는 동의어로 쓰이게 된다. 물리/실제 어드레스는 메모리를 어드레싱하는데 실제적으로 사용되는 어드레스이다. 유효 어드레스는 명령을 페치하기 위해 발생되는 어드레스(명령의 프로그램 카운터 또는 PC라고도 함), 또는 로드/저장 명령의 어드레스 오퍼랜드로부터 발생된 어드레스이다. 어떤 경우에, 유효 어드레스는 가상 어드레스와 동일하다. 다른 경우에, 가상 어드레스는 유효 어드레스(예를 들어, 유효 어드레스로부터 변환되거나 또는 유효 어드레스에 대한 어떤 선정된 동작을 가함으로써 발생됨)에 기초하여 발생된다. 가상 어드레스는 다음에 물리 어드레스로 변환된다.
어드레스 변환은 다양한 이유로 사용되고 있다. 예를 들어, 어드레스 변환은 컴퓨터 시스템에 포함된 물리 어드레스의 양이 지원할 수 있는 것보다 많은 유효 또는 가상 어드레스 공간을 제공하는데 사용될 수 있다. 보다 느린 보조 저장소(예를 들어, 디스크 저장소)가, 실행되고 있는 프로그램(들)에 의해 필요한 만큼 메모리 안팎으로 페이지를 스와프(swap)하기 위한 페이지 스와프 저장소로서 사용될 수 있다. 또한, 어드레스 변환은 멀티태스킹 환경에서 하나의 태스크의 메모리가 다른 태스크에 의해 억세스/업데이트하는 것을 방지하고, 어느 물리 페이지가 태스크에 할당되는지에 관계없이 각각의 태스크에 자신의 어드레스 공간을 제공하는 데에 사용될 수 있다. 태스크의 전체 메모리 사용량이 메모리 크기를 초과하는 경우, 페이지 스와핑이 메모리 내용을 보유하고 현재 사용중인 페이지에 억세스하는데 다시 사용될 수 있다.
페이지 테이블은 전형적으로 시스템 메모리에 제공되고, 페이지 테이블은 가상-물리 변환 맵핑을 저장한다. 따라서, 어드레스 변환은 페이지 테이블로부터의 변환을 판독하기 위한 하나 이상의 메모리 억세스를 포함한다. 변환 메카니즘을 촉진하기 위해, 많은 프로세서가 변환 룩어사이드(lookaside) 버퍼(TLB)를 구현한다. TLB는 최근에 사용된 변환의 캐시이다. 따라서, 캐시 미스와 같이, TLB에서의 미스는 페이지 테이블로부터 변환 데이터를 페치할 지연(latency)을 추가하는 것과 관련된다. 한 경우에, TLB는 가상 어드레스 범위로 프로그램가능하다. 가상 어드레스 범위에서의 변환 요구에 응답하여, TLB는 변환을 제공할 수 있고 또한 TLB로의 다음 가상 페이지의 변환을 프리페치할 수 있다.
<발명의 개요>
실시예에서, 메모리 관리 유닛(MMU)이 다중 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 보유하도록 구성된다. MMU는 TLB 미스에 응답하여 블럭을 체크하고, 변환이 변환에 대한 메모리 판독을 발생하지 않고 블럭에서 발견되는 경우 블럭으로부터 변환을 제공하도록 구성된다. 일부 실시예에서, MMU는 또한 블럭으로부터 변환을 사용해 왔던 TLB 미스의 이력을 유지할 수 있고, 이 이력에 기초하여 제2 블럭의 프리페치를 발생할 수 있다. 예를 들어, 이력은 사용되었던 가장 최근의 Q 페이지 테이블 엔트리의 위치의 리스트(예를 들어, 블럭 내의 엔트리 수)일 수 있고, 이력은 블럭의 끝에 가까운 억세스의 패턴을 나타낼 수 있다. MMU는 접근되는 끝에 인접한 다음의 연속 블럭에 대한 프리페치를 발생할 수 있다. 다른 실시예에서, 이력은 사용되었던 페이지 테이블 엔트리의 번호의 카운트를 포함하고, 카운트가 블럭 내의 페이지 테이블 엔트리의 총 수에 가까우면, MMU는 프리페치를 발생할 수 있다.
다음의 상세한 설명은 이후 간단히 설명되는 첨부 도면을 참조하여 이루어진다.
도 1은 하나 이상의 메모리 관리 유닛을 포함하는 시스템의 한 실시예의 블럭도.
도 2는 메모리 관리 유닛의 한 실시예의 블럭도.
도 3은 가상 어드레스 공간, 페이지 테이블 엔트리, 및 물리 어드레스 공간의 한 실시예의 블럭도.
도 4는 변환 룩어사이드 버퍼 미스에 응답하는 메모리 관리 유닛의 한 실시예의 동작을 도시한 플로우차트.
도 5는 변환 룩어사이드 버퍼 미스에 응답하는 메모리 관리 유닛의 다른 실시예의 동작을 도시한 플로우차트.
도 6은 도 5에 도시된 플로우차트의 일부의 한 실시예를 도시한 플로우차트.
도 7은 도 5에 도시된 플로우차트의 일부의 다른 실시예를 도시한 플로우차트.
도 8은 레벨 2 캐시 억세스에 대해 도 1에 도시된 시스템의 한 실시예의 동작을 도시한 플로우차트.
도 9는 제어 코드의 한 실시예를 도시한 플로우차트.
도 10은 시스템의 한 실시예의 블럭도.
도 11은 컴퓨터 억세스가능한 저장 매체의 한 실시예의 블럭도.
본 발명이 다양한 수정 및 다른 형태로 가능하지만, 그 특정 실시예가 도면에 예로서 도시되어 있고 본 명세서에 상세히 설명된다. 그러나, 그 도면 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니고, 반대로, 첨부된 특허 청구 범위에 정의된 바와 같은 본 발명의 정신 및 범위에 드는 모든 수정, 등가물, 대체물을 커버하고자 하는 것으로 이해하여야 한다. 본 명세서에 사용된 표제는 단지 구성 목적을 위한 것이지 본 발명의 범위를 제한하려는 의도는 아니다. 본 명세서에서 사용되는 바와 같이, "할 수 있다"("may")는 강제적인 의미(must(해야 한다) 의미)라기 보다 허용하는 의미(즉, 가능성이 있다는 의미)로서 사용된다. 유사하게, 단어, "포함하다(include)", "포함하는(including)", 및 "포함하다(includes)"는 '포함하다'를 의미하고 그것으로 제한되지 않는다.
다양한 유닛들, 회로들, 또는 다른 소자들(components)이 태스크 또는 태스크들을 수행 "하도록 구성된다(configured to)"로서 설명될 수 있다. 이러한 문맥에서, "하도록 구성된다(configured to)"는 동작 중에 태스크 또는 태스크들을 수행하는 "회로를 갖는(having circuitry that)"를 일반적으로 의미하는 구조의 넓은 표현이다. 이와 같이, 유닛/회로/소자는 유닛/회로/소자가 현재 온 상태가 아니더라도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "하도록 구성된다(configured to)"에 대응하는 구조를 형성하는 회로가 하드웨어 회로를 포함할 수 있다. 유사하게, 다양한 유닛/회로/소자는 설명의 편의상 태스크 또는 태스크들을 수행하는 것으로 설명될 수 있다. 이러한 설명은 "하도록 구성된다"라는 구(phrase)를 포함하는 것으로서 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성되는 유닛/회로/소자를 표현하는 것은 그 유닛/회로/소자에 대해 35 U.S.C.§112, 제6항 해석을 시행하는 것으로 표현상 의도되지 않는다.
도 1을 이제 참조하면, 시스템의 한 실시예의 블럭도가 도시된다. 도 1의 실시예에서, 시스템은 각각 메모리 관리 유닛(MMU)(16A-16N), 대응하는 레벨 2(L2) 캐시(12A-12N), 및 멀티-코어 관리 블럭(MCMB)(14A)을 포함하는 하나 이상의 그래픽 프로세싱 유닛(GPU; 10A-10N)을 포함한다. MCMB(14A)는 L2 캐시(12A-12N)에 결합되고, L2 캐시(12A-12N)는 각각의 GPU(10A-10N)에 결합된다. MCMB(14A)는 또한 메인 메모리 시스템(20)에 결합된다. 시스템은 MMU(18A-18M), 대응하는 레벨 2(L2) 캐시(24A-24M), 및 멀티-코어 관리 블럭(MCMB)(14B)를 각각 포함하는 하나 이상의 중앙 처리 장치(CPU)(22A-22M)를 더 포함한다. MCMB(14B)는 L2 캐시(24A-24M)에 결합되고, L2 캐시(24A-24M)는 각각의 CPU(22A-22M)에 결합된다. MCMB(14B)는 또한 메인 메모리 시스템(20)에 결합된다. 문자가 뒤에 붙는 참조 번호로 여기에 참조된 소자들은 동일한 참조 번호와 다른 문자를 갖는 다른 소자들과 유사하다(그러나, 반드시 동일하지 않다). 동일한 참조 번호와 다른 문자를 갖는 소자들은 총체적으로 참조 번호 만으로 참조될 수 있다(예를 들어, GPU(10A-10N)는 총체적으로 GPU(10)으로 참조될 수 있다).
GPU(10A-10N)는 그래픽 조작(예를 들어, 프레임 버퍼로의 화상의 렌더링, 픽셀 조작, 등)을 위해 최적화된 명령 세트 아키텍쳐를 구현할 수 있다. GPU(10A-10N)는 스칼라, 슈퍼스칼라, 파이프라인, 슈퍼파이프라인, 아웃 오브 오더, 인 오더, 스펙큐레이티브(speculative), 난스펙큐레이티브(nonspeculative), 등, 또는 이들의 조합을 포함하는 임의의 마이크로아키텍쳐를 구현할 수 있다. GPU(10A-10N)는 회로를 포함할 수 있고, 선택적으로는 마이크로코딩 기술을 구현할 수 있다. GPU(10A-10N) 각각은 어드레스 변환을 수행하도록 구성된 MMU(16A-16N)를 포함한다. MMU(16)는 캐시 변환을 위한 변환 룩어사이드 버퍼(TLB)를 포함할 수 있고, 이후 더 상세히 기술되는 바와 같이 변환 프리페칭을 구현할 수 있다. MMU(16)에 의해 사용된 변환은 메인 메모리 시스템(20)에 저장된 페이지 테이블(26) 내에 저장될 수 있다. 유사하게, CPU(22A-22M)는 범용 명령 세트 아키텍쳐를 구현할 수 있고 상기 가능성 중 임의의 것을 포함하는 임의의 마이크로아키텍쳐를 구현할 수 있다. CPU(22A-22M)는 이하 기술되는 것과 같은 변환 프리페칭을 또한 구현할 수 있는 MMU(18A-18M)를 구현할 수 있다. 다른 실시예에서는 단지 MMU(16)만이 변환 프리페칭을 구현할 수 있고, 또 다른 실시예에서는 단지 MMU(18)만이 변환 프리페칭을 구현할 수 있다. MMU(18A-18M)에 의해 사용되는 변환은 또한 페이지 테이블(26) 내에 저장될 수 있다. 페이지 테이블(26)은 CPU(22)와 GPU(10)간에 공유될 수 있고, 또는 페이지 테이블(26)은 CPU(22)용과 GPU(10)용의 별도의 데이터 구조를 포함할 수 있다. GPU(10) 및 CPU(22)는 명령을 실행하도록 구성된 임의의 회로일 수 있는 프로세서의 예들일 수 있다. 프로세서는 별도의 집적 회로일 수 있고, 집적 회로 상에 통합된 코어 등일 수 있다. 예를 들어, 도 1에서, GPU(10), L2 캐시(12), 및 MCMB(14A)는 그래픽 칩 상에 통합될 수 있고, CPU(22), L2 캐시(24), 및 MCMB(14B)는 멀티-코어 CPU 칩 상에 통합될 수 있다. 다른 실시예에서, GPU(10), CPU(22), L2 캐시(12 및 24), 및 MCMB(14)는 집적 회로 상에 통합될 수 있다. 일부 실시예에서, 집적 회로는 또한 GPU/CPU 및 관련 회로와 통합된 다른 소자들을 포함할 수 있다.
페이지 테이블(26)은 다중 페이지 테이블 엔트리를 저장할 수 있다. 각각의 페이지 테이블 엔트리는 가상 어드레스 공간의 페이지에 대응할 수 있고, 페이지 내의 어드레스들을 물리 페이지 내의 대응하는 어드레스들에 맵핑할 수 있다. 페이지 크기는 실시예에 따라 변화할 수 있다. 예를 들어, 4 킬로바이트 또는 8 킬로바이트가 사용될 수 있다. 1, 2, 또는 4 메가바이트와 같이 더 큰 페이지 크기또는 심지어 이보다 더 큰 크기가 사용될 수 있다. 어떤 실시예는 한 페이지 크기보다 큰 크기를 지원할 수 있고, 원하는 대로, 동시에 다중 페이지 크기를 지원할 수 있다.
GPU(10) 및 CPU(22)는 L1 캐시(도시 안됨)를 포함할 수 있고, 따라서, 본 실시예에서는 캐시(12 및 24)는 L2 캐시이다. L2 캐시는 임의의 크기 및 구성(예를 들어, 세트 관련, 다이렉트 맵핑, 등)을 가질 수 있다. L2 캐시는 또한 임의의 캐시 블럭 크기(예를 들어, 32 바이트, 또는 64 바이트, 또는 이보다 크거나 작거나)를 구현할 수 있다. 캐시 블럭 크기는 캐시에서의 할당 및 할당 해제의 단위일 수 있다.
MCMB(14)는 일반적으로 대응하는 프로세서와 메인 메모리 시스템(20) 간의 상호접속을 제공할 수 있다. 캐시 코히어런스(coherency)가 구현되면, MCMB(14)는 프로브를 발행하는 것을 담당할 수 있다(예를 들어, 한 프로세서로부터의 요구가 있으면, 다른 프로세서에 대한 프로브가 다른 프로세서의 L1 또는 L2 캐시에서 임의의 수정된 데이터를 얻도록 발생되어, 임의의 업데이트 요구를 위한 캐시된 카피를 무효화시키는 것 등). MCMB는 서로 및/또는 메인 메모리 시스템(20) 내의 메모리 제어기와 통신할 수 있다. 한 실시예에서, 메모리 제어기는 MCMB(14)를 갖는 칩 상에 구현될 수 있고, 및/또는 MCMB(14) 중 하나의 일부일 수 있다. 일부 실시예에서, MCMB(14)는 MCMB(14)와 결합된 L2 캐시(12 또는 24)에 의해 공유될 수 있는 레벨 3(L3) 캐시를 또한 구현할 수 있다.
메인 메모리 시스템(20)은 임의의 타입의 메모리를 포함할 수 있다. 예를 들어, 메모리는 다이너믹 랜덤 억세스 메모리(DRAM), 동기 DRAM(SDRAM), 이배속(DDR, DDR2, DDR3, 등) SDRAM(mDDR3와 같은 SDRAM의 모바일 버젼을 포함함), RAMBUS DRAM(RDRAM), 스태틱 RAM(SRAM), 등을 포함할 수 있다. 앞서 언급된 바와 같이, 메인 메모리 시스템(20)은 메모리 제어기도 포함할 수 있다.
다양한 실시예에서 각 소자의 수는 변화할 수 있다는 것이 주목한다. 예를 들어, 하나 이상의 GPU(10A-10N)가 제공될 수 있고, 하나 이상의 CPU(22A-22M)이 제공될 수 있다. 다른 실시예에서, GPU 및/또는 CPU가 없을 수 있다. 10N 및 22M으로 표시된 바와 같이, 한 프로세서의 수는 다른 프로세서의 수와 다를 수 있다. L2 캐시(12 및 24)는 각각의 프로세서와 연관되는 것으로 도 1에 도시되어 있지만,다른 실시예에서는 프로세서의 서브세트에 의해 공유될 수 있다. 또 다른 실시예에서는, L2 캐시가 없을 수 있다.
이제 도 2를 참조하면, MMU(16A)의 한 실시예의 블럭도가 도시된다. 다른 MMU(16) 및/또는 MMU(18)는 유사할 수 있다. 도 2의 실시예에서, MMU(16A)는 TLB(30), 테이블 워크 유닛(32), 및 프리페치 버퍼(34)를 포함한다. 테이블 워크 유닛(32)은 TLB(30) 및 프리페치 버퍼(34)에 결합된다. TLB(30) 및 테이블 워크 유닛(32)은 변환될 가상 어드레스(VA)를 수신하도록 결합되고, 테이블 워크 유닛(32)은 대응하는 요구자 식별자(RID) 및/또는 가상 어드레스를 위한 대응하는 요구 타입을 수신하도록 더 결합된다. TLB(30)는 요구자에 물리 어드레스(PA) 및 히트 신호를 제공하도록 결합되고, TLB(30)는 테이블 워크 유닛(32)에 히트 신호를 제공하도록 더 결합된다. 테이블 워크 유닛(32)은 TLB(30)와도 변환 필(fill) 및 무효화(도 2에서 필/무효화)를 통신하도록 결합된다. 테이블 워크 유닛(32)은 스누프된(snooped) TLB 무효화(도 2에서 스누프 TLB 무효화)의 표시를 수신하도록 결합된다. 테이블 워크 유닛(32)은 페이지 테이블 엔트리(PTE) 판독 요구를 송신하고 대응하는 데이터(도 2에서 PTE 판독/데이터)를 수신하도록 더 결합된다. 예시된 실시예에서, 테이블 워크 유닛(32)은 이력 레지스터 또는 레지스터들(36) 및 어드레스 범위 레지스터(38A-38R)의 세트를 포함한다. 다른 실시예는 하나 이상의 양 레지스터(36 및/또는 38A-38R)를 포함하지 않을 수 있다.
MMU(16A)는 임의의 소스(예를 들어, GPU(10A) 내의 로직을 페치하여 명령을 페치하고, 또는 로직을 로드/저장하여 로드/저장 동작을 수행함)로부터 변환될 가상 어드레스를 수신할 수 있다. TLB(30)는 가상 어드레스를 룩업(lookup)하고 가상 어드레스에 대한 히트 또는 미스를 검출하도록 구성될 수 있다. 가상 어드레스로부터 물리 어드레스로의 변환이 TLB(30)에 기록되면 TLB 히트가 검출되고, 그 변환이 TLB(30)에 기록되지 않으면 미스가 검출된다. TLB(30)는 히트(어서트된 히트 신호) 또는 미스(디어서트된 히트 신호)를 신호하도록 구성될 수 있고 히팅 엔트리(PA)에 기초하여 물리 어드레스를 송신하도록 구성될 수 있다. 앞서 언급된 바와 같이, 변환은 페이지 단위 기초로 관리될 수 있다. 즉, TLB(30)에 기록된 주어진 변환이 가상 페이지 내의 임의의 가상 어드레스를 변환에 의해 식별된 물리 페이지 내의 대응하는 물리 어드레스로 변환할 수 있다. 일부 실시예에서, TLB(30)로 입력된 VA는 VA의 페이지 부분(예를 들어, 페이지 오프셋 비트는 제외함)일 수 있고 TLB(30)에 의해 출력된 PA는 또한 물리 어드레스의 페이지 부분일 수 있는데, 이를 또한 물리 페이지 번호라고 한다. 완전한 물리 어드레스는 페이지 오프셋 비트와 연결된 물리 페이지 번호일 수 있다.
테이블 워크 유닛(32)은 히트 신호를 수신하도록 결합될 수 있고, TLB(30)에서 미스한 가상 어드레스에 대한 변환을 위치시키고자 시도하도록 구성될 수 있다("테이블 워크"라고 함). 한 실시예에서, 테이블 워크 유닛(32)은 TLB 미스에 응답하여 페이지 테이블(26)로부터의 다중 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 판독하도록 구성되고, 블럭 내의 페이지 테이블 엔트리 중 하나인, 미싱 VA에 대한 변환으로 TLB(30)를 업데이트하는 것에 추가하여 프리페치 버퍼(34)에 데이터의 블럭을 기입하도록 구성된다. 다중 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 본원에서는 간결성을 위해 프리페치 블럭이라 칭한다. 후속하는 TLB 미스에 대해, 테이블 워크 유닛(32)은 페이지 블럭(26)으로부터 또 하나의 프리페치 블럭을 판독하기 위한 판독 요구를 발행하기 전에 프리페치 버퍼(34)를 탐색할 수 있다. 테이블 워크 유닛(32)이 프리페치 버퍼(34)에서 가상 어드레스에 대한 페이지 테이블 엔트리를 찾아내면, 테이블 워크 유닛(32)은 TLB(30)에 변환을 기입하도록 구성될 수 있고 판독 요구를 발행하지 않을 수 있다. 가상 어드레스에 대한 페이지 테이블 엔트리가 프리페치 버퍼(34)에 위치되지 않으면, 테이블 워크 유닛(32)은 판독 요구를 초기화하도록 구성될 수 있다. 테이블 워크 유닛(32)은 앞서 언급된 바와 같이 TLB(30)를 업데이트하는 것 뿐만 아니라, 프리페치 버퍼(34)에 대한 판독 요구에 응답하여 수신된 프리페치 블럭을 기입하도록 구성될 수 있다.
후속하는 TLB 미스가 프리페치 버퍼(34) 내의 블럭에서 변환을 발견하는 정도까지, TLB 미스를 처리하기 위한 지연은 감소될 수 있다. 따라서, 대응하는 명령 페치/데이터 억세스에 대한 지연도 감소되고, 일부 실시예에서는 성능이 개선될 수 있다. 프리페치 블럭은 메모리 시스템(20)의 페이지 테이블(26) 내의 연속하는 메모리 위치로부터의 페이지 테이블 엔트리를 포함할 수 있다. 연속하는 엔트리에 위치된 페이지 테이블 엔트리는 전형적으로 가상 어드레스 공간의 연속하는 페이지 내에 있는 가상 어드레스를 맵핑할 수 있다. 가상 어드레스(또는 그의 적어도 일부)는 페이지 테이블(26)에서 변환을 룩업하기 위해 페이지 테이블(26)의 베이스 어드레스로 사용될 수 있다. 따라서, 수치적으로 서로 가까운 가상 어드레스는 페이지 테이블(26)에서 서로 가까운 페이지 테이블 엔트리에 저장된 변환을 가질 수 있다. 따라서, 정규의 예측가능한 방식으로 억세스된 데이터 구조는 실시예에서, 프리페치 버퍼(34)에 저장된 프리페치 블럭으로부터 이득을 취할 수 있다.
일부 실시예에서, 테이블 워크 유닛(32)은 프리페치 블럭의 판독 및 임의의 가상 어드레스에 대한 프리페치 버퍼(34) 내의 프리페치 블럭의 저장을 구현할 수 있다. 다른 실시예에서, 테이블 워크 유닛(32)은 프리페치 버퍼(34)에 저장된 프리페치 블럭으로부터 이득을 취할 것 같은 것으로 식별되었던 가상 어드레스 범위로 (범위 레지스터(38A-38R)에서) 프로그램가능하다. 예를 들어, GPU(10A-10N)와 같은 그래픽 장치에 의해 사용된 프레임 버퍼는 종종, 픽셀 또는 타일의 열이 판독/기입됨에 따라, 정규 패턴으로 억세스될 수 있다. 다른 예는 입력 데이터의 큰 어레이 상에서 동작하는 체계적 코드를 포함할 수 있다. 범위 레지스터(38A-38R)가 구현되는 경우, 테이블 워크 유닛(32)은 프리페치 블럭의 판독을 범위 중의 하나의 범위 내에 있는 가상 어드레스로 제한할 수 있다. 범위 밖의 어드레스에 대해서, 테이블 워크 유닛(32)은 변환을 위해 필요한 페이지 테이블 엔트리를 판독할 수 있고, 판독 요구에 응답하여 복귀된 데이터의 하나보다 많은 페이지 테이블 엔트리를 수신할 수 있지만, 테이블 워크 유닛(32)은 수신된 페이지 테이블 엔트리를 프리페치 버퍼(34)에 기입하지 않을 수 있다.
레지스터(38A-38R)는 범위를 임의의 원하는 방식으로 정의할 수 있다. 예를 들어, 각각의 레지스터는 베이스 어드레스 및 한계(또는 크기), 또는 베이스 어드레스 및 엔드 어드레스를 저장할 수 있다.
일부 실시예에서, 변환 요구는 요구의 소스에 관한 더 많은 정보를 제공할 수 있는 타입 정보를 포함할 수 있다. 예를 들어, 그래픽 실시예에서, 타입은 텍스쳐 맵 억세스, 프레임 버퍼 억세스, 오브젝트 억세스 등을 표시할 수 있다. 어떤 타입의 억세스는 프리페치 버퍼(34) 내의 프리페치 블럭의 저장의 이득을 취할 수 있는 가능성이 더 많다(예를 들어, 프레임 버퍼 또는 텍스쳐 맵 억세스). 테이블 워크 유닛(32)은 요구의 타입에 기초하여 프리페치 버퍼(34) 내에 프리페치 블럭을 보유하거나 또는 프리페치 버퍼(34) 내에 프리페치 블럭을 보유하지 않도록 구성될 수 있다. 다른 실시예는 다른 타입(예를 들어, 명령 페치 대 데이터 억세스, 또는 가상 어드레스를 발생하는데 사용된 어드레싱 모드와 같은 데이터 억세스의 타입)을 가질 수 있다.
프리페치 버퍼(34)는 임의의 수의 하나 이상의 프리페치 블럭을 저장하도록 구성될 수 있다. 한 실시예에서, 프리페치 버퍼(34)는 하나의 프리페치 블럭을 저장할 수 있고, 현재의 프리페치 블럭은 테이블 워크 유닛(32)에 의해 판독될 때, 새로운 프리페치 블럭에 의해 덮어쓰기(overwrite)될 수 있다. 다른 실시예는 몇몇의(예를 들어 2 또는 4) 프리페치 블럭을 저장할 수 있다. 실시예는 임의의 원하는 수의 프리페치 블럭을 위한 프리페치 버퍼(34) 내의 용량을 포함할 수 있다. 프리페치 버퍼(34)는 임의의 저장 회로(예를 들어, 스태틱 랜덤 억세스 메모리(SRAM), 레지스터 또는 플롭 등과 같은 클럭 저장 장치)로부터 구현될 수 있다.
프리페치 버퍼(34) 내의 프리페치 블럭 저장 엔트리가 도 2에 도시된다. 엔트리는 유효 비트(V), 프리페치 블럭의 베이스 어드레스(Addr)를 식별하는 어드레스 필드(Addr), 및 프리페치 블럭 데이터(Data)를 포함할 수 있다. 다른 실시예에서, 유효 비트는 프리페치 블럭을 부분적으로 유효화시킬 수 있는 유효 필드일 수 있다. 예를 들어, 프리페치 블럭이 크기에 있어서 다중 캐시 블럭을 포함하고, 캐시 블럭이 테이블 워크 유닛(32)에 가용한 최대의 단일 전달(transfer)이면, 프리페치 블럭에 대한 판독 요구는 테이블 워크 유닛(32)에 복귀된 다중 요구 및 캐시 블럭에 관련될 수 있다. 따라서, 유효 필드는 그들이 프리페치 버퍼(34)에 기입됨에 따라 캐시 블럭을 유효화시킬 수 있다. 또 하나의 실시예에서, 유효 필드는 개별 페이지 테이블 엔트리를 유효화시킬 수 있다. 이러한 유효 필드는 이후에 더 논의되는 바와 같이, PTE 무효화에 관련하여 구현될 수 있다.
테이블 워크 유닛(32)은 요구자 ID에 기초하여 다중 페치 블럭을 유지하도록 구성될 수 있다(예를 들어, 주어진 요구자 ID는 프리페치 버퍼(34) 내의 주어진 프리페치 블럭과 연관될 수 있다). 프리페치 블럭이 요구자 ID와 연관되고, 새로운 프리페치 블럭이 테이블 워크 유닛(32)에 의해 프리페치 버퍼(34)에 기입되면, 새로운 프리페치 블럭이 동일한 요구자 ID와 연관된 이전의 프리페치 블럭을 교체할 수 있다. 따라서 다른 요구자 ID와 연관된 블럭은 영향받지 않을 수 있다. 다르게는, 2개 이상의 프리페치 블럭이 주어진 요구자를 위해 저장될 수 있다. 예를 들어, 2개의 프리페치 블럭이 주어진 요구자를 위해 저장되면, 다음 프리페치 블럭이 현재의 프리페치 블럭에서 페이지 테이블 엔트리가 고갈하는 것과 대하여 조기에 프리페치될 수 있는데, 그 이유는 다음 프리페치 블럭이 프리페치 버퍼(34) 내의 현재의 프리페치 블럭을 덮어쓰기할 수 없기 때문이다. 이러한 동작은 능동 프리페칭이 구현되는 경우 구현될 수 있다.
상기 설명은 미사용 페이지 테이블 엔트리를 포함하여, 프리페치 블럭이 TLB 미스에 응답하여 판독되고 블럭이 프리페치 버퍼(34) 내에 보유되는 수동 형태의 프리페치에 관한 것이다. 프리페치 블럭 내의 미사용 페이지 테이블 엔트리는 그들이 TLB 미스에 응답하여 직접 요구되기 전에 효과적으로 판독되었고, 따라서 프리페치된 것으로 보여질 수 있다. 즉, 프리페치는 아직은 요구되지 않았으나, 장차 요구될 가능성이 어느 정도 있는 페이지 테이블 엔트리를 일반적으로 판독할 수 있다. 다른 실시예는 테이블 워크 유닛(32)이 가까운 미래에 필요할 수 있는 페이지 테이블 엔트리의 블럭을 예측하기를 시도할 수 있는 능동 프리페치를 수행할 수 있고, 예측된 엔트리를 포함하는 블럭을 프리페치할 수 있다. 한 실시예에서, 이력 레지스터(36)가 능동 프리페칭을 위해 제공될 수 있다. 테이블 워크 유닛(32)은 최근에 사용된 페이지 테이블 엔트리를 표시하는 데이터를 이력 레지스터(36)에 저장할 수 있고, 프리페치 블럭을 예측하기 위해 이력에서의 패턴을 검출하기를 시도할 수 있다. 테이블 워크 유닛(32)은 예측에 응답하여 프리페치 요구를 발생할 수 있고, 프리페치 블럭을 프리페치 버퍼(34)에 기입할 수 있다. 프리페치 버퍼(34) 내에 다중 프리페치 블럭을 저장하는 실시예는 각각의 블럭의 별도의 이력을 저장하기 위해 다중 이력 레지스터(36)(또는 레지스터(36) 내의 다중 필드)를 포함할 수 있다.
이력 데이터는 프리페치 블럭으로부터 TLB(30) 내로 로드되었던 최근의 페이지 테이블 엔트리를 나타낼 수 있는 임의의 데이터일 수 있다. 즉, 이력 데이터는 페이지 테이블 엔트리의 사용 이력, 또는 TLB 미스에 의한 페이지 테이블 엔트리의 소비 이력일 수 있다. 예를 들어, 이력은 로드되었던 Q 가장 최근의 페이지 테이블 엔트리를 식별할 수 있고, 여기서 Q는 1 이상의 정수이다. 일 실시예에서, 프리페치 블럭 내의 페이지 테이블 엔트리에는 엔트리 번호가 할당될 수 있어, 프리페치 블럭에서 가장 낮게 어드레싱된 페이지 테이블 엔트리에서 시작하여 어드레스가 증가함에 따라 증가한다. 엔트리 번호는 이력에 저장될 수 있다. 엔트리 번호의 패턴에 기초하여, 프리페치 예측이 이루어질 수 있다. 예를 들어, 엔트리 번호가 단조 증가하고 최종 엔트리 번호에 가까우면(또는 도달하면), 다음의 연속한 (보다 높게 어드레싱된) 블럭의 프리페치가 발생될 수 있다. 유사하게, 엔트리 번호가 단조 감소하고 제1 엔트리 번호에 가까우면(도달하면), 이전의 (보다 낮게 어드레싱된) 블럭의 프리페치가 발생될 수 있다. 어드레스가 다른 어드레스보다 높거나 낮은 것이라 할 때, 이는 어드레스의 수치 값을 말하는 것임을 유의한다.
다른 실시예에서, 이력은 프리페치 블럭으로부터 로드되었던 페이지 테이블 엔트리의 번호의 카운트를 포함할 수 있다. 프리페치 블럭 내의 페이지 테이블 엔트리의 카운트 및 개수에 기초하여, 프리페치 블럭이 거의 고갈되거나 고갈되었다는 예측이 이루어질 수 있다. 실시예에서, 가장 최근의 엔트리 번호가 또한 기록되어, 다음의 연속한 또는 이전의 프리페치 블럭의 예측이 이루어질 수 있다.
상술한 바와 같이, 프리페치 블럭의 크기는 캐시 블럭과 동일한 크기일 필요는 없다. 실제로, 프리페치 블럭은 원하는 대로 임의의 크기일 수 있고, 이 크기는 캐시 블럭보다 작거나 큰 크기를 포함할 수 있다. 프리페치 블럭은 선택된 수의 페이지 테이블 엔트리를 저장할 수 있다. 페이지 테이블 엔트리는 물리 어드레스의 크기에 기초하여 크기가 변할 수 있다. 예를 들어, 32 비트 물리 어드레스는 4 바이트 페이지 테이블 엔트리로 나타낼 수 있고, 64 비트 물리 어드레스는 한 실시예에서 8 바이트 페이지 테이블 엔트리로 나타낼 수 있다. 엔트리에서 나타나지 않는 물리 어드레스 비트는 다양한 속성을 저장할 수 있다. 가상 어드레스 태그를 또한 포함하는 실시예가 상기 크기보다 더 클 수 있다.
소프트웨어가 변환을 변경하기 위해 페이지 테이블 엔트리를 수정하는 경우, 소프트웨어는 하나 이상의 TLB 엔트리를 무효화시킬 수 있다. 소프트웨어가 MMU(16A)에 첨부된 프로세서상에서 실행되는 경우, 무효화는 요구 인터페이스를 통해 발생하거나, 또는 소프트웨어가 그 이외의 곳에서 실행되는 경우, 무효화는 외부 인터페이스로부터 스누프될 수 있다. TLB(30)에서 지정된 엔트리(들)를 무효화시키는 것에 부가하여, 테이블 워크 유닛(32)이 또한 프리페치 버퍼(34) 내의 대응하는 페이지 테이블 엔트리를 무효화시킬 수 있다. 한 실시예에서, 테이블 워크 유닛(32)은 프리페치 버퍼(34)에 저장된 프리페치 블럭을 간단히 무효화시킬 수 있다. 다르게는, 위에 주목된 바와 같이, 프리페치 블럭에 대한 유효 표시는 개별 페이지 테이블 엔트리 또는 페이지 테이블 엔트리의 서브셋을 무효화시키는 것을 허용할 수 있다. 이러한 실시예에서, 테이블 워크 유닛(32)은 업데이트되고 있는 페이지 테이블 엔트리를 결정하고, 프리페치 버퍼(34) 내의 페이지 테이블 엔트리 또는 서브셋을 무효화시킬 수 있다. 프리페치 버퍼(34) 내에 다중 프리페치 블럭을 저장하는 실시예에서, 테이블 워크 유닛(32)은 다른 블럭은 유효 상태로 유지하면서 영향받은 프리페치 블럭을 무효화시킬 수 있다.
일부 실시예에서, MMU(16A)는 각각 명령 페치 및 로드/저장 억세스를 변환하기 위해 별도의 명령 및 데이터 TLB를 포함할 수 있다. 명령 및 데이터 TLB는 각각 명령 페치 로직 및 로드/저장 로직에 물리적으로 가깝게 위치될 수 있다. 게다가, MMU(16A)의 실시예는 비프로세서 소자들(예를 들어, 다이렉트 메모리 억세스(DMA) 제어기, 입력/출력(I/O) 장치, 등)용으로 사용될 수 있다.
도 3을 이제 참조하면, 가상 어드레스 공간(40), 페이지 테이블(26), 및 물리 어드레스 공간(42)을 도시한 블럭도가 도시된다. 페이지 테이블(26)은 물리 어드레스 공간(42)에도 저장되지만, 예시를 돕기 위해 도면에 별도로 도시된다. 도 3에 도시된 바와 같이, VA 공간(40) 및 PA 공간(42)의 어드레스 0은 도면의 상부에 있을 수 있고, 어드레스가 증가할수록 아래로 진행할 것이다.
VA 공간(40)에서, 프레임 버퍼(44)가 도시된다. 프레임 버퍼(44)는 VA 공간(40)에서 다중 연속 페이지를 차지할 수 있다. 페이지는 도 3에서 파선 사이에 도시되어 있으며, 예를 들어, 가상 공간(46A, 46B, 46C, 46D)이다. 프레임 버퍼(44)에 의해 차지된 페이지의 수는 페이지 크기와 프레임 버퍼(44)의 크기에 의존할 수 있다. 프레임 버퍼(44)의 크기는 스크린 해상도 크기, 디스플레이 해상도에서의 픽셀 당 데이터 비트의 수 등에 의존할 수 있다.
각각의 가상 페이지(46)는 페이지 테이블(26) 내의 페이지 테이블 엔트리(PTE)에 의해 변환될 수 있다. PTE는 소프트웨어에 의해 할당되고, 주어진 시점에서 페이지 테이블(26)에서 유효하지 않을 수 있다. 도 3은 프레임 버퍼(44)에 대한 모든 PTE가 페이지 테이블(26)에서 유효할 때의 시점을 도시한다. 특히, PTE 1 내지 P가 도 3에 도시되어 있다. PTE의 예시적인 내용은 도 3에서 PTE 1에 도시되어 있다(참조번호 48). 도시된 바와 같이, PTE는 가상 어드레스 태그 필드(VA), 물리 페이지 번호(PPN), 및 다양한 다른 속성(ATR)을 포함할 수 있다. 가상 어드레스 태그는 완전한 가상 어드레스가 페이지 테이블(26)에서의 룩업에 의해 소비되지 않는 실시예를 위해 포함될 수 있다. 즉, 어떤 어드레스 변환 메카니즘이 가상 어드레스에 대한 변환을 저장하는 PTE를 위치시키기 위해 페이지 테이블(26)의 베이스 어드레스와 함께 (페이지 오프셋을 제외한) 각각의 가상 어드레스 비트를 이용한다. 이러한 메카니즘에서, 각각의 가상 어드레스는 한 PTE를 특이하게 위치시키고, VA 태크는 필요하지 않을 수 있다. 다른 실시예에서, 가상 어드레스의 페이지 부분의 적어도 일부는 룩업에서 사용되지 않고, 따라서 다중 가상 어드레스가 변환을 위해 동일한 PTE와 엘리어싱(alias)할 수 있다. VA 태그는 변환이 룩업이 수행되는 특정한 가상 어드레스와 대응한다는 것을 확인하기 위해 미사용 가상 어드레스와 비교될 수 있다. 물리 페이지 번호는 페이지 내의 억세스의 물리 어드레스를 형성하기 위해 가상 어드레스의 페이지 오프셋 부분과 연결될 수 있는 물리 어드레스의 페이지 부분이다. 속성은 캐시가능성 및 캐시 관련 제어, 특권 레벨 제한(예를 들어, 사용자 또는 감독자), 변환의 유효성을 표시하는 유효 비트, 페이지에의 판독/기입 허용, 등과 같은 페이지의 다른 특성을 지정할 수 있다.
페이지 테이블(26) 내의 PTE 1, 2, 및 3으로 가는, 가상 페이지(46A, 46B, 및 46C) 간의 화살표로 도시된 바와 같이, 인접하는 가상 페이지는 페이지 테이블(26) 내에 연속하는 PTE를 찾아낸다. 이 동작은 인접하는 가상 페이지가 어드레스의 페이지 부분에서 하나만큼만 서로 수치적으로 다르기 때문에 관찰될 수 있다. 일반적으로, 인접하는 페이지들(블럭들) 간에 다른 페이지들(블럭들)이 없다면 페이지(또는 블럭)은 또 하나의 페이지(또는 블럭)에 인접할 수 있다. 인접하는 페이지들(블럭들)은 연속하는 것이라고도 할 수 있고, 주어진 페이지(블럭)에 다음의 높은 수치 어드레스로 인접한 페이지(블럭)는 다음의 연속 페이지(블럭)라고 할 수 있다.
물리 어드레스(PA) 공간(42)에서, 다양한 물리 공간이 파선 사이에 도시된다(예를 들어, 물리 페이지(50A, 50B, 및 50C)). 각 PTE의 PPN 필드는 물리 페이지 중 하나의 페이지를 가리킬 수 있다. 물리 페이지에의 가상 페이지의 할당은 소프트웨어의 제어하에 있고, 임의적일 수 있다. 그러므로, PTE 1은 가상 페이지(46A)를 물리 페이지(50B)에 맵핑할 수 있고, PTE 2는 가상 페이지(46B)를 물리 페이지(50A)에 맵핑할 수 있고, PTE 3은 가상 페이지(46C)를 물리 어드레스(50C)에 맵핑할 수 있다. 다른 실시예에서, 소프트웨어는 프레임 버퍼(44)와 같은 데이터 구조의 연속하는 가상 페이지를 물리 어드레스 공간(42) 내의 연속하는 물리 페이지에 맵핑하기를 시도할 것이다.
앞서 언급된 바와 같이, 프레임 버퍼(44)로의 어떤 억세스 패턴은 매우 정규적일 수 있다. 예를 들어, 디스플레이를 위해 프레임 버퍼를 판독하는 것은 일반적으로 도 3에 도시된 바와 같이 위에서부터 아래로 수행되어, 디스플레이 하드웨어에 의한 디스플레이 스크린의 리프레쉬(refresh)와 일치한다. 따라서, 프레임 버퍼(44) 내의 하나의 가상 페이지에 의한 TLB 미스는 연속하는 가상 페이지들에 대한 더 많은 TLB 미스로 이어질 가능성이 있고, 페이지 테이블(26) 내의 연속하는 PTE에 억세스할 수 있다. 따라서, 테이블 워크 유닛(32)이 TLB 미스를 위한 PTE를 페치할 때, 테이블 워크 유닛(32)은 TLB 미스를 위한 PTE를 포함하는 PTE의 블럭을 프리페치하도록 구성될 수 있다. 예를 들어, 프리페치 블럭(52)은 도 3에 도시되고, PTE 1 내지 P(여기서 P는 도 3에 도시된 바와 같이 3보다 큰 양의 정수)를 포함한다. 예를 들어, TLB 미스가 가상 페이지(46A)에 대해 발생하면, 프리페치 블럭(52)은 프리페치 버퍼(34)에 프리페치되어 저장될 수 있다. 후속하는 TLB 미스가 가상 페이지(46B, 46C, 및/또는 46D)에 대해 발생하면, 테이블 워크 유닛(32)은 프리페치 버퍼(34)를 체크하고 프리페치 버퍼(34)에서 PTE 2,3 및 4(도 3에 도시 안됨)를 찾는다. 따라서, 이들 TLB 미스에 대해서는 메인 메모리 판독이 회피될 수 있다.
범위 레지스터(38A-38R)를 구현하는 실시예에 대해, 프레임 버퍼(44)의 가상 어드레스 범위는 범위 레지스터(38A-38R) 중 하나의 레지스터 내로 프로그램될 수 있다(예를 들어, 도 3의 "범위 1"이라고 한쪽 대괄호 기호로 표시된 범위 1 레지스터(38A)). 다른 범위 레지스터(38B-38R)가 텍스쳐 맵 등과 같이 다른 범위로 프로그램될 수 있다.
이제 도 4를 참조하면, TLB(30)에서의 TLB 미스에 응답하는 MMU(16A)(및 보다 특정적으로 테이블 워크 유닛(32))의 하나의 실시예의 동작을 도시한 플로우차트가 도시된다. 즉, MMU(16A)/테이블 워크 유닛(32)은 도 4에 도시된 동작을 구현하도록 구성될 수 있다. 블럭들이 이해를 쉽게 하기 위해 특정한 순서로 도시되었지만, 다른 순서가 사용될 수 있다. 블럭들은 MMU(16A)/테이블 워크 유닛(32) 내의 조합 로직에서 병렬로 수행될 수 있다. 블럭들, 블럭들의 조합 및/또는 전체적인 플로우차트는 다중 클럭 사이클에 걸쳐 파이프라인될 수 있다. 도 4의 플로우차트는 TLB 미스에 응답하는 동작을 도시한다. MMU(16A)/테이블 워크 유닛(32)은 하나보다 많은 TLB 미스를 병렬로 처리하도록 구성될 수 있다. 또한, 파이프라인되는 실시예에서, TLB 미스는 파이프라인될 수 있고, 따라서 처리의 여러 단계에서 다중 TLB 미스가 있을 수 있다. 예를 들어, 한 TLB 미스가 메모리로부터의 프리페치 블럭의 복귀를 기다리는 동안, 또 하나의 TLB 미스가 프리페치 버퍼를 체크하여 히트를 검출할 수 있다.
테이블 워크 유닛(32)은 미싱 가상 어드레스 및 메인 메모리 시스템(20) 내에 페이지 테이블(26)을 위치시키는 페이지 테이블 베이스 어드레스로부터 PTE의 어드레스를 형성하도록 구성될 수 있다(블럭 60). 본 실시예에서, 페이지 테이블(26)은 메인 메모리 시스템(20) 내의 물리 어드레스에 저장되고, PTE의 어드레스는 물리 어드레스이다. 다른 실시예에서, 페이지 테이블(26)은 가상 어드레스 공간에 위치될 수 있고, 어드레스는 가상일 수 있다. 페이지 테이블(26)의 억세스가능성을 보장하면서 페이지 테이블(26)을 가상적으로 어드레싱하는 메카니즘은 공지되어 있다(예를 들어, 페이지 테이블을 맵핑하는 단위). 어떤 어드레스 변환 메카니즘이 계층적 방식(예를 들어, 페이지 테이블 베이스 어드레스 및 가상 어드레스의 제1 부분으로부터 PTE 어드레스를 형성하고, PTE로부터 PPN을 판독하고 가상 어드레스의 각 부분이 사용될 때까지 PPN 및 가상 어드레스의 제2 부분을 사용하여 또 다른 PTE 어드레스를 형성하는 것 등)으로 페이지 테이블에서 다중 룩업을 사용한다는 것을 유의한다. 이러한 실시예에서, 블럭 60은 다중 룩업을 포함할 수 있다. 테이블 워크 유닛(32)은 프리페치 버퍼(34)에서 각 PTE 엔트리를 탐색할 수 있다. 각 레벨에 대한 프리페치 블럭은 프리페치 버퍼(34) 내에 유지될 수 있거나, 또는 최종 레벨에 대한 프리페치 블럭만이 저장될 수 있다. 다른 실시예는 단일 레벨 룩업을 사용할 수 있다(예를 들어, 엔트리를 선택하기 위해 VA의 페이지 부분을 해싱하고 VA 태그를 사용하고, VA의 페이지 부분의 최하위 비트를 사용하고 VA의 나머지를 위해 VA 태그를 사용하고, VA의 부분에 기초하여 엔트리의 그룹을 선택하고, 다중 연속 엔트리를 판독하는 것 또는 기타 다른 방식).
테이블 워크 유닛(32)은 히트에 대해 프리페치 버퍼(34)를 체크하도록 구성될 수 있다(판정 블럭 62). 히트에 대한 체크는 프리페치 블럭의 입상에서 수행될 수 있다. 즉, PTE의 어드레스는 프리페치 버퍼 엔트리를 태깅하고, 프리페치 블럭과의 오프셋을 정의하는 비트를 마스크 오프하는 어드레스와 비교될 수 있다. PTE가 프리페치 버퍼(34)에서 히트이면(판정 블럭 62에서 "예" 구간(leg)), 테이블 워크 유닛(32)은 PTE가 변환을 성공적으로 제공하는지를 판정하도록 구성될 수 있다(판정 블럭 66). PTE가 유효하지 않거나, 또는 속성이 요구자가 원하는 억세스(예를 들어, 특권 레벨 위반, 판독/기입 위반 등)를 하는 것이 허용되지 않는다는 것을 표시하면, 변환은 실패일 수 있다. 변환이 성공적이면(판정 블럭 66에서 "예" 구간), 테이블 워크 유닛(32)은 변환을 TLB(30)에 공급하기 위해(블럭 64) 프리페치 버퍼(34)로부터의 PTE를 사용하도록 구성될 수 있다. 즉, PTE로부터의 변환이 TLB(30) 내로 로딩될 수 있다. TLB(30) 내의 변환 데이터의 포맷은 PTE와 다를 수 있고, 테이블 워크 유닛(32)은 TLB 엔트리를 포맷하고 포맷된 엔트리를 TLB(30)에 기입하도록 구성될 수 있다. TLB 엔트리는 TLB 엔트리(또는 변환의 사용을 위해 필요할 수 있는 그 서브셋), PPN, 및 변환 요구에 대해 매칭하기 위한 가상 어드레스의 부분 또는 모든 페이지 부분으로부터의 속성들을 포함할 수 있다. 변환이 성공적이지 않았다면(판정 블럭 66에서 "아니오" 구간), 테이블 워크 유닛(32)은 에러를 신호할 수 있다(블럭 68). 에러는 다양한 실시예에서 임의의 원하는 방식으로 (예를 들면, 인터럽트, 제외 등) 신호될 수 있다. 신호는 소프트웨어가 변환의 결함을 처리하도록 호출되게 할 수 있다.
한편, PTE가 프리페치 버퍼(34)에서 히트가 아니면(판정 블럭 62에서 "아니오" 구간), 테이블 워크 유닛(32)은 PTE 판독 요구를 송신할 수 있다(블럭 70). 프리페칭을 범위 또는 타입에 대하여 제한하는 실시예에서, PTE 판독 요구는 VA가 범위 내에 있지 않거나 또는 타입이 프리페치가능한 타입 중 하나가 아니면 단일 PTE 엔트리를 위한 것이고, 테이블 워크 유닛(32)은 프리페치 버퍼(34)로 복귀된 데이터를 기입하지 않을 수 있다. VA가 범위 내에 있고, 또는 타입이 프리페치가능한 타입 중 하나이고, 또는 테이블 워크 유닛(32)이 임의의 PTE를 프리페치 블럭으로서 프리페치하면, PTE 판독 요구가 PTE를 포함하는 프리페치 블럭에 대한 요구일 수 있다. 테이블 워크 유닛(32)은 메모리 시스템으로부터 프리페치 블럭의 수신을 기다릴 수 있고, 복귀된 프리페치 블럭을 프리페치 버퍼에 기입할 수 있다(블럭 72). 테이블 워크 유닛(32)은 프리페치 버퍼(34)에서 현재의 프리페치 블럭을 덮어쓰기할 수 있거나, 또는 다양한 실시예에서, 요구자 또는 타입과 연관된 현재의 프리페치 블럭을 덮어쓰기할 수 있다. 그 요구자/타입에 대해 다중 프리페치 블럭을 저장할 수 있는 실시예에서, 프리페치 블럭은 요구자/타입에 대해 가장 오래된 프리페치 블럭을 덮어쓰기할 수 있거나, 또는 최저 사용 빈도(LRU)와 같은 교체 방식, 그 변형 중 임의의 것이 사용될 수 있거나, 또는 임의의 기타 교체 방식이 사용될 수 있다. 테이블 워크 유닛(32)은 또한 변환이 성공적인지를 판정하여 적절한 경우 에러를 신호하거나 또는 TLB(30) 내로 변환을 로드할 수 있다(블럭 66, 64, 및 68).
도 4의 플로우차트는 프리페치 블럭이 블럭 내의 PTE를 사용하는 TLB 미스에 응답하여 판독되는 수동 프리페칭 실시예를 도시한다. 다른 실시예는 프리페치 블럭 내에 PTE의 사용 이력을 유지할 수 있고, 프리페치 블럭에 대해 프리페치 요구를 발생하는데 또 하나의 PTE가 필요할 때를 예측할 수 있다. 즉, 프리페치 블럭은 프리페치 블럭 내의 PTE 중 어떤 것이라도 필요하기 전에 프리페치될 수 있다.
도 5는 능동 프리페치 방식을 위해 TLB(30)에서의 TLB 미스에 응답하는 MMU(16A)(및 보다 특정적으로 테이블 워크 유닛(32))의 한 실시예의 동작을 도시한 플로우차트이다. 즉, MMU(16A)/테이블 워크 유닛(32)은 도 5에 도시된 동작을 구현하도록 구성될 수 있다. 블럭들이 이해를 쉽게 하기 위해 특정한 순서로 도시되었지만, 다른 순서가 사용될 수 있다. 블럭들은 MMU(16A)/테이블 워크 유닛(32) 내의 조합 로직에서 병렬로 수행될 수 있다. 블럭들, 블럭들의 조합 및/또는 전체적인 플로우차트는 다중 클럭 사이클에 걸쳐 파이프라인될 수 있다. 도 5의 플로우차트는 TLB 미스에 응답하는 동작을 도시한다. MMU(16A)/테이블 워크 유닛(32)은 하나보다 많은 TLB 미스를 병렬로 처리하도록 구성될 수 있다. 또한, 파이프라인되는 실시예에서, TLB 미스는 파이프라인될 수 있고, 따라서 처리의 여러 단계에서 다중 TLB 미스가 있을 수 있다. 예를 들어, 한 TLB 미스가 메모리로부터의 프리페치 블럭의 복귀를 기다리는 동안, 또 하나의 TLB 미스가 프리페치 버퍼를 체크하여 히트를 검출할 수 있다.
도 4와 유사하게, 도 5의 실시예는 PTE 어드레스를 형성하고, 프리페치 버퍼(34)에서 히트를 체크하고, PTE 어드레스가 프리페치 버퍼(34)에서 미스이면 PTE 판독 어드레스를 발생하고, 수신된 프리페치 블럭을 프리페치 버퍼(34)에 기입하고, 변환이 성공적인지를 판정하여 변환을 TLB(30) 내로 로드하거나 또는 에러를 신호하는 것을 포함한다(블럭 60, 62, 64, 66, 68, 70 및 72).
부가적으로, 테이블 워크 유닛(32)은 프리페치 블럭을 프리페치 버퍼(34)에 기입할 때 프리페치 블럭에 대응하는 이력을 초기화하도록 구성될 수 있다(블럭 80). 이력은 유지된 이력 데이터에 따라 다른 방식으로 초기화될 수 있다. 예를 들어, 이력이 프리페치 블럭에의 최근 Q 억세스의 표시이면(예를 들어, 프리페치 블럭 내의 제1 엔트리에 대한 엔트리 번호), 이력은 현재의 요구의 엔트리 번호를 가장 최근의 요구로서 기록하고 다른 엔트리 번호를 클리어링함으로써 초기화될 수 있다. 이력이 카운트이면, 카운트는 제로로 설정될 수 있다. 다르게는, 요구된 PTE가 프리페치 블럭의 한 끝에 있지 않으면, 카운트는 프리페치 블럭 내의 PTE의 엔트리 번호로 초기화될 수 있다. 이러한 초기화는 예를 들어, 프리페치 블럭에서 처음 몇개의 PTE가 TLB 히트이었다면 유용할 수 있고 따라서 요구되지 않을 수 있다. 또 하나의 실시예에서, 초기화는 엔트리 번호에 의존할 수 있다. 엔트리가 프리페치 블럭의 하단에 가장 가까우면, 카운트는 엔트리 번호로 초기화될 수 있어, 어드레스들이 수치적으로 증가하는 순서로 통과되는(traverse) 것으로 가정한다. 엔트리가 프리페치 블럭의 상단에 가장 가까우면, 카운트는 P 마이너스 엔트리 번호(여기서 P는 프리페치 블럭 내의 PTE의 수)로 초기화될 수 있어, 어드레스들이 수치적으로 감소하는 순서로 통과되는 것으로 가정한다.
프리페치 버퍼에서의 히트에 응답하여, 테이블 워크 유닛(32)은 이력을 업데이트하도록 구성될 수 있다(블럭 82). 예를 들어, 테이블 워크 유닛(32)은 가장 최근의 억세스로서 PTE의 엔트리 번호를 삽입할 수 있고, Q 가장 최근의 엔트리 번호가 이력으로서 저장되면 다른 엔트리 번호를 리스트 아래로 이동시킨다. 이력이 카운트이면, 테이블 워크 유닛(32)은 카운트를 증가시키도록 구성될 수 있다. 다른 실시예는 다른 형태의 이력을 구현할 수 있다.
테이블 워크 유닛(32)은 이력이 프리페치 요구가 다음 예측된 블럭에 대해 발생되어야 하는 것을 표시하는지를 판정하기 위해 업데이트된 이력을 조사하도록 구성될 수 있다(판정 블럭 84). 다음 예측된 블럭은 다음 연속하는 블럭이거나, 또는 PTE가 블럭 내에서 사용된다는 지시에 따라 현재 블럭으로부터 바로 선행하는 블럭일 수 있다. 테이블 워크 유닛(32)이 프리페치 요구가 발생될 것으로 판정하는 경우, 테이블 워크 유닛(32)은 프리페치 요구를 발생하도록 구성될 수 있다(블럭 86).
도 4 및 5는 일반적으로 단일 프리페치 블럭을 언급한 것이다. 다중 프리페치 블럭이 프리페치 버퍼(34)에 저장될 수 있는 실시예에서, 프리페치 버퍼 히트에 대한 탐색은 모든 프리페치 블럭에 걸쳐 적용될 수 있다. 다르게는, 탐색은 동일한 요구자 또는 어드레스 범위와 연관된 프리페치 블럭으로만 제한될 수 있다. 부가적으로, 하나보다 많은 프리페치 블럭이 주어진 요구자와 연관되는 경우, 원하는 바에 따라 새로운 프리페치 블럭은 주어진 요구자와 연관된 가장 오래된 프리페치 블럭 또는 LRU(least recently used) 블럭을 덮어쓰기할 수 있다.
도 6 및 7은 이력의 2개의 실시예를 위한 도 5의 블럭 82, 84 및 86에 대한 보다 상세한 실시예이다. 조합될 때, 블럭 82, 84, 및 86 중 하나를 구현할 수 있는 블럭들은 대응하는 참조 번호(82, 84, 또는 86) 다음에 문자가 붙는 것으로 리스트된다. 도 6의 실시예는 TLB(30)에 변환을 제공하는데 사용된 Q 가장 최근의 PTE의 리스트로서 이력을 구현한다(즉, Q 가장 최근에 억세스된 PTE). 리스트는 프리페치 블럭 내의 가장 낮게 어드레싱된 PTE의 번호인 엔트리 0, 및 수치적으로 어드레스가 증가할수록 프리페치 블럭 내의 가장 높게 어드레싱된 엔트리(엔트리 P-1)로 증가하는 번호로 나열될 수 있다. 도 7의 실시예는 변환을 TLB(30)에 제공하기 위해 사용되었던 PTE의 번호의 카운트로서 이력을 구현할 수 있다. 블럭들이 도 6 및 7의 이해를 쉽게 하기 위해 특정한 순서로 도시되었지만, 다른 순서가 사용될 수 있다. 블럭들은 MMU(16A)/테이블 워크 유닛(32)에서 조합 로직에서 병렬로 수행될 수 있다. 블럭들, 블럭들의 조합 및/또는 전체적인 플로우차트는 다중 클럭 싸이클에 걸쳐 파이프라인될 수 있다.
도 6에서, 예시적인 이력(90)이 PTE 엔트리 번호의 리스트로서 도시된다. PTE 엔트리 번호 1은 가장 오래된(가장 최근이 아닌때에 억세스된) PTE 엔트리 번호일 수 있다. PTE 엔트리 번호 2는 두번째 오래된 엔트리 번호일 수 있으며 그 외의 것들도 PTE 엔트리 번호 Q까지 마찬가지일 수 있다. 이력(90)은 리스트의 논리적 뷰일 수 있다. 리스트의 물리적인 배열은 다를 수 있다. 예를 들어, 새로운 엔트리 번호가 추가될 때 리스트에서 PTE 엔트리 번호를 시프팅하기 보다는, 새로운 엔트리 번호가 가장 오래된 엔트리 번호와 교체할 수 있고 가장 새로운 엔트리 번호에 대한 포인터가 저장될 수 있다.
도 6에 도시된 바와 같이, 이력의 업데이트(도 5의 블럭 82)는 이력(90) 내의 가장 오래된 PTE 엔트리 번호를 TLB(30)에 현재 로드되고 있는 PTE의 엔트리 번호로 교체하는 것을 포함할 수 있다(블럭 82A). 판정 블럭 84을 형성하는 블럭들은 판정 블럭 84A-84C 및 블럭 84D-84E를 포함할 수 있다. 테이블 워크 유닛(32)은 가장 최근의 Q PTE 억세스의 패턴이 있는지를 판정할 수 있다(판정 블럭 84A). 인식가능한 패턴이 없으면(판정 블럭 84A에서 "아니오" 구간), 테이블 워크 유닛(32)은 프리페치 요구를 발생하지 않을 것이다. 인식가능한 패턴이 있다면, 그 패턴은 단조 증가하거나(예를 들어, 각 엔트리 번호는 이전의 엔트리 번호보다 크다), 또는 단조 감소할 수 있다(각 엔트리 번호가 이전의 엔트리 번호보다 작다). 패턴이 단조 증가하고(판정 블럭 84A에서 "예, 증가" 구간), 현재의 엔트리가 프리페치 블럭 내의 가장 높게 어드레싱된 엔트리(예를 들어, 엔트리 P-1)에 가까우면(판정 블럭 84B에서 "예" 구간), 테이블 워크 유닛(32)은 프리페치될 다음 블럭이 현재의 프리페치 블럭 + 1이라는 것을 예측할 수 있다(블럭 84E). 즉, 프리페치될 다음 블럭은 (다음으로 수치적으로 높은 프리페치 블럭 어드레스에 있는) 현재의 블럭의 다음 연속하는 프리페치 블럭이다. 테이블 워크 유닛(32)은 예측된 프리페치 블럭에 대한 프리페치 요구를 발생하도록 구성될 수 있다(블럭 86A). 현재의 엔트리가 가장 높게 어드레싱된 엔트리에 가깝지 않으면(판정 블럭 84B에서, "아니오" 구간), 프리페치는 아직 예측되지 않는다. 유사하게, 패턴이 단조 감소하고(판정 블럭 84A에서, "예, 감소" 구간), 현재의 엔트리가 프리페치 블럭 내의 가장 낮게 어드레싱된 엔트리(예를 들면 엔트리 0)에 가까우면(판정 블럭 84C에서, "예" 구간), 테이블 워크 유닛(32)은 프리페치될 다음 블럭이 현재 프리페치 블럭 -1이라는 것을 예측할 수 있다(블럭 84D). 즉, 프리페치될 다음 블럭은 (다음으로 수치적으로 낮은 프리페치 블럭 어드레스에 있는) 현재의 블럭 이전의 프리페치 블럭이다. 테이블 워크 유닛(32)은 예측된 프리페치 블럭에 대한 프리페치 요구를 발생하도록 구성될 수 있다(블럭 86A). 현재의 엔트리가 가장 낮게 어드레싱된 엔트리에 가깝지 않으면(판정 블럭 84C에서 "아니오" 구간), 프리페치는 아직 예측되지 않는다.
판정 블럭 84B 및 84C는 다음 블럭을 조기에 예측하고, 블럭 내에서 첫번째 TLB 미스 전에 블럭을 프리페치하기 위해 가장 높게 어드레싱된 엔트리 또는 가장 낮게 어드레싱된 엔트리에 "가까운" 현재의 엔트리를 체크할 수 있다. 따라서, "가까운"의 판정은 메모리 내의 다음 프리페치 블럭에 억세스하는데의 지연 및 현재의 블럭의 나머지 PTE 엔트리가 TLB 미스에 의해 소비되지 전의 지연에 의존할 수 있다. 일부 실시예에서, 필요할 수 있는 엔트리를 덮어쓰기하는 것을 피하기 위해, 테이블 워크 유닛은 현재의 블럭 내의 엔트리가 소비될 때까지(예를 들어 "가까운"은 "동일"일 수 있을 때까지) 프리페치 요구를 발생하지 않을 수 있다. 다른 실시예에서, 엔트리가 엔트리 번호의 하나 이상의 엔트리 내에 있으면(예를 들어, 1 또는 2개의 엔트리들이 떨어져 있음), 엔트리는 또 하나의 것에 "가까울" 수 있다. 일부 경우에는, 패턴이 엔트리가 건너 뛰는 것(예를 들어, 하나 걸러 엔트리가 판독될 수 있음)을 표시할 수 있고, "가까운"의 판정은 이러한 패턴을 고려할 수 있다. 부가적으로, 하나보다 많은 프리페치 블럭이 동일한 요구자에 대해 유지되는 경우(그래서 새롭게 프리페치된 블럭은 현재의 블럭을 교체하지 않도록), "가까운"의 판정은 보다 더 융통성이 있을 수 있다.
엔트리 0 및 P-1은 프리페치 블럭의 "끝"으로 정의될 수 있다. 즉, 엔트리 0 아래에 프리페치 블럭내에서 더 낮은 어드레스의 엔트리가 없고, 엔트리 P-1 위에 프리페치 블럭 내에서 더 높은 어드레스의 엔트리가 없다. 그러므로, 현재의 엔트리가 블럭의 끝에 가까울 때, 테이블 워크 유닛(32)은 그 끝에 인접한 블럭(예를 들면, 엔트리 0에 대해, 이전 블럭, 또는 엔트리 P-1에 대해 다음 연속한 블럭)에 대한 프리페치 요구를 발생할 수 있다.
총체적으로, 판정 블럭 84A, 84B, 및 84C의 "아니오" 구간은 도 5의 판정 블럭 84의 "아니오" 구간과 동등한 것일 수 있다. 블럭 84D 및 84E로부터 빠져 나가는 것은 도 5의 판정 블럭 84의 "예" 구간과 동등한 것일 수 있다. 블럭 82A 및 86A은 각각 도 5의 블럭 82 및 86과 동등한 것일 수 있다.
도 7에서, 예시적인 이력(92)이 카운트로서 도시된다. 카운트는 도 5를 참조하여 위에 설명된 것과 같이 초기화될 수 있다. 도 7에 도시된 바와 같이, 이력의 업데이트(도 5의 블럭 82)는 카운트를 증가하는 것을 포함할 수 있다(블럭 82B). 판정 블럭 84을 형성하는 블럭들은 판정 블럭 84F-84G 및 블럭 84H-84I를 포함할 수 있다. 테이블 워크 유닛(32)은 카운트가 현재의 프리페치 블럭의 PTE 엔트리가 소비되었다는 것을 표시하는, P-1과 동일한지를 판정할 수 있다(판정 블럭 84F). 그렇지 않으면(판정 블럭 84F에서 "아니오" 구간), 테이블 워크 유닛(32)은 프리페치 요구를 발생하지 않을 것이다. 그렇다면(판정 블럭 84F에서 "예" 구간), 현재의 엔트리는 제로 또는 P-1에 가까울 수 있다. 현재의 엔트리가 0에 가까우면(판정 블럭 84G에서 "예" 구간), 테이블 워크 유닛(32)은 프리페치될 다음 블럭이 현재의 프리페치 블럭 -1이라는 것을 예측할 수 있다(블럭 84H). 테이블 워크 유닛(32)은 예측된 프리페치 블럭에 대한 프리페치 요구를 발생하도록 구성될 수 있다(블럭 86B). 현재의 엔트리가 엔트리 P-1에 가까우면(판정 블럭 84G에서 "아니오" 구간), 테이블 워크 유닛(32)은 프리페치될 다음 블럭이 현재의 프리페치 블럭 +1이라는 것을 예측할 수 있다(블럭 84I). 테이블 워크 유닛(32)은 예측된 프리페치 블럭에 대한 프리페치 요구를 발생하도록 구성될 수 있다(블럭 86B).
도 7의 실시예가 P-1와 동일한 카운트를 체크하지만, 다른 실시예는 P-1에 가까운 카운트를 체크할 수 있다. 다시, 가까운의 척도는 앞서 설명한 바와 마찬가지로 블럭을 프리페치할 지연 및 현재의 프리페치 블럭 내의 나머지 엔트리를 소비할 것으로 예상된 지연에 의존할 수 있다.
판정 블럭 84F의 "아니오" 구간은 도 5의 판정 블럭 84의 "아니오" 구간과 동등한 것일 수 있다. 블럭 84H 및 84I에서 빠져 나가는 것은 도 5의 판정 블럭 84의 "예" 구간과 동등한 것일 수 있다. 블럭 82B 및 86B은 각각 도 5의 블럭 82 및 86과 동등한 것일 수 있다.
일부 실시예에서, 특히 프리페치 버퍼(34)가 프리페치된 PTE를 저장하고 있기 때문에, 캐시(예를 들어, 도 1의 L2 캐시(12 및 24), L1 캐시(도시 안됨) 등) 내의 PTE를 캐시하는 것이 효율적이지 않을 수 있다. 따라서, 한 실시예에서, 캐시는 다른 데이터를 일반적으로 캐시하면서(캐시불가능으로 표시되지 않는 경우), PTE 판독을 위해 데이터의 캐싱을 금지할 수 있다. 도 8은 PTE 판독의 캐시를 금지하기 위한 L2 캐시(12)의 하나의 실시예의 동작을 도시한 플로우차트이다. L2 캐시(24), L1 캐시, L3 캐시 등을 포함하는 다른 캐시도 마찬가지일 수 있다. L2 캐시(12)는 도 8에 도시된 동작을 구현하도록 구성될 수 있다. 블럭들이 이해를 쉽게 하기 위해 특정한 순서로 도시되었지만, 다른 순서가 사용될 수 있다. 블럭들은 L2 캐시(12) 내의 조합 로직에서 병렬로 수행될 수 있다. 블럭들, 블럭들의 조합 및/또는 플로우차트는 전체적으로 다중 클럭 사이클에 걸쳐 파이프라인될 수 있다. 도 8의 플로우차트는 캐시 억세스에 응답하는 동작을 도시한다. L2 캐시(12)는 하나보다 많은 억세스를 병렬로 처리하도록 구성될 수 있다. 또한, 파이프라인되는 실시예에서, 캐시 억세스는 파이프라인될 수 있고, 따라서 처리의 여러 단계에서 다중 캐시가 있을 수 있다.
L2 캐시는 요구 어드레스 상의 히트를 체크할 수 있다(판정 블럭 100). 요구가 히트이면(판정 블럭 100에서, "예" 구간), L2 캐시는 히팅 캐시 라인으로부터의 데이터를 요구자에 공급할 수 있다(블럭 102). 요구가 미스이면(판정 블럭 100에서, "아니오" 구간), L2 캐시는 요구가 PTE 판독인지를 판정할 수 있다(판정 블럭 104). 일부 실시예에서, L2 캐시에 대한 요구를 공급받는 요구자 ID는 요구가 PTE 판독이라는 것을 표시할 수 있다. 다르게는, 요구 타입 정보 또는 측대역 신호의 전송(signalling)은 요구가 PTE 판독인지 여부를 표시하는데 사용될 수 있다. 요구가 PTE 판독인 것 또는 아닌 것을 통신하기 위한 임의의 메카니즘이 사용될 수 있다. 요구가 PTE 판독이면(판정 블럭 104에서, "예" 구간), L2 캐시는 데이터의 캐싱을 금지하는, 캐시 블럭을 할당하지 않고 요구를 다음 레벨로 전달할 수 있다(블럭 106). 요구가 PTE 판독이 아니면(판정 블럭 104에서, "아니오" 구간), L2 캐시는 미스를 저장하기 위해 캐시 블럭 저장 위치를 할당할 수 있고, 다음 레벨에 필(fill)을 발행할 수 있다(블럭 108).
다음에 도 9를 참조하면, 프리페치 동작을 위해 MMU(16A)를 프로그램할 수 있는 제어 코드의 한 실시예의 동작을 도시한 플로우차트가 도시된다. 블럭들이 이해를 쉽게 하기 위해 특정한 순서로 도시되었지만, 다른 순서가 사용될 수 있다. 제어 코드를 형성하는 명령이 프로세서 상에서 실행되어, 시스템이 도 9에 도시된 동작을 수행하게 할 수 있다.
제어 코드는 MMU 프리페칭으로부터 이득을 취할 수 있는 메모리의 영역을 결정할 수 있다(블럭 110). 예를 들어, 코드는 프레임 버퍼 위치, 텍스쳐 맵 위치 등을 식별할 수 있다. 코드는 또한 프리페칭으로부터 이득을 취할 수 있는 요구 타입을 식별할 수 있고, 그들 요구 타입과 연관된 어드레스 범위를 식별할 수 있다. 제어 코드는 식별된 범위를 갖는 범위 레지스터(38A-38R)를 기입할 수 있다(블럭 112).
시스템 및 컴퓨터 억세스가능한 저장 매체
다음에 도 10을 참조하면, 시스템(150)의 한 실시예의 블럭도가 도시된다. 시스템(150)은 도 1에 도시된 시스템의 또 하나의 실시예일 수 있다. 도시된 실시예에서, 시스템(150)은 하나 이상의 주변 장치(154) 및 외부 메모리(158)에 결합된 집적 회로(152)의 적어도 하나의 예를 포함할 수 있다. 집적 회로(152)는 한 실시예에서, GPU(10), L2 캐시(12), MCMB(14), CPU(22), L2 캐시(24), 및 메인 메모리 시스템(20)용의 메모리 제어기를 포함한다. 외부 메모리(158)는 메인 메모리 시스템(20)으로부터의 메모리를 포함할 수 있다. 집적 회로(152)에 공급 전압을 공급할 뿐만 아니라 메모리(158) 및/또는 주변 장치(154)에 하나 이상의 공급 전압을 공급하는 전원(156)이 또한 제공된다. 일부 실시예에서, 집적 회로(152)의 2개 이상의 예가 포함될 수 있다(2개 이상의 외부 메모리(158)도 포함될 수 있다).
주변 장치(154)는 시스템(150)의 타입에 따라 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 한 실시예에서, 시스템(150)은 모바일 장치(예를 들어, 개인 휴대 단말(PDA), 스마트 폰 등)일 수 있고 주변 장치(154)는 와이파이, 블루투스, 셀룰러, GPS 등과 같은 다양한 타입의 무선 통신을 위한 장치들을 포함할 수 있다. 주변 장치(154)는 또한 RAM 저장 장치, 고상 저장 장치, 또는 디스크 저장 장치를 포함하는 추가적인 저장 장치를 포함할 수 있다. 주변 장치(154)는 터치 디스플레이 스크린 또는 멀티터치 디스플레이 스크린을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 장치, 마이크로폰, 스피커 등과 같은 사용자 인터페이스 장치를 포함할 수 있다. 다른 실시예에서, 시스템(150)은 임의 타입의 컴퓨팅 시스템(예를 들어, 데스크탑 퍼스널 컴퓨터, 랩탑, 워크스테이션, 넷 탑 등)일 수 있다.
이제 도 11을 참조하면, 컴퓨터 억세스가능한 저장 매체(200)의 블럭도가 도시된다. 일반적으로 말하면, 컴퓨터 억세스가능한 저장 매체는 명령 및/또는 데이터를 컴퓨터에 제공하기 위해 사용중 컴퓨터에 의해 억세스가능한 임의의 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 억세스가능한 저장 매체는 자기 또는 광학 매체, 예를 들어 디스크(고정 또는 탈착가능), 테이프, CD-ROM, 또는 DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW와 같은 저장 매체를 포함할 수 있다. 저장 매체는 RAM(예를 들어, 동기 다이너믹 RAM(SDRAM), 램버스 DRAM(RDRAM)), 스태틱 RAM(SRAM), ROM, 플래시 메모리, 유니버셜 시리얼 버스(USB) 인터페이스, 플래시 메모리 인터페이스(FMI), 시리얼 주변 인터페이스(SPI) 등과 같은 주변 인터페이스를 통해 억세스가능한 불휘발성 메모리(예를 들어, 플래시 메모리)와 같은 휘발성 또는 불휘발성 메모리 매체를 더 포함할 수 있다. 저장 매체는 마이크로일렉트로메카니컬 시스템(MEMS), 뿐만 아니라 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 억세스가능한 저장 매체를 포함할 수 있다. 도 11의 컴퓨터 억세스가능한 저장 매체(200)는 도 9와 관련하여 위에 설명된 코드를 포함할 수 있는 제어 코드(202)를 저장할 수 있다. 일반적으로, 컴퓨터 억세스가능한 저장 매체(200)는 실행시 도 9에 도시된 동작의 일부 또는 모두를 구현하는 임의의 명령 세트를 저장할 수 있다. 캐리어 매체는 컴퓨터 억세스가능한 저장 매체 및 유선 또는 무선 전송과 같은 전송 매체를 포함할 수 있다.
상기 개시가 완전히 이해된다면 본 기술 분야에 숙련된 자들에게는 다양한 변화 및 수정은 자명한 것이다. 다음의 특허 청구 범위는 이러한 모든 변화와 수정을 포함하는 것으로 해석되는 것으로 의도된다.

Claims (20)

  1. 메모리 관리 유닛(memory management unit; MMU)으로서,
    복수의 가상-물리 어드레스 변환을 저장하도록 구성된 변환 룩어사이드 버퍼(translation lookaside buffer; TLB);
    상기 TLB에서 미스된 가상 어드레스의 변환 동안 이전에 판독된 제1 페이지 테이블 엔트리를 포함하는 복수의 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 저장하도록 구성된 버퍼; 및
    상기 TLB와 상기 버퍼에 결합된 테이블 워크 유닛(table walk unit)을 포함하고, 상기 테이블 워크 유닛은 상기 TLB에서의 제1 TLB 미스의 제1 가상 어드레스를 수신하도록 결합되고, 상기 테이블 워크 유닛은 상기 변환에 대한 메모리 판독을 개시하기 전에 상기 제1 가상 어드레스에 대응하는 제2 페이지 테이블 엔트리를 찾기 위해 버퍼를 체크하도록 구성되며, 상기 테이블 워크 유닛은 상기 복수의 페이지 테이블 엔트리의 사용 이력을 추적하고 상기 이력에 응답하여 데이터의 제2 블럭에 대한 프리페치 요구를 발생하도록 구성되며, 상기 데이터의 제2 블럭은 제2 복수의 페이지 테이블 엔트리를 포함하는, 메모리 관리 유닛(MMU).
  2. 제1항에 있어서, 상기 테이블 워크 유닛은 상기 버퍼에서 제2 페이지 테이블 엔트리를 검출하도록 구성되고, 상기 테이블 워크 유닛은 상기 제2 페이지 테이블 엔트리로부터의 변환을 상기 TLB에 기입하도록 구성된 메모리 관리 유닛(MMU).
  3. 제1항에 있어서, 상기 테이블 워크 유닛은 상기 제2 페이지 테이블 엔트리가 상기 버퍼에 저장되어 있지 않다는 것을 검출하도록 구성되고, 상기 테이블 워크 유닛은 상기 제2 페이지 테이블 엔트리를 포함하는 데이터의 제3 블럭에 대한 메모리 판독을 발행하도록 구성된 메모리 관리 유닛(MMU).
  4. 제3항에 있어서, 상기 테이블 워크 유닛은 상기 제3 블럭을 상기 버퍼에 기입하여, 상기 버퍼 내의 상기 제1 블럭을 덮어쓰기(overwrite)하도록 구성된 메모리 관리 유닛(MMU).
  5. 제4항에 있어서, 상기 버퍼는 복수의 블럭을 저장하도록 구성되고, 각각의 블럭은 상기 MMU에 송신된 변환 요구가 제공된 다른 식별자에 대응하는 메모리 관리 유닛(MMU).
  6. 제1항에 있어서, 상기 블럭은 크기에 있어서 캐시 블럭보다 큰 메모리 관리 유닛(MMU).
  7. 삭제
  8. 제1항에 있어서, 상기 이력은 상기 블럭으로부터 판독된 가장 최근의 Q 페이지 테이블 엔트리의 표시를 포함하고, 상기 테이블 워크 유닛은 상기 이력이 TLB미스의 패턴은 상기 블럭의 끝에 가깝다는 것을 표시하면 프리페치 요구를 발생하도록 구성되고, Q는 1보다 큰 양의 정수인 메모리 관리 유닛(MMU).
  9. 제1항에 있어서, 상기 이력은 상기 테이블 워크 유닛에 의해 판독된 복수의 페이지 테이블 엔트리의 번호의 카운트를 포함하고, 상기 테이블 워크 유닛은 상기 복수의 페이지 테이블 엔트리의 개수와 동일한 카운트에 응답하여 프리페치 요구를 발생하도록 구성된 메모리 관리 유닛(MMU).
  10. 제1항에 있어서, 상기 이력은 상기 테이블 워크 유닛에 의해 판독된 복수의 페이지 테이블 엔트리의 번호의 카운트를 포함하고, 상기 테이블 워크 유닛은 상기 복수의 페이지 테이블 엔트리의 개수에 가까운 카운트에 응답하여 프리페치 요구를 발생하도록 구성된 메모리 관리 유닛(MMU).
  11. 복수의 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 메모리로부터 판독하는 단계;
    메모리 관리 유닛(MMU)에 상기 블럭을 보유하는 단계;
    상기 MMU에서 변환 룩어사이드 버퍼(TLB) 미스를 검출하는 단계;
    상기 TLB 미스에 대한 변환을 결정하도록 보유된 상기 블럭으로부터 상기 복수의 페이지 테이블 엔트리 중 하나를 판독하는 단계;
    상기 복수의 페이지 테이블 엔트리의 사용 이력을 상기 블럭에 유지하는 단계; 및
    상기 이력에 응답하여 제2 복수의 페이지 테이블 엔트리를 포함하는 데이터의 제2 블럭의 프리페치를 발생하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 MMU에서 제2 TLB 미스를 검출하는 단계;
    상기 제2 TLB 미스에 대응하는 제2 페이지 테이블 엔트리가 상기 복수의 페이지 테이블 엔트리에 있지 않다고 판정하는 단계;
    상기 제2 페이지 테이블 엔트리를 포함하는 제3 복수의 페이지 테이블 엔트리를 포함하는 데이터의 제3 블럭을 상기 메모리로부터 판독하는 단계; 및
    상기 MMU에 상기 제3 블럭을 보유하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서, 상기 MMU에 상기 제3 블럭을 보유하는 단계는 상기 제3 블럭으로 상기 블럭을 덮어쓰기하는 단계를 포함하는 방법.
  14. 삭제
  15. 제11항에 있어서,
    변환 룩어사이드 버퍼(TLB) 미스의 정규 패턴을 경험할 것으로 예상되는 하나 이상의 어드레스 범위를 결정하는 단계; 및
    상기 어드레스 범위를 갖는 메모리 관리 유닛(MMU) 내의 하나 이상의 레지스터를 프로그램하는 단계를 더 포함하고, 상기 MMU는 페이지 테이블 엔트리의 블럭에 대한 프리페치 요구를 발생하도록 구성되고, 각각의 블럭은 상기 하나 이상의 어드레스 범위에서의 TLB 미스에 응답하는 복수의 페이지 테이블 엔트리를 포함하고, 상기 MMU는 상기 하나 이상의 범위 밖에 있는 TLB 미스에 대한 프리페치 요구를 발생하는 것을 금지하도록 구성된 방법.
  16. 메모리 관리 유닛(memory management unit; MMU)을 포함하는 프로세서로서,
    상기 MMU는
    복수의 가상-물리 어드레스 변환을 저장하도록 구성된 변환 룩어사이드 버퍼(TLB);
    상기 TLB에서 미스된 가상 어드레스의 변환 동안 이전에 판독된 제1 페이지 테이블 엔트리를 포함하는 복수의 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 저장하도록 구성된 버퍼; 및
    상기 TLB와 상기 버퍼에 결합된 테이블 워크 유닛을 포함하고,
    상기 테이블 워크 유닛은 상기 TLB에서의 제1 TLB 미스의 제1 가상 어드레스를 수신하도록 결합되고, 상기 테이블 워크 유닛은 상기 변환에 대한 메모리 판독을 개시하기 전에 상기 제1 가상 어드레스에 대응하는 제2 페이지 테이블 엔트리를 찾기 위해 버퍼를 체크하도록 구성되며, 상기 테이블 워크 유닛은 상기 복수의 페이지 테이블 엔트리의 사용 이력을 추적하고 상기 이력에 응답하여 데이터의 제2 블럭에 대한 프리페치 요구를 발생하도록 구성되며, 상기 데이터의 제2 블럭은 제2 복수의 페이지 테이블 엔트리를 포함하는, 프로세서.
  17. 하나 이상의 프로세서를 포함하는 시스템으로서,
    상기 프로세서 각각은 메모리 관리 유닛(memory management unit; MMU)을 포함하고,
    상기 MMU는
    복수의 가상-물리 어드레스 변환을 저장하도록 구성된 변환 룩어사이드 버퍼(TLB);
    상기 TLB에서 미스된 가상 어드레스의 변환 동안 이전에 판독된 제1 페이지 테이블 엔트리를 포함하는 복수의 페이지 테이블 엔트리를 포함하는 데이터의 블럭을 저장하도록 구성된 버퍼; 및
    상기 TLB와 상기 버퍼에 결합된 테이블 워크 유닛을 포함하고,
    상기 테이블 워크 유닛은 상기 TLB에서의 제1 TLB 미스의 제1 가상 어드레스를 수신하도록 결합되고, 상기 테이블 워크 유닛은 상기 변환에 대한 메모리 판독을 개시하기 전에 상기 제1 가상 어드레스에 대응하는 제2 페이지 테이블 엔트리를 찾기 위해 버퍼를 체크하도록 구성되며, 상기 테이블 워크 유닛은 상기 복수의 페이지 테이블 엔트리의 사용 이력을 추적하고 상기 이력에 응답하여 데이터의 제2 블럭에 대한 프리페치 요구를 발생하도록 구성되며, 상기 데이터의 제2 블럭은 제2 복수의 페이지 테이블 엔트리를 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 하나 이상의 프로세서는 하나 이상의 그래픽 프로세싱 유닛(graphics processiing units; GPU)을 포함하는 시스템.
  19. 제18항에 있어서,
    상기 하나 이상의 프로세서는 하나 이상의 CPU(central processing units)를 포함하는 시스템.
  20. 제17항에 있어서,
    상기 하나 이상의 프로세서는 하나 이상의 CPU를 포함하는 시스템.
KR1020127003086A 2009-07-13 2010-07-12 Tlb 프리페칭 KR101379596B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/501,643 US8397049B2 (en) 2009-07-13 2009-07-13 TLB prefetching
US12/501,643 2009-07-13
PCT/US2010/041728 WO2011008702A1 (en) 2009-07-13 2010-07-12 Tlb prefetching

Publications (2)

Publication Number Publication Date
KR20120037975A KR20120037975A (ko) 2012-04-20
KR101379596B1 true KR101379596B1 (ko) 2014-04-01

Family

ID=42782105

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127003086A KR101379596B1 (ko) 2009-07-13 2010-07-12 Tlb 프리페칭

Country Status (6)

Country Link
US (1) US8397049B2 (ko)
EP (1) EP2454669A1 (ko)
JP (1) JP5580894B2 (ko)
KR (1) KR101379596B1 (ko)
CN (1) CN102498477B (ko)
WO (1) WO2011008702A1 (ko)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
JP5428617B2 (ja) * 2009-07-28 2014-02-26 富士通株式会社 プロセッサ及び演算処理方法
JP5377182B2 (ja) * 2009-09-10 2013-12-25 株式会社東芝 制御装置
US9569348B1 (en) * 2009-09-22 2017-02-14 Nvidia Corporation Method for automatic page table compression
JP5488225B2 (ja) * 2010-06-09 2014-05-14 富士通株式会社 データ管理システム、データ管理方法、及びデータ管理プログラム
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
US9092358B2 (en) * 2011-03-03 2015-07-28 Qualcomm Incorporated Memory management unit with pre-filling capability
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
KR20120129695A (ko) * 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US20120317377A1 (en) * 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
JP2013008094A (ja) * 2011-06-22 2013-01-10 Sony Corp メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体
US9009445B2 (en) 2011-10-20 2015-04-14 Apple Inc. Memory management unit speculative hardware table walk scheme
CN104040490B (zh) 2011-11-22 2017-12-15 英特尔公司 用于多引擎微处理器的加速的代码优化器
KR101832679B1 (ko) 2011-11-22 2018-02-26 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US9378150B2 (en) * 2012-02-28 2016-06-28 Apple Inc. Memory management unit with prefetch ability
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
KR101667772B1 (ko) 2012-08-18 2016-10-19 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US20140108766A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
US10585801B2 (en) 2012-11-26 2020-03-10 Advanced Micro Devices, Inc. Prefetch kernels on a graphics processing unit
KR102002900B1 (ko) 2013-01-07 2019-07-23 삼성전자 주식회사 메모리 관리 유닛을 포함하는 시스템 온 칩 및 그 메모리 주소 변환 방법
KR102069273B1 (ko) * 2013-03-11 2020-01-22 삼성전자주식회사 시스템 온 칩 및 그 동작방법
KR101946455B1 (ko) * 2013-03-14 2019-02-11 삼성전자주식회사 시스템 온-칩 및 이의 동작 방법
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9086813B2 (en) * 2013-03-15 2015-07-21 Qualcomm Incorporated Method and apparatus to save and restore system memory management unit (MMU) contexts
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014143055A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
CN104239236B (zh) * 2013-06-17 2018-02-13 华为技术有限公司 旁路转换缓冲缺失的处理方法及旁路转换缓冲
CN104424117B (zh) * 2013-08-20 2017-09-05 华为技术有限公司 内存物理地址查询方法和装置
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
US20150134933A1 (en) * 2013-11-14 2015-05-14 Arm Limited Adaptive prefetching in a data processing apparatus
US9563571B2 (en) * 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9507726B2 (en) * 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
GB2528842B (en) 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
US9990305B2 (en) 2014-09-19 2018-06-05 Nxp Usa, Inc. Memory management component having multiple memory management modules and method therefor
US20160133087A1 (en) * 2014-11-10 2016-05-12 Rising Digital Corp. Gaming machine with bonus feature
WO2016154789A1 (zh) * 2015-03-27 2016-10-06 华为技术有限公司 数据处理方法、内存管理单元及内存控制设备
US9792215B2 (en) 2015-03-28 2017-10-17 Qualcomm Incorporated Command-driven translation pre-fetch for memory management units
CN114528023A (zh) * 2015-04-24 2022-05-24 优创半导体科技有限公司 具有寄存器直接分支并使用指令预加载结构的计算机处理器
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US10037280B2 (en) * 2015-05-29 2018-07-31 Qualcomm Incorporated Speculative pre-fetch of translations for a memory management unit (MMU)
KR102026877B1 (ko) * 2015-06-16 2019-09-30 한국전자통신연구원 메모리 관리 유닛 및 그 동작 방법
US20160378684A1 (en) 2015-06-26 2016-12-29 Intel Corporation Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory
US9910780B2 (en) * 2015-10-28 2018-03-06 International Business Machines Corporation Pre-loading page table cache lines of a virtual machine
US20170161194A1 (en) * 2015-12-02 2017-06-08 Advanced Micro Devices, Inc. Page-based prefetching triggered by tlb activity
KR102429903B1 (ko) * 2015-12-03 2022-08-05 삼성전자주식회사 비휘발성 메인 메모리 시스템의 페이지 폴트 처리 방법
US10261916B2 (en) * 2016-03-25 2019-04-16 Advanced Micro Devices, Inc. Adaptive extension of leases for entries in a translation lookaside buffer
GB2551756B (en) * 2016-06-29 2019-12-11 Advanced Risc Mach Ltd Apparatus and method for performing segment-based address translation
US9972065B2 (en) * 2016-09-23 2018-05-15 Apple Inc. Resource layout randomization for GPU execution
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
US10565676B2 (en) * 2017-04-17 2020-02-18 Intel Corporation Thread prefetch mechanism
US10387320B2 (en) 2017-05-12 2019-08-20 Samsung Electronics Co., Ltd. Integrated confirmation queues
US10552042B2 (en) * 2017-09-06 2020-02-04 Samsung Electronics Co., Ltd. Effective transaction table with page bitmap
US10733688B2 (en) * 2017-09-26 2020-08-04 Intel Corpoation Area-efficient implementations of graphics instructions
CN109710544B (zh) * 2017-10-26 2021-02-09 华为技术有限公司 内存访问方法、计算机系统以及处理装置
US20190163641A1 (en) * 2017-11-27 2019-05-30 Intel Corporation Page translation prefetch mechanism
JP7155629B2 (ja) 2018-06-07 2022-10-19 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
CN109461113B (zh) * 2018-10-11 2021-07-16 中国人民解放军国防科技大学 一种面向数据结构的图形处理器数据预取方法及装置
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11100007B2 (en) * 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11194575B2 (en) * 2019-11-07 2021-12-07 International Business Machines Corporation Instruction address based data prediction and prefetching
US11314445B2 (en) * 2019-11-19 2022-04-26 Western Digital Technologies, Inc. Pattern tracking for efficiently predicting control pages
US11429535B1 (en) 2021-07-09 2022-08-30 Apple Inc. Cache replacement based on traversal tracking
US20230057242A1 (en) * 2021-08-10 2023-02-23 Baidu Usa Llc Countermeasures against side-channel attacks on secure encrypted virtualization (sev)-encrypted state (sev-es) processors
US11663132B2 (en) * 2021-10-13 2023-05-30 Arm Limited Prefetching
JP2023072396A (ja) * 2021-11-12 2023-05-24 富士通株式会社 メモリ管理ユニット、メモリ管理方法、及び、情報処理装置
EP4283476A1 (en) * 2022-05-24 2023-11-29 Samsung Electronics Co., Ltd. Input output memory management unit and electronic device having the same
WO2024030707A1 (en) * 2022-08-01 2024-02-08 Qualcomm Incorporated Using retired pages history for instruction translation lookaside buffer (tlb) prefetching in processor-based devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006065416A2 (en) * 2004-12-16 2006-06-22 Freescale Semiconductor, Inc. Method and apparatus for address translation
US20070033372A1 (en) * 2005-08-02 2007-02-08 Everhart Craig F Windowing external block translations

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62151958A (ja) * 1985-12-25 1987-07-06 Matsushita Electric Ind Co Ltd 仮想アドレス変換装置
US5282274A (en) * 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
JPH0588983A (ja) * 1991-09-30 1993-04-09 Fujitsu Ltd チヤネル装置の動的アドレス変換方法
JPH06149680A (ja) * 1992-11-12 1994-05-31 Nec Corp アドレス変換装置
JP2005108262A (ja) * 1994-09-09 2005-04-21 Renesas Technology Corp データ処理装置
JPH08161230A (ja) * 1994-12-05 1996-06-21 Oki Electric Ind Co Ltd オンデマンドページングにおける先読み方法
US6175898B1 (en) * 1997-06-23 2001-01-16 Sun Microsystems, Inc. Method for prefetching data using a micro-TLB
US7103748B2 (en) * 2002-12-12 2006-09-05 International Business Machines Corporation Memory management for real-time applications
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US20060194529A1 (en) * 2005-02-25 2006-08-31 Smith Richard S Retractable abrasive sharpener and carrying case
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006065416A2 (en) * 2004-12-16 2006-06-22 Freescale Semiconductor, Inc. Method and apparatus for address translation
US20070033372A1 (en) * 2005-08-02 2007-02-08 Everhart Craig F Windowing external block translations

Also Published As

Publication number Publication date
WO2011008702A1 (en) 2011-01-20
KR20120037975A (ko) 2012-04-20
US8397049B2 (en) 2013-03-12
US20110010521A1 (en) 2011-01-13
CN102498477B (zh) 2015-02-11
JP2012533135A (ja) 2012-12-20
CN102498477A (zh) 2012-06-13
JP5580894B2 (ja) 2014-08-27
EP2454669A1 (en) 2012-05-23

Similar Documents

Publication Publication Date Title
KR101379596B1 (ko) Tlb 프리페칭
US10776022B2 (en) Combined transparent/non-transparent cache
EP2452265B1 (en) Block-based non-transparent cache
US8392658B2 (en) Cache implementing multiple replacement policies
US9208084B2 (en) Extended main memory hierarchy having flash memory for page fault handling
US9223710B2 (en) Read-write partitioning of cache memory
JP5313168B2 (ja) プロセッサにおいてキャッシュポリシーを設定するための方法および装置
KR20170100003A (ko) 가상 주소들을 사용하여 액세스된 캐시
KR102478766B1 (ko) 디스크립터 링 관리
JPWO2010032433A1 (ja) バッファメモリ装置、メモリシステム及びデータ読出方法
JP2011141754A (ja) キャッシュメモリ
US7769979B1 (en) Caching of page access parameters

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
FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee