KR101467069B1 - 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치 - Google Patents

일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR101467069B1
KR101467069B1 KR1020127016220A KR20127016220A KR101467069B1 KR 101467069 B1 KR101467069 B1 KR 101467069B1 KR 1020127016220 A KR1020127016220 A KR 1020127016220A KR 20127016220 A KR20127016220 A KR 20127016220A KR 101467069 B1 KR101467069 B1 KR 101467069B1
Authority
KR
South Korea
Prior art keywords
register
instruction
cache
flushed
tlb
Prior art date
Application number
KR1020127016220A
Other languages
English (en)
Other versions
KR20120096031A (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 KR20120096031A publication Critical patent/KR20120096031A/ko
Application granted granted Critical
Publication of KR101467069B1 publication Critical patent/KR101467069B1/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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

복수의 캐시 라인의 플러싱 및/또는 복수의 TLB 엔트리의 무효화를 수행하기 위한 시스템, 방법 및 장치가 개시된다. 일 방법으로, 프로세서의 복수의 캐시 라인을 플러싱하기 위해, 프로세서의 복수의 캐시 라인이 플러싱되어야 함을 지시하는 제1 필드를 포함하는 단일 명령어를 수신하는 단계 및 단일 명령어에 응답하여 프로세서의 복수의 캐시 라인을 플러싱하는 단계를 포함하는 방법이 제공된다.

Description

일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 TLB 무효화를 위한 시스템, 방법 및 장치{SYSTEM, METHOD, AND APPARATUS FOR A CACHE FLUSH OF A RANGE OF PAGES AND TLB INVALIDATION OF A RANGE OF ENTRIES}
본 발명의 실시예들은 정보 처리(information processing) 분야에 관한 것으로, 특히 캐시(cache) 및 TLB 유지(translation look-aside maintenance) 분야에 관한 것이다.
캐시 메모리 소자는 작고 빠른 메모리로서, 더 크고 더 느린 메모리에서의 가장 자주 액세스(access)되는 데이터를 저장하는데 이용될 수 있다. RAM(Random Access Memory)은 큰 스토리지 용량(storage capacity)을 상대적으로 저렴한 가격에 제공한다. 하지만, RAM에 대한 액세스는 현재 사용되는 마이크로프로세서(microprocessors)의 처리 속도에 비해 상대적으로 느리다. 캐시 메모리에서, 스토리지 용량은 상대적으로 작을 수 있으나, 거기에 저장된 데이터에 대한 액세스 속도는 빠르다.
캐시는 특정한 시점에 가장 필요할 만한 명령어(instruction), 변환(translation) 또는 데이터를 저장하도록 다양한 방법으로 관리된다. 캐시가 액세스되고 요청된 데이터를 저장하고 있는 경우, 캐시 "적중(hit)"이라 한다. 그렇지 않고, 캐시가 요청된 데이터를 저장하고 있지 않은 경우, 캐시 "실패(miss)"라 한다. 따라서, 캐시 내용물(contents)은 전형적으로 캐시 실패에 대한 캐시 적중의 비(cache hit-to-miss ratio)를 최대화하려는 방향으로 관리된다.
장치들 및 운영 시스템들(OS: operating systems)은 유지 절차의 일환으로서 캐시로부터의 데이터 페이지들(pages)과 TLBs로부터의 엔트리들(entries)을 플러싱(flush)하고자 한다.
캐시 라인(cache line)을 플러싱하는 기술은 선형(linear) 또는 가상 메모리 어드레스(virtual memory address)와 연관될 수 있다. 상기 기술의 실행으로, 일관성 영역(coherency domain) 내의 모든 캐시로부터의 오퍼랜드(operand)와 연관된 캐시 라인이 플러싱된다. 멀티-프로세서(multi-processor) 환경에서, 예를 들면, 특정한 캐시 라인이 프로세서 상태에 따라서 시스템 내 모든 마이크로프로세서의 (예를 들면, 일관성 영역과 같은) 모든 캐시 계층 레벨(cache hierarchy levels)로부터 플러싱된다. MESI(Modified, Exclusive, Shared, Invalid) 프로토콜, 기록-무효화 프로토콜(write-invalidate protocol)은 2개의 MESI-비트에 의해 관리되는 4개의 상태 중 하나를 모든 캐시 라인에 부여한다. 4개의 상태는 캐시 라인의 4가지 가능한 상태를 또한 식별한다. 만일 프로세서가 "배타(exclusive)" 또는 "공유(shared)" 상태인 경우, 플러싱 동작은 캐시 라인이 무효화되는 동작에 해당한다. 또 다른 예시로 프로세서가 "변경(modified)" 상태인 경우에도 마찬가지이다. 만일 캐시 제어기(cache controller)가 라이트 백(write-back) 방식을 구현하고 캐시 적중(cache hit)에서 데이터를 프로세서로부터 그 캐시에 기록만 하는 경우, 캐시 라인 내용물은 메인 메모리(main memory)로 이동되어야만 하고 캐시 라인은 무효화된다. 또한, 소정의 실시예들에서, GOLS 서브 프로토콜들(sub-protocols)뿐 아니라 MESI 및 MOESI 프로토콜들이 사용된다.
본 발명의 실시예들은 첨부되는 도면들에서 한정이 아닌 예시적인 의미로 도시되는데, 여기서 동일한 참조 번호는 동일하거나 대응되는 요소들을 지칭한다.
도 1은 일련의 캐시 라인의 캐시 플러싱 및/또는 일련의 TLB 엔트리의 무효화를 지원하는 프로세서 코어(processor core)의 일 실시예를 나타내는 도면.
도 2는 REP CLFLUSH(repeat cache line flush) 명령어의 여러 가지 예시적인 실시예들을 나타내는 도면.
도 3은 REP CLFLUSH 명령어의 일 실시예를 처리하는 방법의 일 실시예를 나타내는 블록 흐름도.
도 4는 REP CLFLUSH 명령어 실행의 실시예들을 나타내는 도면.
도 5는 REP INVLPG 명령어의 여러 가지 예시적인 실시예들을 나타내는 도면.
도 6은 REP INVLPG 명령어의 일 실시예를 처리하는 방법의 일 실시예를 나타내는 블록 흐름도.
도 7은 REP INVLPG 명령어 실행의 실시예들을 나타내는 도면.
도 8은 바람직한 컴퓨터 시스템의 예시적인 실시예를 나타내는 블록도.
도 9는 바람직한 컴퓨터 시스템의 예시적인 실시예를 나타내는 블록도.
도 10은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도.
도 11은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도.
도 12는 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도.
예시적인 프로세서 코어
도 1은 일련의 캐시 라인의 캐시 플러싱 및/또는 일련의 TLB 엔트리의 무효화를 지원하는 프로세서 코어의 일 실시예를 나타낸다. 본 실시예는 프로세서 코어에 포함될 모든 특징들을 반드시 나타내지는 않는데, 본 발명의 실시예들에 대한 기술을 불분명하게 하지 않기 위함이다. 프로세서 코어(101)는 코어(101)에 의한 실행을 위한 명령어들을 가져오는(fetch) 페치 유닛(fetch unit; 103)을 포함한다. 캐시, 메인 메모리, 하드 디스크(hard disk) 등과 같은 임의의 스토리지 장치로부터 명령어들을 가져올 수 있다. 프로세서 코어(101)는 페치된 명령어를 디코드하는 디코드 유닛(decode unit; 105)을 또한 포함한다. 아래에 기술된 명령어들은 본 유닛에 의해 디코드된다. 일 실시예에서, 디코드 유닛(105)은 페치된 명령어를 하나 이상의 마이크로오퍼레이션(micro-operations)으로 디코드한다. 마이크로오퍼레이션들에 대한 명령어들의 매핑(mapping)은 마이크로코드 로직(microcode logic; 121) 내에 구현될 수 있다.
소정의 실시예들에서, 프로세서 코어(101)는 스케줄 유닛(schedule unit; 107)을 포함한다. 예를 들어, 디코드된 명령어의 모든 소스 값(source values)이 이용 가능할 수 있을 때까지 등 명령어들이 디스패치(dispatch) 준비될 때까지 스케줄 유닛(107)은 {예를 들어, 디코드 유닛(105)으로부터 수신된} 디코드된 명령어들의 저장과 연관된 다양한 오퍼레이션들을 수행한다. 일 실시예에서, 스케줄 유닛(107)은 디코드된 명령어들이 스케줄링하여 실행되도록 하나 이상의 실행 유닛(execution units; 109)에 발송(issues)(디스패치)하여 실행되도록 한다. 실행 유닛(109)은 하나 이상의 부동 소수점 기능 유닛(floating point functional unit), ALU 기능 유닛, 메모리 기능 유닛, 브랜칭 기능 유닛(branching functional unit) 등을 포함할 수 있다. 이러한 기능 유닛들은 {예를 들어, 디코드 유닛(105)에 의해 디코드된 명령어들과 같은} 디코드된 명령어들 및/또는 {예를 들어, 스케줄 유닛(107)에 의해} 디스패치된 명령어들을 실행한다. 더 나아가, 소정의 실시예들에서, 실행 유닛(109)은 순서를 바꿔서 명령어들을 실행한다. 따라서, 이러한 실시예들에서 프로세서 코어(101)는 순서를 바꾸는(out-of-order) 프로세서 코어이다. 그 밖의 실시예들에서, 실행 유닛(109)은 순서대로 명령어들을 실행한다. 이러한 실시예들에서, 프로세서 코어(101)는 순서에 따르는(in-order) 프로세서 코어이다.
프로세서 코어(101)는 퇴거 유닛(retirement unit; 111)을 또한 포함할 수 있다. 퇴거 유닛(111)은 실행된 명령어들이 커밋된(committed) 후 이들을 퇴거시킨다. 소정의 실시예들에서, 명령어들의 퇴거에 의해 프로세서 상태가 명령어들의 실행으로부터 커밋되고 명령어들에 의해 사용된 물리적 레지스터들(physical registers)이 할당 해제되는 등이 실행된 초래된다.
프로세서 코어는 레지스터(113)를 또한 포함한다. 이러한 레지스터는 (예를 들어, EAX, EBC, ECX, EDX와 같은) 범용, (예를 들어, CS, DS, ES, FS, GS, SS와 같은) 세그먼트(segment), (예를 들어, ESI, EDI, EBP, EIP, ESP와 같은) 인덱스(index) 및 포인터(pointer) 및 (예를 들어, EFLAGS와 같은) 인디케이터(indicator) 레지스터들 등과 같은 전형적인 x86 레지스터들을 포함할 수 있다.
프로세서 코어(101)는 캐시(119)를 또한 포함할 수 있다. 이러한 캐시는 하나 이상의 레벨(levels)을 포함할 수 있다. 캐시 로직(cache logic; 123)은 다양한 오퍼레이션을 수행함으로써 캐시(119)를 유지한다. 소정의 실시예들에서, 캐시 로직(123)은 후술될 방법들의 실시예들을 수행하기 위해 하나 이상의 상태 머신(state machines)을 포함한다.
마지막으로, 프로세서는 TLB(Translation Look-aside Buffer; 115)를 또한 포함할 수 있다. TLB(115)는 고정된 개수의 슬롯(slots)을 가지는데, 이러한 슬롯들은 가상 어드레스를 물리적 어드레스에 매핑하는 페이지 테이블 엔트리(page table entries)를 저장한다.
앞서 기술된 유닛들 및 로직은 회로 및/또는 소프트웨어의 임의의 결합일 수 있다.
캐시 라인 플러싱의 반복
앞서 기술된 프로세서 코어에 의해 실행되는 CLFLUSH(cache line flush) 명령어는 모든 레벨의 프로세서 캐시 계층(데이터 및 명령어)으로부터의 소스 오퍼랜드(source operand)로 특정되는 선형 어드레스를 저장하는 싱글 캐시 라인(single cache line)을 무효화한다. 무효화는 캐시 일관성 영역에 걸쳐 브로드캐스트(broadcast)된다. 만일 임의의 레벨의 캐시 계층에서 라인이 메모리와 일치하지 않는 경우{더티(dirty)}, 그 라인은 무효화 전에 메모리에 저장된다. 소스 오퍼랜드는 바이트 메모리 위치(byte memory location)이다.
CLFLUSH 명령어는 모든 특권 레벨(privilege levels)에서 사용될 수 있고, 모든 승인 체킹(permission checking)을 받으며, CLFLUSH를 제외한 바이트 로드(byte load)와 연관된 폴트들(faults)은 실행 전용 세그먼트(execute-only segment)로 허용된다. REP CLFLUSH 명령어가 아래에 기술된다. 이러한 명령어는 프로세서 코어(101)로 하여금 일련의 캐시 라인을 플러싱하게 한다. 도 2는 REP CLFLUSH 명령어의 여러 가지 예시적인 실시예들을 나타낸다. 도 2(a)는 REP CLFLUSH 명령어를 오피코드(opcode)만으로 나타낸다. 이러한 명령어에서, 플러싱될 라인들의 개수 및 적어도 시작 어드레스는 암시적으로 참조된다. 예를 들어, 소정의 실시예들에서, 시작 어드레스는 ES:ESI 레지스터 쌍(pair)과 같은 오프셋 쌍(offset pair) 및 ECX 레지스터 같은 범용 레지스터 내의 카운터(라인들의 개수) 같은 세그먼트(segment)에 저장된다. 물론, 이들은 단지 예시들이며, 그 밖의 레지스터들 또는 그 밖의 명령어 오퍼랜드들이 사용될 수 있다.
도 2(b)는 오피코드 및 명시적인 카운터 값(counter value)을 포함하는 REP CLFLUSH 명령어를 나타낸다. 소정의 실시예들에서, 카운터 값은 즉시 값(immediate value)이고 그 밖의 실시예들에서 카운터 값은 레지스터에 저장된다. 이러한 명령어에서, 플러싱될 라인들의 시작 어드레스는 암시적으로 참조된다. 예를 들어, 소정의 실시예들에서, 시작 어드레스는 ES:ESI 레지스터 쌍과 같은 오프셋 쌍 세그먼트에 저장된다. 물론, 이는 단지 예시이며, 임의의 레지스터가 (1) 임의의 세그먼트 레지스터 CS, DS, ES, FS, SS 및 GS; (2) 범용 레지스터 EAX{어쿠물레이터(accumulator)}, EBX{베이스 레지스터(base register)}, ECX{카운트 레지스터(count register)}, EDX{데이터 레지스터(data register)}, ESI{소스 인덱스(source index)}, EDI{목적지 인덱스(destination index)}, EBP{베이스 포인터(base pointer)}, ESP{스택 포인터(stack pointer)}; 및 이들의 결합을 포함하여, 그러나 이들에 제한되지 않고 사용될 수 있다.
도 2(c)는 오피코드 및 명시적인 시작 어드레스를 포함하는 REP CLFLUSH 명령어를 나타낸다. 이러한 명령어에서, 플러싱될 라인들의 개수는 암시적으로 참조된다. 예를 들어, 소정의 실시예들에서, 카운터는 ECX 레지스터와 같은 범용 레지스터 내에 저장된다. 물론, 이는 단지 예시이고 그 밖의 레지스터들이 사용될 수 있다.
도 2(d)는 오피코드, 명시적인 카운터 값 및 명시적인 시작 어드레스를 포함하는 REP CLFLUSH 명령어를 나타낸다.
도 3은 REP CLFLUSH 명령어의 일 실시예를 처리하는 방법의 일 실시예를 나타내는 블록 흐름도이다. 다양한 실시예들에서, 범용 프로세서, {예를 들어, 그래픽 프로세서(graphics processor) 또는 디지털 신호 프로세서(digital signal processor)와 같은} 특수 목적 프로세서, {예를 들어, 암호화 가속기(cryptographic accelerator)와 같은} 하드웨어 가속기 또는 다른 형태의 논리 소자 또는 명령어 처리 장치에 의해 방법이 수행될 수 있다.
단계 301에서 프로세서 또는 그 밖의 명령어 처리 장치는 REP CLFLUSH 명령어를 수신한다. 하나 이상의 실시예에서, REP CLFLUSH 명령어는 시작 캐시 라인 어드레스 및 플러싱할 캐시 라인들의 개수를 의미하는 값을 지시한다. 소정의 실시예들에서, REP CLFLUSH 명령어는 시작 캐시 라인 어드레스 및 플러싱할 캐시 라인들의 개수를 의미하는 값 중에 적어도 하나를 명시적으로 포함한다.
명령어의 수신에 응답하여, 단계 303에서 프로세서는 REP CLFLUSH 명령어에 의해 지시되는 캐시 라인들을 플러싱한다.
도 4는 REP CLFLUSH 명령어 실행 방법의 실시예들을 나타낸다. 단계 401에서, 카운터 값 및 캐시 라인 어드레스가 로드(load)된다. 카운터 값은 플러싱될 라인들의 개수로 설정된다. 캐시 라인 어드레스는 플러싱될 일련의 캐시 라인들의 시작을 나타낸다. 예를 들면, 소정의 실시예들에서, ES:ESI에는 시작 어드레스가 로드되고, ECX에는 카운터 값이 로드된다.
REP CLFLUSH 명령어가 앞서 기술된 바와 같이 카운터 및/또는 어드레스에 대한 명시적인 오퍼랜드들을 포함하는 소정의 실시예들에서, 단계 401에서의 로딩(loading)은 다를 수 있다. 예를 들면, REP CLFLUSH 명령어가 카운터에 대한 즉시 값을 포함하는 경우, REP CLFLUSH 명령어가 디코드되기 전에는 레지스터에 카운터 값이 로드되지 않는다.
단계 403에서, 어플리케이션(application) 또는 운영 시스템은 REP CLFLUSH 명령어의 실행을 요청함으로써 플러싱될 일련의 캐시 라인들을 요청한다. 이러한 명령어는 적어도 페치되고, 디코드되고, 실행된다.
소정의 실시예들에서, 이러한 명령어를 마이크로오퍼레이션들로 변환하도록 마이크로코드가 단계 405에서 호출된다. 이러한 마이크로오퍼레이션들은 마이크로코드(121)와 같은 마이크로코드 내에 저장된다. 그 밖의 실시예들에서, 캐시 로직(123)의 상태 머신(111)과 같은 상태 머신은 이러한 명령어를 수행하기 위해 단계 405에서 호출된다. 명령어의 실행은 프로세서 코어의 구현에 따라서 실행 유닛(109) 또는 캐시 로직(123)에 의해 수행될 수 있다.
(REP CLFLUSH 명령어의 디코드 전에 로드되거나 또는 그 디코드와 연결되어 참조된) 캐시 라인 어드레스와 연관된 캐시 라인은 단계 407에서 플러싱된다. 예를 들어, ES:ESI에서의 캐시 라인이 플러싱된다.
단계 409에서 카운터 값은 감소한다. 일 실시예에서, 이러한 카운터 값은 ECX 레지스터에 저장되고 이러한 레지스터가 감소한다.
카운터 값이 0인가에 대한 판정이 단계 411에서 수행된다. 만일 카운터 값이 0이 아니라면, 플러싱될 다음 라인의 캐시 라인 어드레스가 단계 413에서 판정된다. 소정의 실시예들에서, 이는 이전의 캐시 라인 크기에 대한 (예를 들어, 64 비트와 같은) 셋(set) 크기를 이제 막 플러싱된 캐시 라인의 어드레스에 부가함으로써 수행된다. 그 밖의 실시예들에서, (예를 들어, 64 비트와 같은) 셋 크기는 이전 캐시 라인 크기로부터 빼져서 이제 막 플러싱된 캐시 라인 어드레스로 지정된다. 그 캐시 라인은 단계 407에서 플러싱된다.
만일 카운터 값이 0이라면, 플러싱된 일련의 전체 캐시 라인 및 명령어는 퇴거될 수 있다.
카운터 값이 감소하는 앞선 언급과는 달리, 그 밖의 실시예들에서, 카운터는 증가하고 미리 설정된 값(preset value)에 비교되어, 적절한 개수의 라인들이 플러싱되었는지 판정한다.
무효화 페이지 테이블 엔트리의 반복
앞서 기술된 프로세서 코어에 의해 실행되는 무효화 TLB 엔트리(INVLPG: invalidate TLB entry) 명령어는 소스 오퍼랜드로 특정된 TLB 엔트리를 무효화한다. 소스 오퍼랜드는 메모리 어드레스이다. 프로세서 코어는 그 어드레스를 저장하는 페이지를 판정하고 그 페이지에 대한 TLB 엔트리를 플러싱한다.
REP INVLPG(repeat invalidate TLB entry) 명령어가 아래에 기술된다. 이러한 명령어는 프로세서 코어(101)로 하여금 복수의 TLB 엔트리를 무효화하게 한다. 도 5는 REP INVLPG 명령어의 여러 가지 예시적인 실시예들을 나타낸다. 도 5(a)는 오피코드만으로 구성된 REP INVLPG 명령어를 나타낸다. 이러한 명령어에서, 무효화될 TLB 엔트리들의 개수 및 적어도 시작 어드레스가 암시적으로 참조된다. 예를 들어, 소정의 실시예들에서, DS:EDI 레지스터 쌍과 같은 오프셋 쌍 및 ECX 레지스터와 같은 범용 레지스터 내의 카운터(엔트리들의 개수)와 같은 세그먼트 내에 시작 어드레스가 저장된다. 물론 이는 단지 예시이고, 임의의 레지스터가 1) 임의의 세그먼트 레지스터 CS, DS, ES, FS, SS 및 GS; 2) 범용 레지스터 EAX(어쿠물레이터), EBX(베이스 레지스터), ECX(카운트 레지스터), EDX(데이터 레지스터), ESI(소스 인덱스), EDI(목적지 인덱스), EBP(베이스 포인터), ESP(스택 포인터); 및 이들의 결합을 포함하여, 그러나 이들에 제한되지 않고 사용될 수 있다.
도 5(b)는 오피코드 및 명시적인 카운터 값을 포함하는 REP INVLPG 명령어를 나타낸다. 소정의 실시예들에서 카운터 값은 즉시 값이고, 그 밖의 실시예들에서 카운터 값은 레지스터 내에 저장된다. 이러한 명령어에서, 무효화될 엔트리들의 시작 어드레스는 암시적으로 참조된다. 예를 들어, 소정의 실시예들에서, 시작 어드레스는 DS:EDI 레지스터 쌍과 같은 오프셋 쌍과 같은 세그먼트 내에 저장된다. 물론, 이는 단지 예시이며 그 밖의 레지스터들이 사용될 수 있다.
도 5(c)는 오피코드 및 명시적인 시작 어드레스를 포함하는 REP INVLPG 명령어를 나타낸다. 이러한 명령어에서, 무효화될 엔트리들의 개수가 암시적으로 참조된다. 예를 들어, 소정의 실시예들에서, 카운터는 ECX 레지스터와 같은 범용 레지스터에 저장된다. 물론, 이는 단지 예시이고 그 밖의 레지스터들이 사용될 수 있다.
도 5(d)는 오피코드, 명시적인 카운터 값 및 명시적인 시작 어드레스를 포함하는 REP INVLPG 명령어를 나타낸다.
도 6은 REP INVLPG 명령어의 일 실시예를 처리하는 방법의 일 실시예를 나타내는 블록 흐름도이다. 다양한 실시예들에서, 범용 프로세서, (예를 들어, 그래픽 프로세서 또는 디지털 신호 프로세서와 같은) 특수 목적 프로세서, (예를 들어, 암호화 가속기와 같은) 하드웨어 가속기 또는 다른 형태의 논리 소자 또는 명령어 처리 장치에 의해 방법이 수행될 수 있다.
단계 601에서 프로세서 또는 기타 명령어 처리 장치는 REP INVLPG 명령어를 수신한다. 하나 이상의 실시예들에서, REP INVLPG 명령어는 시작 TLB 엔트리 어드레스 및 무효화할 TLB 엔트리들의 개수를 의미하는 값을 지시한다. 소정의 실시예들에서, 시작 TLB 엔트리 어드레스 및 무효화할 TLB 엔트리들의 개수를 의미하는 값 중에 적어도 하나는 REP INVLPG 명령어에 명시적으로 포함된다.
명령어의 수신에 응답하여, 단계 603에서 프로세서는 REP INVLPG 명령어에 의해 지시되는 TLB 엔트리들을 무효화한다.
도 7은 REP INVLPG 명령어 실행의 실시예들을 나타낸다. 단계 701에서, 카운터 값 및 TLB 엔트리 어드레스가 로드된다. 카운터 값은 무효화될 엔트리들의 개수로 설정된다. 어드레스는 무효화될 일련의 엔트리들의 시작을 나타낸다. 예를 들어, 소정의 실시예들에서, DS:EDI에는 시작 어드레스가 로드되고 ECX에는 카운터 값이 로드된다.
REP INVLPG 명령어가 앞서 기술한 바와 같이 카운터 및/또는 어드레스에 대한 명시적인 오퍼랜드들을 포함하는 실시예들에서, 단계 401에서의 로딩은 다를 수 있다. 예를 들면, REP INVLPG가 카운터에 대한 즉시 값을 포함하는 경우, REP INVLPG 명령어의 디코드 전에는 레지스터에 카운터 값이 로드되지 않는다.
단계 703에서, 운영 시스템은 REP INVLPG 명령어의 실행을 요청함으로써 무효화될 일련의 TLB 엔트리들을 요청한다. 이러한 명령어는 적어도 페치되고, 디코드되고, 실행된다.
소정의 실시예들에서, 단계 705에서 이러한 명령어를 마이크로오퍼레이션들로 변환하기 위해 마이크로코드가 호출된다. 이러한 마이크로오퍼레이션들은 마이크로코드(121)와 같은 마이크로코드 내에 저장된다. 그 밖의 실시예들에서, TLB의 상태 머신과 같은 상태 머신이 이러한 명령어를 수행하기 위해 단계 705에서 호출된다. 명령어의 실행은 프로세서 코어의 구현에 따라서 실행 유닛(109) 또는 TLB에 의해 수행될 수 있다.
소정의 실시예들에서, REP INVLPG 명령어는 특권 명령어(privileged instruction)이다. 프로세서가 보호 모드(protected mode)에서 동작하는 경우, 이러한 명령어를 실행하기 위해 프로그램 또는 프로시져(procedure)의 CPL(current privilege level)은 0이어야 한다. 소정의 실시예들에서, 프로세서의 CPL이 0인지에 대한 판정은 단계 707에서 수행된다. 만일 CPL이 0이 아니라면, REP INVLPG는 단계 709에서 위법으로 신호되고 어떤 TLB 엔트리도 무효화되지 않는다.
(REP INVLPG 명령어의 디코드 전에 로드되거나 또는 그 디코드와 연결되어 참조된) TLB 엔트리 어드레스와 연관된 TLB 엔트리는 단계 711에서 무효화된다. 예를 들어, DS:EDI에서의 캐시 라인이 플러싱된다.
카운터 값은 단계 711에서 감소한다. 일 실시예에서, 이러한 카운터는 ECX 레지스터 내에 저장되고 이러한 레지스터는 감소한다.
카운터 값이 0인지에 대한 판정은 단계 715에서 수행된다. 만일 카운터 값이 0이 아니라면, 무효화될 TLB 엔트리는 단계 717에서 판정된다. 소정의 실시예들에서, 이는 (예를 들어, 4k/2M/1GBs와 같은) 셋 페이지 크기를 이제 막 무효화된 TLB 엔트리의 이전의 주소에 더함으로써 수행된다. 그 밖의 실시예들에서, (예를 들어, 4k/2M/1GBs와 같은) 셋 페이지 크기가 이제 막 무효화된 TLB 엔트리의 이전의 어드레스로부터 빼진다. 그 TLB 엔트리는 단계 711에서 무효화된다.
만일 카운터 값이 0이라면, 플러싱된 일련의 전체 캐시 라인 및 명령어는 퇴거될 수 있다.
앞서 기술된 바에서는 카운터 값이 감소하는 반면, 그 밖의 실시예들에서 카운터는 증가하고 미리 설정된 값과 비교되어 적당한 개수의 엔트리가 무효화되었는지 판정하게 된다.
예시적인 시스템들
도 8은 바람직한 컴퓨터 시스템(801)의 예시적인 실시예를 나타내는 블록도이다. 컴퓨터 시스템은 프로세서(800)를 포함한다. 프로세서는 앞서 기술된 명령어들 중 적어도 하나를 실행할 수 있는, 적어도 하나의 실행 유닛(806)을 포함한다.
프로세서는 {예를 들어, 프런트 사이드 버스(front side bus)와 같은} 버스 또는 그 밖의 연결부(interconnect; 880)를 통해 칩셋(chipset; 881)에 연결된다. 연결부는 칩셋을 통해 프로세서 및 시스템 내의 그 밖의 컴포넌트들 간에 데이터 신호를 전송하는데 사용될 수 있다.
칩셋은 MCH(Memory Controller Hub; 882)로 알려진 시스템 로직 칩(system logic chip)을 포함한다. MCH는 프런트 사이드 버스 또는 기타 연결부(880)에 연결된다.
메모리(886)는 MCH에 연결된다. 다양한 실시예들에서, 메모리는 RAM을 포함한다. DRAM은 모두는 아니나 소정의 컴퓨터 시스템들에서 사용되는 RAM 형태의 예시이다. 도시되는 바와 같이, 메모리는 하나 이상의 곱셈 명령어들(multiply instructions)과 같은 명령어들(887) 및 데이터(888)를 저장하는데 사용될 수 있다.
컴포넌트 연결부(885)는 MCH와 또한 연결된다. 하나 이상의 실시예에서, 컴포넌트 연결부는 하나 이상의 PCIe(Peripheral Component Interconnect express) 인터페이스(interfaces)를 포함할 수 있다. 컴포넌트 연결부는 칩셋을 통해 다른 컴포넌트들로 하여금 시스템의 나머지 부분에 연결되도록 할 수 있다. 이러한 컴포넌트들의 일 예시로서, 이는 비록 선택 사항이고 반드시 요구되는 것은 아니나, 그래픽 칩 또는 그 밖의 그래픽 장치를 들 수 있다.
칩셋은 ICH(Input/output Controller Hub; 884)를 또한 포함한다. ICH는 허브 인터페이스 버스(hub interface bus) 또는 그 밖의 연결부(883)를 통해 MCH에 연결된다. 하나 이상의 실시예에서, 버스 또는 그 밖의 연결부(883)는 DMI(Direct Media Interface)를 포함할 수 있다.
데이터 스토리지(889)는 ICH에 연결된다. 다양한 실시예들에서, 데이터 스토리지는 하드 디스크 드라이브(hard disk drive), 플로피 디스크 드라이브(floppy disk drive), CD-ROM 장치, 플래시 메모리 장치(flash memory device) 등 또는 이들의 결합을 포함할 수 있다.
제2 컴포넌트 연결부(890)가 ICH와 또한 연결된다. 하나 이상의 실시예에서, 제2 컴포넌트 연결부는 하나 이상의 PCIe 인터페이스를 포함할 수 있다. 제2 컴포넌트 연결부는 칩셋을 통해서 다양한 형태의 컴포넌트가 시스템의 나머지 부분에 연결되도록 할 수 있다.
직렬 확장 포트(serial expansion port; 891)가 ICH와 또한 연결된다. 하나 이상의 실시예에서, 직렬 확장 포트는 하나 이상의 USB(Universal Serial Bus) 포트를 포함할 수 있다. 직렬 확장 포트는 칩셋을 통해 다양한 다른 형태의 입력/출력 장치가 시스템의 나머지 부분에 연결되도록 할 수 있다.
ICH와 선택적으로 연결될 수 있는 그 밖의 컴포넌트들의 몇몇 예시로서 오디오 제어기(audio controller), 무선 송수신기(wireless transceiver) 및 (예를 들어, 키보드, 마우스와 같은) 사용자 입력 장치(user input device)가 포함되며 이에 한정되지 않는다.
네트워크 제어기(network controller)가 ICH에 또한 연결된다. 네트워크 제어기는 시스템을 네트워크와 연결되게 할 수 있다.
하나 이상의 실시예에서, 컴퓨터 시스템은 워싱턴주 레드몬드에 위치한 마이크로소프트사에서 제공되는 WINDOWSTM 운영 시스템의 버전을 실행할 수 있다. 또한, 예를 들어 유닉스(UNIX), 리눅스(Linux) 또는 내장 시스템들(embedded systems)과 같은 그 밖의 운영 시스템들이 사용될 수 있다.
이는 바람직한 컴퓨터 시스템의 특정한 일 예시이다. 예를 들어, 하나 이상의 다른 실시예에서, 프로세서는 복수의 코어를 구비할 수 있다. 또 다른 예시로서, 하나 이상의 다른 실시예에서, MCH(882)는 다이(die) 상에 프로세서(800)와 물리적으로 집적될(integrated) 수 있고 프로세서는 집적된 MCH를 통해 메모리(886)와 직접 연결될 수 있다. 추가적인 예시로서, 하나 이상의 다른 실시예에서, 예를 들면 SoC(System-on-Chip) 설계를 제공하기 위해 그 밖의 컴포넌트들이 다이 상에 프로세서와 집적될 수 있다. 또 다른 예시로서, 하나 이상의 다른 실시예에서, 컴퓨터 시스템은 복수의 프로세서를 구비할 수 있다.
도 9는 바람직한 컴퓨터 시스템(901)의 예시적인 실시예의 블록도를 나타낸다. 제2 예시적인 실시예는 바로 앞서 기술된 제1 예시의 컴퓨터 시스템과 일부 유사하다. 명료한 기술을 위해, 본 논의는 모든 유사점을 반복하기보다 차이점들을 강조할 것이다.
앞서 기술된 제1 예시적인 실시예와 마찬가지로, 컴퓨터 시스템은 ICH(984)를 구비하는 칩셋(981) 및 프로세서(900)를 포함한다. 또한 제1 예시적인 실시예와 마찬가지로, 컴퓨터 시스템은 칩셋과 연결된 제1 컴포넌트 연결부(985), ICH와 연결된 제2 컴포넌트 연결부(990), ICH와 연결된 직렬 확장 포트(991), ICH와 연결된 네트워크 제어기(992) 및 ICH와 연결된 데이터 스토리지(989)를 포함한다.
이러한 제2 실시예에서, 프로세서(900)는 멀티 코어 프로세서이다. 멀티 코어 프로세서는 994-1에서 994-M까지의 프로세서 코어들을 포함하는데, 여기서 M은 (예를 들어, 2, 4, 7 또는 이상) 2 이상의 정수일 수 있다. 각각의 코어는 여기에 개시된 바와 같은 적어도 하나의 명령어 실시예를 실행할 수 있는 적어도 하나의 실행 유닛을 포함할 수 있다. 도시되는 바와 같이, 코어-1은 (예를 들면, L1 캐시와 같은) 캐시(995)를 포함한다. 나머지 코어들 각각도 마찬가지로 전용 캐시(dedicated cache)를 포함할 수 있다. 프로세서 코어들은 단일 IC(Integrated Circuit) 칩 상에 구현될 수 있다.
프로세서는 적어도 하나의 공유 캐시(shared cache; 996)를 또한 포함한다. 공유 캐시는 코어들과 같은 프로세서의 하나 이상의 컴포넌트에 의해 사용되는 (예를 들어, 명령어들과 같은) 데이터를 저장할 수 있다. 예를 들어, 공유 캐시는 프로세서의 컴포넌트들이 더 빨리 액세스할 수 있도록 메모리(986)에 저장된 데이터를 국부적으로 캐시할 수 있다. 하나 이상의 실시예에서, 공유 캐시는 L2(level 2), L3(level 3), L4(level 4) 또는 그 밖의 캐시 레벨들, LLC(last level cache) 및/또는 이들의 결합과 같은 하나 이상의 미드-레벨(mid-level) 캐시를 포함할 수 있다.
프로세서 코어들 및 공유 캐시는 각각 버스 또는 그 밖의 연결부(997)와 연결된다. 버스 또는 그 밖의 연결부는 코어들 및 공유 캐시를 연결할 수 있고 통신을 가능하게 할 수 있다.
프로세서는 MCH(982)를 또한 포함한다. 본 예시적인 실시예에서 도시되는 바와 같이, MCH는 프로세서(900)와 함께 집적된다. 예를 들면, MCH는 프로세서 코어들과 함께 다이 상에(on-die) 있을 수 있다. 프로세서는 MCH를 통해 메모리(986)와 연결된다. 하나 이상의 실시예에서, 반드시 요구되는 것은 아니나, 메모리는 DRAM을 포함할 수 있다.
칩셋은 I/O(Input/Output) 허브(993)를 포함한다. I/O 허브는 {예를 들어, QPI(QuickPath Interconnect)와 같은} 버스 또는 그 밖의 연결부(980)를 통해 프로세서와 연결된다. 제1 컴포넌트 연결부(985)는 I/O 허브(993)와 연결된다.
도 10을 참조하면, 본 발명의 일 실시예에 따른 시스템(1000)의 블록도가 도시된다. 시스템(1000)은 GMCH(Graphics Memory Controller Hub; 1020)에 연결된 하나 이상의 처리 요소들(processing elements; 1010, 1015)을 포함할 수 있다. 추가적인 처리 요소들(1015)은 선택적이므로 도 10에서 파선으로 표시된다.
각각의 처리 요소는 싱글 코어일 수 있고 또는 복수의 코어를 포함할 수 있다. 처리 요소들은 처리 코어들 외에 집적된 메모리 제어기(integrated memory controller) 및/또는 집적된 I/O 제어 로직(integrated I/O control logic)과 같이 다이 상에 함께 있는 그 밖의 요소들을 선택적으로 포함할 수 있다. 또한, 적어도 일 실시예에서, 처리 요소들의 코어들은 멀티스레드일(multithreaded) 수 있는데, 처리요소들은 코어별로 하나보다 많은 하드웨어 스레드 컨텍스트(hardware thread context)를 포함할 수 있다.
도 10은 GMCH(1020)가, 예를 들어 DRAM(Dynamic Random Access Memory)일 수 있는 메모리(1040)에 연결될 수 있음을 나타낸다. 적어도 일 실시예에서, DRAM은 비휘발성 캐시와 연관될 수 있다.
GMCH(1020)는 칩셋 또는 칩셋의 일부일 수 있다. GMCH(1020)는 프로세서들(1010, 1015)과 통신할 수 있고, 프로세서들(1010, 1015) 및 메모리(1040) 간의 상호작용을 제어할 수 있다. GMCH(1020)는 프로세서들(1010, 1015) 및 시스템(1000)의 그 밖의 요소들 간의 가속 버스 인터페이스(accelerated bus interface)로서의 역할을 또한 할 수 있다. 적어도 일 실시예에서, GMCH(1020)는 FSB(frontside bus; 1095)와 같은 멀티 드롭 버스(multi-drop bus)를 통해 프로세서들(1010, 1015)과 통신한다.
더 나아가, GMCH(1020)은 (예를 들어, 평판 디스플레이와 같은) 디스플레이(1040)에 연결된다. GMCH(1020)는 집적된 그래픽 가속기(integrated graphics accelerator)를 포함할 수 있다. GMCH(1020)는 다양한 주변 장치들을 시스템(1000)에 연결하는데 사용될 수 있는 ICH(1050)에 또한 연결된다. 외부 그래픽 장치(external graphics device; 1060)가 또 다른 주변 장치(1070)와 함께 도 10에서 실시예의 예시로서 도시되는데, 외부 그래픽 장치는 ICH(1050)에 연결된 독립된 그래픽 장치일 수 있다.
추가적인 또는 다른 처리 요소들이 시스템(1000)에 또한 있을 수 있다. 예를 들어, 추가적인 처리 요소들(1015)은 프로세서(1010)와 동일한 프로세서들, 프로세서(1010)와 다른 종류이거나 또는 비대칭적인 프로세서들, (예를 들어, 그래픽 가속기들 또는 DSP 유닛들과 같은) 가속기들, 필드 프로그래머블 게이트 어레이들(field programmable gate arrays), 또는 임의의 다른 처리 요소를 추가로 포함할 수 있다. 아키텍처(architectural), 마이크로아키텍처(microarchitectural), 열적(thermal), 전력 소비 특성 등을 포함한 이점(merit) 측면에서 물리적인 리소스들(1010, 1015) 간에 다양한 차이가 있을 수 있다. 이러한 차이들은 처리 요소들(1010, 1015) 간의 비대칭성(asymmetry) 및 이종성(heterogeneity)으로 효과적으로 나타낼 수 있다. 적어도 일 실시예에서, 다양한 처리 요소들(1010, 1015)이 동일한 다이 패키지(die package) 내에 있을 수 있다.
도 11을 참조하면, 본 발명의 일 실시예에 따른 시스템(1100)의 블록도가 도시된다. 도 11에 도시되는 바와 같이, 마이크로프로세서 시스템(1100)은 지점간 연결(point-to-point interconnect) 시스템이고 지점간 연결부(1150)를 통해 연결된 제1 처리 요소(1170) 및 제2 처리 요소(1180)를 포함한다. 도 11에서 도시되는 바와 같이, 처리 요소들(1170, 1180) 각각은 {예를 들어, 프로세서 코어들(1174a, 1174b) 및 프로세서 코어들(1184a, 1184b)과 같은} 제1 및 제2 프로세서 코어를 포함하는 멀티 코어 프로세서일 수 있다.
또한, 하나 이상의 처리 요소들(1170, 1180)은 가속기 또는 필드 프로그래머블 게이트 어레이와 같은, 프로세서 이외의 요소일 수 있다.
단지 두 개의 처리 요소(1170, 1180)만 도시되지만, 본 발명의 범위는 제한되지 않는 것으로 이해되어야 한다. 그 밖의 실시예들에서, 하나 이상의 추가적인 처리 요소가 주어진 프로세서 내에 존재할 수 있다.
제1 처리 요소(1170)는 MCH(1172) 및 지점간 인터페이스들(1176, 1178)을 추가로 포함할 수 있다. 마찬가지로, 제2 처리 요소(1180)는 MCH(1182) 및 지점간 인터페이스들(1186, 1188)을 포함할 수 있다. 프로세서들(1170, 1180)은 지점간 인터페이스 회로들(1178, 1188)을 사용하여 지점간 인터페이스(1150)를 통해 데이터를 교환할 수 있다. 도 11에서 도시되는 바와 같이, MCH들(1172, 1182)은 프로세서들을 각각의 메모리들, 말하자면 메모리(1142) 및 메모리(1144)에 연결하는데, 이러한 메모리들은 각각의 프로세서들에 국부적으로(locally) 부착된 메인 메모리의 일부들일 수 있다.
프로세서들(1170, 1180)은 각각 지점간 인터페이스 회로들(1176, 1194, 1186, 1198)을 사용하여 개별적인 지점간 인터페이스들(1152, 1154)을 통해 칩셋(1190)과 데이터를 교환할 수 있다. 칩셋(1190)은 또한 고성능 그래픽 인터페이스(1139)를 통해 고성능 그래픽 회로(1138)와 데이터를 교환할 수 있다. 본 발명의 실시예들은 임의의 개수의 처리 코어를 구비하는 임의의 프로세서, 또는 도 11에 도시되는 지점간 버스 에이전트들(bus agents) 각각 내에 구현될 수 있다. 일 실시예에서, 임의의 프로세서 코어는 국부적인 캐시 메모리(도시되지 않음)를 포함할 수 있거나 그렇지 않으면 이와 연관될 수 있다. 더 나아가, 공유 캐시(도시되지 않음)는 지점간 연결부를 통해 프로세서들과 연결되어 두 프로세서의 외부의 프로세서 내에 포함될 수 있는데, 프로세서가 낮은 전력 모드(mode)에 놓인 경우, 두 프로세서 모두의 또는 어느 한 프로세서의 로컬 캐시 정보가 공유 캐시에 저장될 수 있다.
제1 처리 요소(1170) 및 제2 처리 요소(1180)는 지점간 연결부들(1176, 1186, 1184)을 통해 각각 칩셋(1190)에 연결될 수 있다. 도 11에서 도시되는 바와 같이, 칩셋(1190)은 지점간 인터페이스들(1194, 1198)을 포함한다. 더 나아가, 칩셋(1190)은 칩셋(1190)을 고성능 그래픽 엔진(1148)과 연결하기 위한 인터페이스(1192)를 포함한다. 일 실시예에서, 버스(1149)는 그래픽 엔진(1148)을 칩셋(1190)에 연결하는데 사용될 수 있다. 또한, 지점간 연결부(1149)는 이러한 컴포넌트들을 연결할 수 있다.
차례로, 칩셋(1190)은 인터페이스(1196)를 통해 제1 버스(1116)에 연결될 수 있다. 일 실시예에서, 본 발명이 이에 한정되는 것은 아니나, 제1 버스(1116)는 PCI 버스 또는 PCI 익스프레스(Express) 버스 또는 또 다른 3세대 I/O 연결 버스와 같은 버스일 수 있다.
도 11에서 도시되는 바와 같이, 제1 버스(1116)를 제2 버스(1120)에 연결하는 버스 브리지(bus bridge; 1118)를 따라서 다양한 I/O 장치들(1114)이 제1 버스(1116)에 연결될 수 있다. 일 실시예에서, 제2 버스(1120)는 LPC(Low Pin Count) 버스일 수 있다. 예를 들어, 키보드/마우스(1122), 통신 장치들(1127) 및 일 실시예에서 코드(1130)를 포함할 수 있는, 디스크 드라이브 또는 그 밖의 대용량 스토리지 장치와 같은 데이터 스토리지 유닛(1128)을 포함하는 다양한 장치들이 제2 버스(1120)에 연결될 수 있다. 더 나아가, 오디오 I/O(1124)가 제2 버스(1120)에 연결될 수 있다. 그 밖의 아키텍처들도 가능함에 유의해야 한다. 예를 들어, 도 11의 지점간 아키텍처 대신에, 시스템은 멀티 드롭 버스 또는 그 밖의 그러한 아키텍처를 구현할 수 있다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 시스템(1200)의 블록도가 도시된다. 도 11 및 도 12에서 동일한 요소들은 동일한 참조 번호들을 가지며, 도 11의 특정한 측면들을 도 12에서 생략되었는데, 이는 도 12의 다른 측면들을 모호하지 않게 하려함이다.
도 12는 처리 요소들(1170, 1180)이 집적 메모리(integrated memory) 및 I/O "CL(Control Logic)"(1172, 1182)를 각각 포함할 수 있음을 나타낸다. 적어도 일 실시예에서, CL(1172, 1182)은 도 10 및 도 11과 관련되어 앞서 기술된 바와 같이 MCH를 포함할 수 있다. 게다가, CL(1172, 1182)은 I/O 제어 로직(control logic)를 또한 포함할 수 있다. 도 12는 메모리들(1142, 1144)이 CL(1172, 1182)에 연결될 뿐만 아니라 I/O 장치들(1214)도 제어 로직(1172, 1182)에 또한 연결됨을 나타낸다. 레가시 I/O 장치들(legacy I/O devices; 1215)는 칩셋(1190)에 연결된다.
여기에 개시된 메카니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 이러한 구현 방식들의 결합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, (휘발성 및 비휘발성 메모리 및/또는 스토리지 요소들을 포함하는) 데이터 스토리지 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그래머블 시스템들(programmable systems)에서 실행 가능한 컴퓨터 프로그램들로 구현될 수 있다.
도 11에 도시되는 코드(1130)와 같은 프로그램 코드는 여기에 기술된 기능들을 수행하기 위해 입력 데이터에 적용되어 출력 정보를 생성할 수 있다. 따라서, 본 발명의 실시예들은 본 발명의 실시예들의 오퍼레이션들을 수행하기 위한 명령어들을 저장하거나 또는 구조들, 회로들, 장치들, 프로세서들 및/또는 여기에 기술된 시스템 특징들을 정의하는 HDL과 같은 설계 데이터를 저장하는 기계 판독 가능 매체(machine-readable media)를 또한 포함할 수 있다. 이러한 실시예들은 프로그램 제품들로 또한 지칭될 수 있다.
이러한 기계 판독 가능 스토리지 매체는 하드 디스크, 플로피 디스크, 광학 디스크(optical disks), CD-ROMs(compact disk read-only memories), CD-RWs(compact disk rewritable's) 및 자기 광학 디스크(magneto-optical disks)를 포함하는 임의의 형태의 디스크, ROMs(read-only memories), DRAMs, SRAMs와 같은 RAMs, EPROMs, 플래시 메모리, EEPROMs과 같은 반도체 장치들, 자기 또는 광학 카드들(magnetic or optical cards), 또는 전자 명령어들을 저장하는데 바람직한 임의의 형태의 매체와 같은 스토리지 매체를 포함하여, 기계 또는 장치에 의해 제조되거나 또는 형성되는 유형의 입자 배열들(arrangements of particles)을 포함할 수 있으며 이에 한정되지 않는다.
출력 정보는 공지된 방식으로 하나 이상의 출력 장치에 적용될 수 있다. 이러한 응용 목적으로, 처리 시스템은, 예를 들어 DSP, 마이크로컨트롤러, ASIC(application specific integrated circuit) 또는 마이크로프로세서와 같은 프로세서를 구비한 임의의 시스템을 포함한다.
프로그램들은 처리 시스템과 통신하기 위해 고급 프로시져의(high level procedural) 또는 객체 지향적(object oriented) 프로그래밍 언어로 구현될 수 있다. 또한, 프로그램들은 어셈블리(assembly) 또는 기계어(machine language)로 구현될 수 있다. 사실, 여기에 서술된 메카니즘들은 임의의 특정한 프로그래밍 언어로 범위가 한정되지 않는다. 어떤 경우에는, 그 언어가 컴파일된(compiled) 또는 해석된(interpreted) 언어일 수 있다.
적어도 일 실시예의 하나 이상의 특징들이 기계 판독 가능 매체에 저장된 대표적인 데이터에 의해 구현될 수 있는데, 대표적인 데이터는 프로세서 내에서 다양한 로직을 나타내고, 기계에 의해 판독되는 경우 기계로 하여금 여기에 기술된 기술들을 수행하는 로직을 형성하게 한다. "IP 코어들"로 알려진 이러한 대표적 데이터는 유형의 기계 판독 가능 매체에 저장될 수 있고 다양한 고객 또는 제조 설비에 공급되어 실제 로직 또는 프로세서를 만드는 제조 기계들에 로드된다.
특정한 오퍼레이션들이 하드웨어 컴포넌트들에 의해 수행될 수 있고 또는 기계 실행 가능한 명령어들로 구현될 수 있는데, 이 명령어들은 명령어들로 프로그램된 회로 또는 하드웨어로 하여금 오퍼레이션들을 수행하게 하거나 또는 적어도 수행하는 결과를 가져올 수 있다. 몇몇 예시를 들자면, 회로는 범용 또는 특수 목적 프로세서 또는 논리 회로를 포함할 수 있다. 오퍼레이션들은 하드웨어 및 소프트웨어의 결합에 의해 선택적으로 또한 수행될 수 있다. 실행 유닛 및/또는 프로세서는 명령어로 특정되는 결과 오퍼랜드(instruction specified result operand)를 저장하기 위해 기계 명령어 또는 기계 명령어로부터 추출된 하나 이상의 제어 신호에 응답하는 특정한 회로 또는 그 밖의 로직을 포함할 수 있다.
이는 바람직한 시스템의 특정한 예시에 불과하다. 랩탑(laptops), 데스크탑(desktops), 휴대용 PCs(handheld PCs), 개인용 디지털 정보기기(personal digital assistants), 공학 워크스테이션(engineering workstations), 서버(servers), 네트워크 장치(network devices), 네트워크 허브(network hubs), 스위치(switches), 내장 프로세서(embedded processors), DSPs, 그래픽 장치(graphics devices), 비디오 게임 장치(video game devices), 셋탑 박스(set-top boxes), 마이크로컨트롤러(micro controllers), 셀룰러 폰(cell phones), 휴대용 미디어 재생기(portable media players), 휴대용 장치들(hand held devices) 및 다양한 그 밖의 전자 장치들을 위해 기술분야에서 알려진 기타 시스템 설계들 및 구성들도 또한 바람직한 예시이다. 일반적으로, 여기에 기술된 바와 같은 프로세서 및/또는 실행 유닛을 포함할 수 있는 다양한 시스템들 또는 전자 장치들이 바람직한 예시가 된다.
앞선 기술한 바에서, 다양한 특정 세부 사항들이 본 발명의 실시예들에 대한 충분한 이해를 위해서 설명 목적으로 제공된 바 있다. 하지만, 하나 이상의 기타 실시예들이 이러한 특정 세부 사항들의 일부가 없더라도 실시될 수 있음은 당업자에게 분명할 것이다. 기술된 특정한 실시예들은 본 발명의 실시예들을 나타내기 위함이며 본 발명을 한정하기 위함은 아니다. 본 발명의 범위는 앞서 기술된 특정한 예시들에 의해 정해지는 것은 아니며 아래에 기술되는 청구항들에 의해 정해진다. 소정의 경우에, 이해를 돕기 위해, 공지된 회로들, 구조들, 장치들 및 오퍼레이션들은 블록도 형태로 도시되거나, 또는 상세한 기술 없이 제시된다. 적절한 경우에는, 선택적으로 유사한 특성을 가질 수 있는, 대응하거나 유사한 요소들을 나타내기 위해, 참조 번호들 또는 참조 번호들의 종말부들(terminal portions)이 도면들에 반복된다.

Claims (20)

  1. 프로세서(processor)의 복수의 캐시 라인(cache lines)을 플러싱(flushing)하는 방법으로서,
    상기 프로세서의 상기 복수의 캐시 라인이 플러싱되어야 함을 지시하는 제1 필드(field)를 포함하는 단일 명령어(single instruction)를 수신하는 단계 - 상기 단일 명령어는 플러싱될 캐시 라인들의 시작 어드레스(starting address)를 암시적으로(implicitly) 제공함 -; 및
    상기 단일 명령어에 응답하여,
    플러싱될 캐시 라인들의 시작 어드레스의 적어도 일부를 제1 레지스터(register)에 로드(load)하고,
    플러싱될 캐시 라인들의 수를 나타내는 카운터 값을 제2 레지스터에 로드하고,
    플러싱될 캐시 라인들의 시작 어드레스와 연관된 제1 캐시 라인을 플러싱하고,
    상기 제2 레지스터에 저장된 상기 카운터 값을 감소시키고,
    플러싱될 제2 캐시 라인의 다음 어드레스의 적어도 일부를 포함하도록 상기 제1 레지스터를 갱신하고,
    상기 제2 캐시 라인을 플러싱함으로써,
    상기 프로세서의 상기 복수의 캐시 라인을 플러싱하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 플러싱될 제2 캐시 라인의 제2 어드레스의 적어도 일부를 포함하도록 상기 제1 레지스터를 갱신하는 단계는,
    상기 시작 어드레스에 숫자를 더하는 단계를 포함하는 방법.
  3. 제1항에 있어서, 플러싱될 제2 캐시 라인의 제2 어드레스의 적어도 일부를 포함하도록 상기 제1 레지스터를 갱신하는 단계는,
    상기 시작 어드레스로부터 숫자를 빼는 단계를 포함하는 방법.
  4. 제1항에 있어서, 운영 시스템(OS: operating system)이 상기 단일 명령어의 실행을 요청하는 방법.
  5. 복수의 TLB(Translation Look-aside Buffer) 엔트리(entries)를 무효화하는 방법으로서,
    상기 복수의 TLB 엔트리가 무효화되어야 함을 지시하는 제1 필드를 포함하는 단일 명령어를 수신하는 단계 - 상기 단일 명령어는 무효화될 제1 TLB 엔트리의 시작 어드레스를 암시적으로 제공함 -; 및
    상기 단일 명령어에 응답하여,
    무효화될 TLB 엔트리들의 시작 어드레스의 적어도 일부를 제1 레지스터에 로드하고,
    무효화될 TLB 엔트리들의 수를 나타내는 카운터 값을 제2 레지스터에 로드하고,
    무효화될 TLB 엔트리들의 시작 어드레스와 연관된 제1 TLB 엔트리를 무효화하고,
    상기 제2 레지스터에 저장된 상기 카운터 값을 감소시키고,
    무효화될 제2 TLB 엔트리의 제2 어드레스의 적어도 일부를 포함하도록 상기 제1 레지스터를 갱신하고,
    상기 제2 TLB 엔트리를 무효화함으로써,
    상기 복수의 TLB 엔트리를 무효화하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서, 무효화될 제2 TLB 엔트리의 제2 어드레스의 적어도 일부를 포함하도록 상기 제1 레지스터를 갱신하는 단계는,
    상기 시작 어드레스에 숫자를 더하는 단계를 포함하는 방법.
  7. 제5항에 있어서, 무효화될 제2 TLB 엔트리의 제2 어드레스의 적어도 일부를 포함하도록 상기 제1 레지스터를 갱신하는 단계는,
    상기 시작 어드레스로부터 숫자를 빼는 단계를 포함하는 방법.
  8. 제5항에 있어서, 운영 시스템(OS)이 상기 단일 명령어의 실행을 요청하는 방법.
  9. 캐시 라인들로서 데이터를 저장하는 캐시;
    제1 명령어를 디코드하기 위한 디코드 회로 - 상기 제1 명령어는 상기 캐시의 복수의 캐시 라인이 플러싱되어야 함을 지시하는 제1 필드를 포함함 -;
    상기 제1 명령어의 실행에 응답하여 플러싱될 캐시 라인들의 수를 나타내는 값을 저장하는 제1 레지스터;
    상기 제1 명령어의 실행에 응답하여 플러싱될 제1 캐시 라인의 어드레스의 적어도 일부를 저장하는 제2 레지스터; 및
    상기 제1 레지스터에 저장된 플러싱될 캐시 라인들의 수를 나타내는 값을 감소시키고, 플러싱될 제2 캐시 라인의 다음 어드레스의 적어도 일부를 포함하도록 상기 제2 레지스터 내의 상기 플러싱될 어드레스의 적어도 일부를 갱신하고, 상기 제2 캐시 라인을 플러싱함으로써, 상기 디코드된 제1 명령어에 의해 지시되는 상기 복수의 캐시 라인을 플러싱하기 위한 실행 회로
    를 포함하는 장치.
  10. 제9항에 있어서,
    페이지 테이블 엔트리들(page table entries)을 저장하기 위한 TLB를 더 포함하고,
    상기 디코드 회로는 제2 명령어를 디코드하기 위한 것이고,
    상기 제2 명령어는 복수의 TLB 페이지 테이블 엔트리가 무효화되어야 함을 지시하는 제1 필드를 포함하는 장치.
  11. 제10항에 있어서,
    상기 제2 명령어에 의해 지시되는 상기 복수의 TLB 페이지 테이블 엔트리를 무효화하기 위한 상기 TLB 내의 실행 회로를 더 포함하는 장치.
  12. 제9항에 있어서, 상기 실행 회로는,
    디코드된 제1 명령어에 의해 지시되는 상기 복수의 캐시 라인을 플러싱하는 방법을 나타내는 상태 머신을 포함하며, 상기 상태 머신은 캐시 로직(cache logic)에 저장되는 장치.
  13. 제9항에 있어서,
    상기 제1 명령어를 상기 실행 회로에 의해 수행될 복수의 마이크로 오퍼레이션(microoperations)으로 번역하는 마이크로코드(microcode)를 더 포함하는 장치.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020127016220A 2009-12-22 2010-11-29 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치 KR101467069B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/644,547 US8214598B2 (en) 2009-12-22 2009-12-22 System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US12/644,547 2009-12-22
PCT/US2010/058236 WO2011087589A2 (en) 2009-12-22 2010-11-29 System, method, and apparatus for a cache flush of a range of pages and tlb invalidation of a range of entries

Publications (2)

Publication Number Publication Date
KR20120096031A KR20120096031A (ko) 2012-08-29
KR101467069B1 true KR101467069B1 (ko) 2014-12-01

Family

ID=44152761

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127016220A KR101467069B1 (ko) 2009-12-22 2010-11-29 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치

Country Status (8)

Country Link
US (1) US8214598B2 (ko)
JP (2) JP2012530979A (ko)
KR (1) KR101467069B1 (ko)
CN (1) CN102117247B (ko)
DE (1) DE112010004971T5 (ko)
GB (1) GB2483013B (ko)
TW (1) TWI516930B (ko)
WO (1) WO2011087589A2 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924652B2 (en) * 2009-11-23 2014-12-30 Marvell Israel (M.I.S.L.) Ltd. Simultaneous eviction and cleaning operations in a cache
US8473567B2 (en) * 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
WO2013085518A1 (en) * 2011-12-08 2013-06-13 Intel Corporation A method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution
TWI579695B (zh) * 2011-12-28 2017-04-21 瑞昱半導體股份有限公司 對處理器的快取進行清除的方法以及該處理器
CN103186474B (zh) * 2011-12-28 2016-09-07 瑞昱半导体股份有限公司 对处理器的高速缓存进行清除的方法以及该处理器
US9262163B2 (en) 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US10509725B2 (en) * 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
US9311239B2 (en) 2013-03-14 2016-04-12 Intel Corporation Power efficient level one data cache access with pre-validated tags
WO2014158156A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Storing data from cache lines to main memory based on memory addresses
AU2014328735B2 (en) * 2013-09-30 2017-04-13 VMware LLC Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US9239788B2 (en) * 2013-10-24 2016-01-19 Qualcomm Incorporated Split write operation for resistive memory cache
US9886391B2 (en) 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9971686B2 (en) * 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
GB2536205A (en) * 2015-03-03 2016-09-14 Advanced Risc Mach Ltd Cache maintenance instruction
US10248610B2 (en) 2015-06-23 2019-04-02 Mellanox Technologies, Ltd. Enforcing transaction order in peer-to-peer interactions
US10303647B2 (en) 2015-07-15 2019-05-28 Mellanox Technologies, Ltd. Access control in peer-to-peer transactions over a peripheral component bus
US10776272B2 (en) * 2016-03-02 2020-09-15 Mellanox Technologies, Ltd. Control of persistent memory via a computer bus
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US10552153B2 (en) * 2017-03-31 2020-02-04 Intel Corporation Efficient range-based memory writeback to improve host to device communication for optimal power and performance
US11327909B1 (en) 2020-10-26 2022-05-10 Mellanox Technologies, Ltd. System for improving input / output performance
US11609700B2 (en) 2021-08-11 2023-03-21 Mellanox Technologies, Ltd. Pacing in a storage sub-system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134490A (ja) * 1999-11-01 2001-05-18 Fujitsu Ltd キャッシュメモリの制御方法及びその方法を実現する計算機

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885680A (en) * 1986-07-25 1989-12-05 International Business Machines Corporation Method and apparatus for efficiently handling temporarily cacheable data
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
JP3493369B2 (ja) * 1994-12-13 2004-02-03 株式会社ルネサステクノロジ コンピュータ
JPH09231133A (ja) * 1996-02-21 1997-09-05 Nec Corp キャッシュメモリ装置
US6978357B1 (en) * 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
US6351864B1 (en) 1999-06-28 2002-03-05 David M. Karafa Institutional bedding with integral pillow and mattress
US6868472B1 (en) * 1999-10-01 2005-03-15 Fujitsu Limited Method of Controlling and addressing a cache memory which acts as a random address memory to increase an access speed to a main memory
US6546462B1 (en) * 1999-12-30 2003-04-08 Intel Corporation CLFLUSH micro-architectural implementation method and system
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6934806B2 (en) 2002-09-23 2005-08-23 International Business Machines Corporation Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7536506B2 (en) * 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
JP4090497B2 (ja) * 2005-04-08 2008-05-28 松下電器産業株式会社 キャッシュメモリシステム及びその制御方法
US7472227B2 (en) * 2005-08-11 2008-12-30 International Business Machines Corporation Invalidating multiple address cache entries
US8538012B2 (en) * 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
JP2008305246A (ja) 2007-06-08 2008-12-18 Freescale Semiconductor Inc 情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置
US8112174B2 (en) * 2008-02-25 2012-02-07 International Business Machines Corporation Processor, method and computer program product for fast selective invalidation of translation lookaside buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134490A (ja) * 1999-11-01 2001-05-18 Fujitsu Ltd キャッシュメモリの制御方法及びその方法を実現する計算機

Also Published As

Publication number Publication date
TWI516930B (zh) 2016-01-11
US8214598B2 (en) 2012-07-03
WO2011087589A3 (en) 2011-10-27
CN102117247B (zh) 2015-02-25
JP2012530979A (ja) 2012-12-06
TW201131358A (en) 2011-09-16
GB201119730D0 (en) 2011-12-28
US20110153952A1 (en) 2011-06-23
KR20120096031A (ko) 2012-08-29
GB2483013A (en) 2012-02-22
JP2015084250A (ja) 2015-04-30
DE112010004971T5 (de) 2013-03-07
CN102117247A (zh) 2011-07-06
GB2483013B (en) 2018-03-21
WO2011087589A2 (en) 2011-07-21

Similar Documents

Publication Publication Date Title
KR101467069B1 (ko) 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US9335943B2 (en) Method and apparatus for fine grain memory protection
US9170955B2 (en) Providing extended cache replacement state information
US10552153B2 (en) Efficient range-based memory writeback to improve host to device communication for optimal power and performance
US7996650B2 (en) Microprocessor that performs speculative tablewalks
US20160092371A1 (en) Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling
US9891936B2 (en) Method and apparatus for page-level monitoring
US9471494B2 (en) Method and apparatus for cache line write back operation
US20170286302A1 (en) Hardware apparatuses and methods for memory performance monitoring
US9069690B2 (en) Concurrent page table walker control for TLB miss handling
US10255196B2 (en) Method and apparatus for sub-page write protection
US20140201422A1 (en) Determining policy actions for the handling of data read/write extended page table violations
US20130311738A1 (en) Efficient locking of memory pages
US20190205061A1 (en) Processor, method, and system for reducing latency in accessing remote registers
CN111164581A (zh) 用于修补页的系统、方法和装置
WO2014105167A1 (en) Apparatus and method for page walk extension for enhanced security checks
US20240054077A1 (en) Pipelined out of order page miss handler
US8108621B2 (en) Data cache with modified bit array
US8108624B2 (en) Data cache with modified bit array

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: 20171027

Year of fee payment: 4