KR20220058542A - 프로세서 기반 디바이스의 페이지 테이블 엔트리(pte) 유지 보수 용이화 - Google Patents

프로세서 기반 디바이스의 페이지 테이블 엔트리(pte) 유지 보수 용이화 Download PDF

Info

Publication number
KR20220058542A
KR20220058542A KR1020227006719A KR20227006719A KR20220058542A KR 20220058542 A KR20220058542 A KR 20220058542A KR 1020227006719 A KR1020227006719 A KR 1020227006719A KR 20227006719 A KR20227006719 A KR 20227006719A KR 20220058542 A KR20220058542 A KR 20220058542A
Authority
KR
South Korea
Prior art keywords
coherence
pte
granule
copy
local cache
Prior art date
Application number
KR1020227006719A
Other languages
English (en)
Inventor
에릭 프란시스 로빈슨
제이슨 파나비치
토마스 필립 스페이어
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20220058542A publication Critical patent/KR20220058542A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/682Multiprocessor TLB consistency

Abstract

프로세서 기반 디바이스에서 페이지 테이블 엔트리(PTE) 유지 보수를 용이하게 하는 것이 개시된다. 이와 관련하여, 프로세서 기반 디바이스는 2개의 새로운 코히어런스 상태: 워커 판독 가능(W) 및 수정된 워커 액세스 가능(MW)을 지원하도록 구성된 프로세싱 요소(PE)를 포함한다. W 코히어런스 상태는 하드웨어 테이블 워커(HTW)에 의한 대응하는 코히어런스 그래뉼에 대한 판독 액세스가 허용되지만 논-HTW 에이전트에 의한 모든 쓰기 동작 및 모든 판독 동작은 허용되지 않음을 나타낸다. MW 코히어런스 상태는 HTW에게만 보이는 코히어런스 그래뉼의 캐싱된 사본이 다른 캐시에 존재할 수 있음을 나타낸다. 일부 실시예에서, 각각의 PE는 또한 PTE의 SP-PTE 필드를 수정하기 위한 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령을 지원하도록 구성되어, 대응하는 코히어런스 그래뉼이 MW 상태로 천이되어야 함을 PE의 로컬 캐시에 나타내고 코히어런스 그래뉼의 사본이 코히어런스 상태를 업데이트해야 함을 원격 로컬 캐시에 나타낸다.

Description

프로세서 기반 디바이스의 페이지 테이블 엔트리(PTE) 유지 보수 용이화
본 개시의 기술은 프로세서 기반 디바이스의 페이지 테이블에 관한 것으로, 더욱 구체적으로 페이지 테이블의 페이지 테이블 엔트리를 보다 효율적으로 업데이트하기 위한 메커니즘에 관한 것이다.
페이지 테이블은 가상 메모리 기능을 제공하기 위해 모뎀 프로세서 기반 디바이스에 의해 사용되는 데이터 구조이다. 페이지 테이블은 가상 메모리 어드레스와 대응하는 물리적 메모리 어드레스(즉, 시스템 메모리의 메모리 위치의 어드레스) 간의 매핑을 저장하는 페이지 테이블 엔트리(PTE: page table entry)를 제공한다. 프로세서 기반 디바이스가 가상 메모리 어드레스를 물리적 메모리 어드레스로 트랜슬레이팅(translating)할 필요가 있을 때, 프로세서 기반 디바이스는 가상 메모리 어드레스와 연관된 페이지 테이블 엔트리를 찾기 위해 하드웨어 테이블 워커(HTW: hardware table walker)를 사용하여 페이지 테이블에 액세스한 후, 페이지 테이블 엔트리로부터 대응하는 물리적 메모리 어드레스를 판독한다. HTW 또는 소프트웨어에 의해 최근 액세스된 PTE는 트랜슬레이션 프로세스를 반복할 필요 없이 후속 재사용을 위해 트랜슬레이션 룩어사이드 버퍼(TLB: translation lookaside buffer)에서 프로세서 기반 디바이스에 의해 또한 캐싱될 수 있다. 가상 메모리 기능을 구현하기 위해 페이지 테이블을 사용하여, 프로세서 기반 디바이스는 소프트웨어 프로세스가 서로 격리되고 함께 개념적으로 이용 가능한 물리적 메모리보다 더 클 수 있는 보안 메모리 공간에 액세스할 수 있도록 한다.
각각의 PTE는 비제한적인 예로서, 다른 페이지 테이블에 대한 포인터를 나타내는 비트, 허가 비트, 메모리 속성 등과 같은 하드웨어에 의해 사용되는 필드를 포함한다. PTE 내의 다른 필드(본원에서 "특수 PTE(SP-PTE) 필드"라고 칭함)는 소프트웨어에 의해서만 사용되며, 비제한적인 예로서 페이지 카운트 및/또는 페이지 연령 추적, 페이지 테이블 업데이트 관리 등을 위한 비트를 포함할 수 있다. 따라서, 프로세서 기반 디바이스에 의한 페이지 테이블의 유지 보수 및 관리는 HTW에 의해 사용되지 않고/않거나 가상-대-물리적 어드레스 트랜슬레이션과 관련이 없는 SP-PTE 필드를 판독하고 이에 쓰는 것을 포함할 수 있다.
특정 PTE의 로컬 사본이 프로세서 기반 디바이스의 TLB에 존재하는 한, HTW는 SP-PTE 필드에 대한 수정을 인식하지 못하고, PTE는 필요에 따라 계속 액세스된다. 그러나, TLB가 작업 PTE의 작업 세트를 보유하기에 너무 작은 경우, 성능 문제가 발생할 수 있다. SP-PTE 필드에 대한 업데이트는 HTW에 투명하지만, 소프트웨어가 SP-PTE 필드를 수정할 때 로컬 캐시에 보유된 PTE는 로컬 캐시로부터 무효화될 수 있다. 따라서, 가상-대-물리적 어드레스 트랜슬레이션에 필요한 PTE가 TLB에 존재하지 않고 캐시가 SP-PTE 필드의 수정으로 인해 PTE의 사본을 무효화한 경우, 프로세서 기반 디바이스는 시스템 메모리로부터 PTE의 사본을 획득하기 위해 메모리 판독 동작을 수행해야 한다. 이러한 성능 문제는 로컬 캐시 내에 PTE를 포함하는 동일한 코히어런스 그래뉼(coherence granule)(즉, 캐시 라인에 대응하는, 코히어런스가 유지되는 최소 메모리 블록)에 모두 액세스하려는 복수의 프로세싱 요소(PE: processing element)를 포함하는 프로세서 기반 디바이스에서 악화될 수 있다.
따라서, 과도한 캐시 경합을 피하면서 PTE를 유지하기 위한 보다 효율적인 메커니즘이 바람직하다.
본원에 개시된 예시적인 실시예는 프로세서 기반 디바이스에서 페이지 테이블 엔트리(PTE) 유지 보수를 용이하게 하는 것을 포함한다. 하나의 예시적인 실시예에서, 프로세서 기반 디바이스는 2개의 새로운 코히어런스 상태: 워커(walker) 판독 가능(W) 및 수정된 워커 액세스 가능(Mw)을 지원하도록 각각 구성된 복수의 프로세싱 요소(PE)를 포함한다. W 코히어런스 상태는 대응하는 코히어런스 그래뉼이 하드웨어 테이블 워커(HTW: hardware table walker)에 의해 판독될 목적으로 코히어런트이지만, 다른 목적을 위해서는 코히어런트한 것으로 고려되지 않음을 나타낸다. 따라서, W 코히어런스 상태를 갖는 코히어런스 그래뉼에 대한 하드웨어 테이블 워커(HTW)에 의한 판독 액세스는 허용되지만, 코히어런스 그래뉼에 대해 논(non)-HTW 에이전트에 의한 모든 쓰기 동작 및 모든 판독 작업은 허용되지 않는다. Mw 코히어런스 상태는 HTW에 대해서만 보이는(즉, W의 코히어런스 상태를 갖는) 코히어런스 그래뉼의 캐싱된 사본이 다른 캐시에 존재할 수 있음을 나타낸다. 또한, Mw 코히어런스 상태는 코히어런스 그래뉼이 나중에 PE의 로컬 캐시로부터 제거될 때 대응하는 코히어런스 그래뉼을 보유하는 PE가 시스템 메모리 업데이트를 담당한다는 것을 나타낸다. 일부 실시예에서, 각각의 PE는 PTE의 SP-PTE 필드를 수정하기 위해 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령의 사용을 지원하고, 대응하는 코히어런스 그래뉼이 Mw 상태로 천이해야 함을 PE의 로컬 캐시에 나타내고 대응하는 코히어런스 그래뉼의 사본이 그 코히어런스 상태를 업데이트해야 함을 원격 로컬 캐시에 나타내도록 구성될 수 있다. 이러한 실시예에서, Mw 코히어런스 상태는 PE가 추가 버스 요청을 만들 필요 없이 SP-PTE 필드를 업데이트하기 위해 SP-PTE 필드 저장 명령을 실행하도록 허용된다는 것을 나타낸다.
일부 실시예에서, SP-PTE 필드 저장 명령은 커스텀(custom) 저장 명령일 수 있거나, 커스텀 비교-교환 명령일 수 있다. 일부 실시예는 SP-PTE 필드 저장 명령이 페이지 테이블과 연관되고 SP-PTE 필드만을 수정하는 어드레스 범위에 관한 통상의 메모리 저장 명령인 것을 제공할 수 있다. 이러한 실시예에서, 프로세서 기반 디바이스는 본원에 설명되는 바와 같이, SP-PTE 필드 저장 명령으로서 통상의 메모리 저장 명령을 자동으로 검출하고 처리할 수 있다. 일부 실시예는 또한 SP-PTE 필드가 업데이트되고 있고 PE가 대응하는 코히어런스 그래뉼의 코히어런트 사본을 보유하지 않음을 나타내는 rd_e_w(배타 판독, 워커) 버스 요청; PE가 HTW를 대신하여 판독을 수행하고 있고 필요한 경우 W 코히어런스 상태에서 대응하는 코히어런스 그래뉼의 사본을 수용할 수 있음을 나타내는 rd_x_w(임의 판독, 워커) 버스 요청; 및 PE가 대응하는 코히어런스 그래뉼의 공유된 사본을 갖고 SP-PTE 필드를 관리하기를 원한다는 것을 나타내는 prex_w(배타 촉진, 워커)를 포함하는 새로운 버스 요청을 지원하도록 각각의 PE가 또한 구성되도록 제공할 수 있다.
다른 예시적인 실시예에서, 프로세서 기반 디바이스가 제공된다. 프로세서 기반 디바이스는 인터커넥트 버스를 통해 서로 통신 가능하게 커플링되는 복수의 PE를 포함한다. 각각의 PE는 디코드 스테이지와 실행 스테이지를 포함하는 실행 파이프라인, 페이지 테이블을 포함하는 시스템 메모리 및 로컬 캐시를 포함한다. 복수의 PE 중 제1 PE는 실행 파이프라인의 디코드 스테이지를 사용하여 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령을 디코딩하도록 구성된다. 제1 PE는 실행 파이프라인의 실행 스테이지를 사용하여, 제1 PE의 로컬 캐시에 있는 PTE에 대응하는 코히어런스 그래뉼에 캐싱된 PTE의 SP-PTE 필드를 수정하기 위해 SP-PTE 필드 저장 명령을 실행하도록 추가로 구성된다. 복수의 PE 중 제2 PE는 인터커넥트 버스를 통해 코히어런스 그래뉼에 대해 제1 PE로부터 버스 요청을 수신하도록 구성된다. 제2 PE는 코히어런스 그래뉼의 사본이 제2 PE의 하드웨어 테이블 워커(HTW)에 의해서만 판독될 수 있음을 나타내기 위해 제2 PE의 로컬 캐시에 있는 코히어런스 그래뉼의 사본의 코히어런스 상태를 워커 판독 가능(W: walker-readable)의 코히어런스 상태로 업데이트하도록 추가로 구성된다.
다른 예시적인 실시예에서, PTE 유지 보수를 용이하게 하기 위한 방법이 제공된다. 본 방법은 프로세서 기반 디바이스의 복수의 PE 중 제1 프로세싱 요소(PE)의 실행 파이프라인의 디코드 스테이지를 사용하여, 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령을 디코딩하는 단계를 포함한다. 본 방법은 프로세서 기반 디바이스의 시스템 메모리의 페이지 테이블의 PTE의 SP-PTE 필드를 수정하기 위해 SP-PTE 필드 저장 명령을 실행하는 단계를 더 포함하고, 여기서 PTE는 제1 PE의 로컬 캐시에 있는 PTE에 대응하는 코히어런스 그래뉼에서 캐싱된다. 본 방법은 또한 복수의 PE 중 제2 PE에 의해 인터커넥트 버스를 통해, 코히어런스 그래뉼에 대해 제1 PE로부터 버스 요청을 수신하는 단계를 포함한다. 본 방법은 코히어런스 그래뉼의 사본이 제2 PE의 하드웨어 테이블 워커(HTW)에 의해서만 판독될 수 있음을 나타내기 위해 제2 PE에 의해 제2 PE의 로컬 캐시에 있는 코히어런스 그래뉼의 사본의 코히어런스 상태를 워커 판독 가능(W)의 코히어런스 상태로 업데이트하는 단계를 추가적으로 포함한다.
다른 예시적인 실시예에서, 비일시적 컴퓨터 판독 가능 매체가 제공된다. 컴퓨터 판독 가능 매체는 프로세서에 의해 실행될 때 프로세서로 하여금 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령을 디코딩하게 하는 컴퓨터 실행 가능 명령을 저장한다. 컴퓨터 실행 가능 명령은 또한 프로세서로 하여금 시스템 메모리의 페이지 테이블의 PTE의 SP-PTE 필드를 수정하기 위해 SP-PTE 필드 저장 명령을 실행하게 하며, 여기서 PTE는 복수의 PE 중 제1 PE의 로컬 캐시에 있는 PTE에 대응하는 코히어런스 그래뉼에서 캐싱된다. 컴퓨터 실행 가능 명령은 또한 프로세서로 하여금 복수의 PE 중 제2 PE에 의해 인터커넥트 버스를 통해, 코히어런스 그래뉼에 대해 제1 PE로부터의 버스 요청을 수신하게 한다. 컴퓨터 실행 가능 명령은 추가로 프로세서로 하여금 제2 PE에 의해 코히어런스 그래뉼의 사본이 제2 PE의 하드웨어 테이블 워커(HTW)에 의해서만 판독될 수 있음을 나타내기 위해 제2 PE의 로컬 캐시에 있는 코히어런스 그래뉼의 사본의 코히어런스 상태를 워커 판독 가능(W)의 코히어런스 상태로 업데이트하게 한다.
본 기술 분야의 통상의 기술자는 첨부 도면과 관련하여 바람직한 실시예에 대한 이하의 상세한 설명을 읽은 후에 본 개시의 범위를 이해하고 그의 추가 실시예를 인식할 것이다.
본 명세서에 통합되고 본 명세서의 일부를 형성하는 첨부 도면은 본 개시의 여러 실시예를 도시하고, 본 설명과 함께 본 개시의 원리를 설명하는 역할을 한다.
도 1은 페이지 테이블 엔트리(PTE) 유지 보수를 용이하게 하도록 구성된 복수의 프로세싱 요소(PE)를 포함하는 예시적인 프로세서 기반 디바이스의 개략도이다.
도 2는 특수 PTE(SP-PTE) 필드 저장 명령을 실행하고 타깃 코히어런스 그래뉼의 코히어런스 상태를 업데이트하기 위해 도 1의 프로세서 기반 디바이스의 제1 PE에 의해 적용되는 예시적인 로직을 도시하는 흐름도이다.
도 3은 스누프(snoop) 버스 요청에 응답하고 타깃 코히어런스 그래뉼의 공유된 사본의 코히어런스 상태를 업데이트하기 위해 도 1의 프로세서 기반 디바이스의 제2 PE에 의해 적용되는 예시적인 로직을 도시하는 흐름도이다.
도 4는 제2 PE의 하드웨어 테이블 워커(HTW)에 의해 타깃 코히어런스 그래뉼의 공유된 사본에 대한 판독 동작을 수행하기 위해 도 1의 프로세서 기반 디바이스의 제2 PE에 의해 적용되는 예시적인 로직을 도시하는 흐름도이다.
도 5는 SP-PTE 필드 저장 명령을 실행하는 도 1의 프로세서 기반 디바이스의 제1 PE에 응답하여 코히어런스 그래뉼에 대한 코히어런스 상태 천이를 도시하는 도면이다.
도 6은 통상의 메모리 저장 동작을 실행하는 도 1의 프로세서 기반 디바이스의 제1 PE에 응답하여 코히어런스 그래뉼에 대한 코히어런스 상태 천이를 도시하는 도면이다.
도 7은 판독 동작을 수행하는 도 1의 프로세서 기반 디바이스의 제2 PE의 HTW에 응답하여 코히어런스 그래뉼의 로컬 사본에 대한 코히어런스 상태 천이를 도시하는 도면이다.
도 8은 도 1의 프로세서 기반 디바이스의 제2 PE의 논(non)-HTW 에이전트에 의한 판독 동작에 응답하여 코히어런스 그래뉼의 로컬 사본에 대한 코히어런스 상태 천이를 도시하는 도면이다.
도 9a 및 도 9b는 워커 판독 가능(W) 코히어런스 상태 및 일부 실시예에서 수정된 워커 액세스 가능(Mw) 코히어런스 상태를 사용하여 PTE 유지 보수를 용이하게 하기 위한 도 1의 프로세서 기반 디바이스의 제1 PE의 예시적인 동작을 도시하는 흐름도이다.
도 10은 SP-PTE 필드 저장 명령의 타깃인 코히어런스 그래뉼의 공유된 사본이 다른 PE에 존재하는지를 결정하기 위해 버스 커맨드를 발행하기 위한 도 1의 프로세서 기반 디바이스의 제1 PE의 추가의 예시적인 동작을 도시하는 흐름도이다.
도 11은 W의 코히어런스 상태를 갖는 코히어런스 그래뉼의 공유된 사본에 대한 HTW 판독을 허용하기 위한 도 1의 프로세서 기반 디바이스의 제2 PE의 추가의 예시적인 동작을 도시하는 흐름도이다.
도 12는 논-HTW 에이전트에 의한 판독을 허용하지 않기 위한 도 1의 프로세서 기반 디바이스의 제2 PE의 추가의 예시적인 동작을 도시하는 흐름도이다.
도 13은 PTE 유지 보수를 용이하게 하도록 구성된 도 1의 프로세서 기반 디바이스와 같은 예시적인 프로세서 기반 디바이스의 블록도이다.
본원에 개시된 예시적인 실시예는 프로세서 기반 디바이스에서 페이지 테이블 엔트리(PTE) 유지 보수를 용이하게 하는 것을 포함한다. 하나의 예시적인 실시예에서, 프로세서 기반 디바이스는 2개의 새로운 코히어런스 상태: 워커 판독 가능(W) 및 수정된 워커 액세스 가능(Mw)을 지원하도록 각각 구성된 복수의 프로세싱 요소(PE)를 포함한다. W 코히어런스 상태는 대응하는 코히어런스 그래뉼이 하드웨어 테이블 워커(HTW)에 의해 판독 목적으로 코히어런트이지만, 다른 목적을 위해서는 코히어런트로 고려되지 않음을 나타낸다. 따라서, W 코히어런스 상태를 갖는 코히어런스 그래뉼에 대한 하드웨어 테이블 워커(HTW)에 의한 판독 액세스는 허가되지만, 코히어런스 그래뉼에 대한 논-HTW 에이전트에 의한 모든 쓰기 동작 및 모든 판독 동작은 허용되지 않는다. Mw 코히어런스 상태는 HTW에 대해서만 보이는(즉, W의 코히어런스 상태를 갖는) 코히어런스 그래뉼의 캐싱된 사본이 다른 캐시에 존재할 수 있음을 나타낸다. 또한, Mw 코히어런스 상태는 코히어런스 그래뉼이 나중에 PE의 로컬 캐시로부터 제거될 때 대응하는 코히어런스 그래뉼을 보유하는 PE가 시스템 메모리 업데이트를 담당함을 나타낸다. 일부 실시예에서, 각각의 PE는 PTE의 SP-PTE 필드를 수정하기 위한 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령의 사용을 지원하고 대응하는 코히어런스 그래뉼이 Mw 상태로 천이되어야 함을 PE의 로컬 캐시에 나타내고 대응하는 코히어런스 그래뉼의 사본이 그 코히어런스 상태를 업데이트해야 함을 원격 로컬 캐시에 나타내도록 구성될 수 있다. 이러한 실시예에서, Mw 코히어런스 상태는 PE가 추가 버스 요청을 만들 필요 없이 SP-PTE 필드를 업데이트하기 위해 SP-PTE 필드 저장 명령을 실행하도록 허용된다는 것을 나타낸다.
이와 관련하여, 도 1은 실행 가능한 명령의 동시 프로세싱을 위해 복수의 PE(102(0)-102(P))를 제공하는 예시적인 프로세서 기반 디바이스(100)를 도시한다. PE(102(0)-102(P))의 각각은 하나 이상의 프로세서 코어를 갖는 중앙 처리 장치(CPU)를 포함할 수 있거나, 로직 실행 유닛 및 연관된 캐시 및 기능 유닛을 포함하는 개별 프로세서 코어를 포함할 수 있다. 도 1의 예에서, PE(102(0)-102(P))는 (비제한적인 예로서, 스누프 요청 및 스누프 응답과 같은) 프로세서 간 통신이 전달되는 인터커넥트 버스(104)를 통해 통신 가능하게 커플링된다. 일부 실시예에서, 인터커넥트 버스(104)는 명료성을 위해 도 1에 도시되지 않은 추가 구성 요소(예를 들어, 비제한적인 예로서 버스 컨트롤러 회로 및/또는 중재 회로)를 포함할 수 있다. PE(102(0)-102(P))는 또한 인터커넥트 버스(104)를 통해 시스템 메모리(106) 및 공유된 캐시(108)에 통신 가능하게 커플링된다.
도 1의 시스템 메모리(106)는 PTE(112(0)-112(T))를 포함하는 페이지 테이블(110)을 저장한다. 각각의 PTE(112(0)-112(T))는 시스템 메모리(106)의 물리적 메모리 어드레스에 대한 가상 메모리 어드레스의 매핑을 나타내며, 가상-대-물리 어드레스 트랜슬레이션에 사용될 수 있다. PTE(112(0)-112(T))는 소프트웨어에 의해서만 사용되고 비제한적인 예로서 페이지 카운트 및/또는 페이지 연령 추적, 페이지 테이블 업데이트 관리 등을 위한 비트를 포함할 수 있는 대응하는 SP-PTE 필드(114(0)-114(T))를 포함한다. 일부 실시예에서, PTE(112(0)-112(T))는 도 1에 도시되지 않은 추가 필드를 포함할 수 있고, 또한 일부 실시예에 따른 페이지 테이블(110)은 복수의 페이지 테이블을 포함하는 다중 레벨 페이지 테이블일 수 있음을 이해해야 한다. 도 1의 각각의 PE(102(0)-102(P))는 또한 가상-대-물리적 어드레스 트랜슬레이션을 수행하는 데 필요한 복수의 PTE(112(0)-112(T))의 PTE를 찾기 위해 페이지 테이블(110)을 검색하기 위한 로직을 구현하는 대응하는 HTW(116(0)-116(P))를 포함한다. HTW(116(0)-116(P))는 최근 액세스된 PTE(112(0)-112(T))를 캐싱하기 위한 대응하는 트랜슬레이션 룩어사이드 버퍼(TLB: translation lookaside buffer)(118(0)-118(P))를 포함한다.
도 1의 PE(102(0)-102(P))는 컴퓨터 실행 가능 명령을 포함하는 대응하는 명령 스트림을 실행하도록 구성된 대응하는 실행 파이프라인(120(0)-120(P))을 추가로 포함한다. 도 1의 예에서, 실행 파이프라인(120(0)-120(P))은 각각 실행을 위한 명령을 검색하기 위한 페치 스테이지(fetch stage)(122(0)-122(P)), 페칭된 명령을 명령 실행을 위한 제어 신호로 트랜슬레이팅하기 위한 디코드 스테이지(124(0)-124(P)) 및 명령 실행을 실제로 수행하기 위한 실행 스테이지(126(0)-126(P))를 포함한다. PE(102(0)-102(P))의 일부 실시예는 도 1의 예에 도시된 것보다 더 적거나 더 많은 스테이지를 포함할 수 있음을 이해해야 한다.
도 1의 PE(102(0)-102(P))는 또한 각각 복수의 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))(각각 도 1에서 "COGRAN"으로 캡셔닝됨)을 각각 저장하는 대응하는 로컬 캐시(128(0)-128(P))를 포함한다. 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))은 코히어런스가 유지되는 최소 메모리 블록을 나타내며, "캐시 라인(130(0)-130(C), 130'(0)-130'(C))"으로 또한 지칭될 수 있다. 도 1에 도시된 바와 같이, 코히어런스 그래뉼(130(0), 130'(0)) 각각은 각각의 코히어런스 그래뉼(130(0), 130'(0))에 대한 코히어런스 상태를 나타내는 대응하는 코히어런스 상태(132, 132')(도 1에서 "CS"로 각각 캡셔닝됨)를 갖는다. 도 1에 도시되지는 않았지만, 모든 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))은 코히어런스 상태(132, 132')에 기능적으로 대응하는 코히어런스 상태를 포함하는 것으로 이해되어야 한다.
코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))은 예를 들어, 복수의 PTE(112(0)-112(T)) 중의 PTE에 대응하는 코히어런스 그래뉼을 포함하는 이전에 페칭된 데이터의 사본을 보유하도록 구성된다. 따라서, 예를 들어, 가상-대-물리적 어드레스 트랜슬레이션을 수행하기 위해 HTW(116(0))에 의해 필요한 PTE가 TLB(118(0))에서 발견되지 않으면, HTW(116(0))는 다음으로 시스템 메모리(106)로부터 PTE를 페칭하기 전에 로컬 캐시(128(0))의 코히어런스 그래뉼(130(0)-130(C)) 중 하나로부터 PTE를 검색하려고 시도할 수 있다. 일부 실시예에서, 로컬 캐시(128(0)-128(P)) 및 공유된 캐시(108)는 캐시 계층에서 상이한 레벨을 나타낼 수 있다. 예를 들어, 이러한 실시예에서 로컬 캐시(128(0)-128(P))는 레벨 2(L2) 캐시를 나타낼 수 있는 반면, 공유된 캐시(108)는 레벨 3(L3) 캐시를 나타낼 수 있다.
도 1의 프로세서 기반 디바이스(100)는 특히 다른 요소 중에서 알려진 디지털 로직 요소, 반도체 회로, 프로세싱 코어 및/또는 메모리 구조, 또는 이들의 조합 중 임의의 하나를 포함할 수 있다. 본원에 설명된 실시예는 요소의 임의의 특정 배열로 한정되지 않으며, 개시된 기술은 반도체 소켓 또는 패키지의 다양한 구조 및 레이아웃으로 쉽게 확장될 수 있다. 프로세서 기반 디바이스(100)의 일부 실시예는 도 1에 도시된 것 외의 요소를 포함할 수 있음을 이해해야 한다. 예를 들어, PE(102(0)-102(P))는 각각의 로컬 캐시(128(0)-128(P))에 대한 캐시 컨트롤러 회로 및/또는 추가 메모리 디바이스, 캐시 및/또는 컨트롤러 회로를 추가로 포함할 수 있다.
위에서 언급한 바와 같이, HTW(116(0)-116(P)) 중 하나에 의해 필요한 특정 PTE(112(0)-112(T))의 로컬 사본이 대응하는 TLB(118(0)-118(P))에 존재하는 한, HTW(116(0)-116(P))는 PTE(112(0)-112(T))의 SP-PTE 필드(114(0)-114(T))에 대한 수정을 인식하지 못하고, PTE(112(0)-112(T))는 필요에 따라 계속 액세스된다. 그러나, TLB(118(0)-118(P))가 PTE의 작업 세트를 보유하기에 너무 작은 경우, 성능 문제가 발생할 수 있다. SP-PTE 필드(114(0)-114(T))에 대한 업데이트는 HTW(116(0)-116(P))에 투명하지만, 로컬 캐시(128(0)-128(P))에 보유되는 PTE는 소프트웨어가 SP-PTE 필드(114(0)-114(T))를 수정할 때 로컬 캐시(128(0)-128(P))로부터 무효화될 수 있다. 따라서, 가상-대-물리적 어드레스 트랜슬레이션에 필요한 PTE(112(0)-112(T)) 중 하나가 TLB(118(0)-118(P)) 중의 TLB에 존재하지 않고 대응하는 로컬 캐시(128(0)-128(P))가 SP-PTE 필드(114(0)-114(T))의 수정으로 인해 PTE(112(0)-112(T))의 사본을 무효화한 경우, 대응하는 HTW(116(0)-116(P))는 시스템 메모리(106)로부터 PTE(112(0)-112(T))의 사본을 획득하기 위해 메모리 판독 동작을 수행해야 한다. 이러한 성능 문제는 PTE(112(0)-112(T))를 포함하는 동일한 코히어런스 그래뉼(예를 들어, 로컬 캐시(128(0)-128(P)) 내의 코히어런스 그래뉼(130(0) 및 130'(0))에 액세스하려고 모두 시도하는 복수의 PE(102(0)-102(P))를 포함하는 프로세서 기반 디바이스에서 악화될 수 있다.
이와 관련하여, PE(102(0)-102(P))는 각각 2개의 새로운 코히어런스 상태: 워커 판독 가능(W) 및 수정된 워커 액세스 가능(Mw)을 지원하도록 구성된다. W 코히어런스 상태는 대응하는 코히어런스 그래뉼(예를 들어, 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))에 대한 판독 액세스가 허가되지만, 코히어런스 그래뉼에 대한 PE(102(P))의 논-HTW 에이전트(134)와 같은 논-HTW 에이전트에 의한 모든 쓰기 동작 및 모든 판독 동작은 허용되지 않음을 나타낸다. Mw 코히어런스 상태는 HTW(116(0)-116(P))에만 보이는(즉, W의 코히어런스 상태를 갖는) 코히어런스 그래뉼의 캐싱된 사본이 다른 로컬 캐시(128(0)-128(P))에 존재함을 나타낸다. 또한, Mw 코히어런스 상태는 코히어런스 그래뉼이 나중에 PE의 로컬 캐시로부터 제거될 때 대응하는 코히어런스 그래뉼을 보유하는 PE가 시스템 메모리 업데이트를 담당함을 나타낸다. 각각의 PE(102(0)-102(P))는 또한 PTE(112(0)-112(T))의 SP-PTE 필드(114(0)-114(T))를 수정하기 위한 SP-PTE 필드 저장 명령(136)의 사용을 지원하고, 대응하는 코히어런스 그래뉼(예를 들어, 대응하는 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C)) 중 하나)는 Mw 코히어런스 상태로 천이되어야 함을 대응하는 로컬 캐시(128(0)-128(P))에 나타내고 대응하는 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))의 사본이 그 코히어런스 상태(예를 들어, 코히어런스 상태(132, 132'))를 업데이트해야 함을 원격 로컬 캐시(128(0)-128(P))에 나타내도록 구성된다. 일부 실시예에서, SP-PTE 필드 저장 명령(136)은 커스텀 저장 명령 또는 커스텀 비교-교환 명령일 수 있거나, 페이지 테이블(110)과 연관되고 SP-PTE 필드(114(0)-114(T))와 같은 SP-PTE 필드만 수정하는 어드레스 범위에 관한 통상의 메모리 저장 명령일 수 있다. 후자의 경우에, 대응하는 PE(102(0)-102(P))의 하드웨어는 통상의 메모리 저장 명령이 페이지 테이블(110)의 PTE의 SP-PTE 필드만을 수정하고 있다고 결정할 수 있고, 응답으로 본원에 설명된 바와 같이 통상의 메모리 저장 명령을 프로세싱할 수 있다.
예시적인 동작에서, PE(102(0))("제1 PE(102(0))")의 실행 파이프라인(120(0))의 디코드 스테이지(124(0))는 SP-PTE 필드 저장 명령(136)을 디코딩하고, 이는 그 다음 PTE의 SP-PTE 필드(예를 들어, PTE(112(0))의 SP-PTE 필드(114(0)))를 수정하기 위해 실행 파이프라인(120(0))의 실행 스테이지(126(0))에 의해 실행된다. 일부 실시예에서, 제1 PE(102(0))는 PTE(112(0))에 대응하는 코히어런스 그래뉼의 코히어런스 상태(예를 들어, 로컬 캐시(128(0))에 있는 코히어런스 그래뉼(130(0))의 코히어런스 상태(132))를 Mw의 코히어런스 상태로 업데이트한다. 이는 HTW(116(0)-116(P))에만 보이는 코히어런스 그래뉼(130(0))의 캐싱된 사본이 하나 이상의 로컬 캐시(128(0)-128(P))에 존재함을 나타낸다.
일부 실시예에서, 코히어런스 상태(132)는 로컬 캐시(128(0))의 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))이 다른 PE(102(0)-102(P))의 하나 이상의 로컬 캐시(128(0)-128(P))(예를 들어, PE(102(P))의 로컬 캐시(128(P)))에 의해 공유되는 것으로 결정하는 제1 PE(102(0))에 응답하여 Mw로 업데이트될 수 있다. 예를 들어, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 공유 수정(shared modified)(O), 최근 공유(recent shared)(R) 또는 공유 클린(S)의 코히어런스 상태인 경우, PE(102(0))는 제1 PE(102(0))가 코히어런스 그래뉼(130(0))의 공유 사본을 갖고 PTE(112(0))의 SP-PTE 필드(114(0))를 관리하려고 함을 나타내기 위해 인터커넥트 버스(104)를 통해 prex_w(배타 촉진, 워커) 버스 요청(138)을 송신할 수 있다. 그 다음, 제1 PE(102(0))는 prex_w 버스 요청(138)에 대한 응답(140)("PREX_W RESP")에 기초하여 코히어런스 그래뉼(130(0))이 다른 로컬 캐시(128(0)-116(P))에 의해 공유되는지 결정할 수 있다. 유사하게, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 워커 판독 가능(W) 또는 무효(I)의 코히어런스 상태에 있는 경우, PE(102(0))는 제1 PE(102(0))가 PTE(112(0))의 SP-PTE 필드(114(0))를 업데이트하고 있으며 코히어런스 그래뉼(130(0))의 코히어런트 사본을 보유하지 않음을 나타내기 위해 인터커넥트 버스(104)를 통해 rd_e_w(배타 판독, 워커) 버스 요청(142)을 송신할 수 있다. 그 후, 제1 PE(102(0))는 rd_e_w 버스 요청(142)에 대한 응답(144)("RD_E_W RESP")에 기초하여 코히어런스 그래뉼(130(0))이 다른 로컬 캐시(128(0)-128(P))에 의해 공유되는지 결정할 수 있다.
일부 실시예에서, 코히어런스 그래뉼(130(0)-130(C), 130'(0)-130'(C))은 HTW 설치 표시자(146 및 146')(도 1에서 "HTWII"로 캡셔닝됨)와 같은 HTW 설치 표시자를 추가로 포함한다. HTW 설치 표시자(146, 146')는 HTW 요청의 결과로서 대응하는 코히어런스 그래뉼((130(0), 130'(0))이 각각의 로컬 캐시(128(0)-128(P))에 설치되었는지를 나타낸다. 이러한 실시예에서 제1 PE(102(0))는 HTW 설치 표시자(146)가 설정되고 SP-PTE 필드 저장 명령(136)이 PTE(112(0))의 SP-PTE 필드(114(0))만을 수정하는 통상의 메모리 저장 명령이라는 결정에 응답하여 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)를 업데이트할 수 있다.
제2 PE(102(P))는 제1 PE(102(0))로부터의 버스 요청(예를 들어, prex_w 버스 요청(138) 또는 rd_e_w 버스 요청(142))을 수신할 시, 코히어런스 그래뉼의 사본(즉, 코히어런스 그래뉼(130'(0)) 또는 "사본(130'(0))")이 로컬 캐시(128(P))에서 캐싱되었음을 나타내는 응답(예를 들어, 응답(140) 또는 응답(144))을 송신할 수 있다. 그 후, 제2 PE(102(P))는 사본(130'(0))이 제2 PE(102(P))의 HTW(116(P))에 의해서만 판독될 수 있음을 나타내기 위해 사본(130'(0))의 코히어런스 상태(132')를 W의 코히어런스 상태로 업데이트한다.
후속적으로, 제2 PE(102(P))는 HTW(116(P))가 사본(130'(0))을 판독하려고 하는지 결정할 수 있고, 추가로 사본(130'(0))이 W의 코히어런스 상태를 갖는지 결정할 수 있다. 그 후, 제2 PE(102(P))는 HTW(116(P))가 사본(130'(0))을 판독하도록 허용할 수 있다. 그러나, 제2 PE(102(P)) 논-HTW 에이전트가 사본(130'(0))을 판독하려고 하고(또는 임의의 에이전트, HTW 또는 논-HTW가 사본(130'(0))에 쓰려고 함) 사본(130'(0))이 W의 코히어런스 상태를 갖는 것으로 결정하면, 제2 PE(102(P))는 로컬 캐시(128(P))에서 사본(130'(0))을 무효화하고, 로컬 캐시(128(P)) 상의 캐시 미스(cache miss)로서 사본(130'(0))을 판독하도록 요청을 프로세싱할 것이다.
도 2는 일부 실시예에 따라 SP-PTE 필드 저장 명령을 실행하고 코히어런스 그래뉼의 코히어런스 상태를 업데이트하기 위해 도 1의 프로세서 기반 디바이스(100)의 제1 PE(102(0))와 같은 PE에 의해 적용되는 예시적인 로직을 도시하는 흐름도(200)를 도시한다. 도 2에 도시된 바와 같이, PE는 코히어런스 그래뉼(130(0))에 대한 SP-PTE 필드 저장 명령을 실행한다(블록 202). 그 후, PE의 로컬 캐시는 코히어런스 그래뉼의 코히어런스 상태가 배타 클린(E)인지 또는 수정(M)인지를 결정한다(블록 204). 그렇다면, PE는 코히어런스 그래뉼의 공유 사본이 존재하지 않는다고 결론지을 수 있다(블록 206). PE는 추가로 버스 요청이 필요하지 않다고 결론지을 수 있다(블록 208). 따라서, 코히어런스 그래뉼은 Mw 또는 M의 다음 코히어런스 상태로 천이한다(블록 210). 코히어런스 그래뉼이 Mw 또는 M의 코히어런스 상태로 천이하는지 여부는 프로세서 기반 디바이스(100)의 특정 구현에 따를 수 있다. 예를 들어, 일부 실시예에서, 프로세서 기반 디바이스(100)는 코히어런스 그래뉼의 논-SP-PTE 필드의 임의의 후속 수정이 논-SP-PTE 필드에 대한 쓰기를 완료하기 위해 코히어런스 상태를 다시 M으로 변경하기 위한 버스 요청을 필요로 하지 않도록 코히어런스 그래뉼의 코히어런스 상태를 천이하도록 선택할 수 있다. 다른 실시예는 항상 Mw의 코히어런스 상태로 천이하도록 선택할 수 있다.
PE의 로컬 캐시가 결정 블록(204)에서 코히어런스 그래뉼의 코히어런스 상태가 E 또는 M이 아니라고 결정하면, 로컬 캐시는 다음으로 코히어런스 그래뉼의 코히어런스 상태가 Mw인지 결정한다(블록 212). 그렇다면, PE는 O, R, 또는 S의 코히어런스 상태를 갖는 코히어런스 그래뉼의 사본이 존재하지 않는다고 결론지을 수 있다(블록 214). PE는 버스 요청이 필요하지 않다고 추가로 결론지을 수 있다(블록 216). 따라서, 코히어런스 그래뉼은 Mw의 다음 코히어런스 상태로 천이한다(블록 218).
결정 블록(212)에서, 코히어런스 그래뉼의 코히어런스 상태가 Mw가 아닌 것으로 결정되면, 로컬 캐시는 코히어런스 그래뉼의 코히어런스 상태가 O, R 또는 S인지 결정한다(블록 220). 그렇다면, PE는 코히어런스 그래뉼의 코히어런스 상태가 Mw로 업그레이드되어야 한다고 결론을 내린다(블록 222). 따라서, PE는 제1 PE가 코히어런스 그래뉼의 공유 사본을 갖고 HTW에 보이지 않는 SP-PTE 필드를 관리하려고 한다는 것을 나타내기 위해 임의의 다른 PE에 prex_w 버스 요청을 전송한다(블록 224). 응답이 수신되면, PE는 응답이 코히어런스 그래뉼이 공유됨을 나타내는지를 결정한다(블록 226). 그렇다면, 코히어런스 그래뉼은 Mw의 코히어런스 상태로 천이된다(블록 228). 그렇지 않으면, 코히어런스 그래뉼은 M의 코히어런스 상태로 천이한다(블록 230).
로컬 캐시가 결정 블록(220)에서 코히어런스 그래뉼의 코히어런스 상태가 O, R, 또는 S가 아니라고 결정하면, 로컬 캐시는 다음으로 코히어런스 상태가 W 또는 I인지 결정한다(블록 232). 그렇다면, PE는 Mw의 코히어런스 상태를 갖는 코히어런스 그래뉼의 사본을 획득하는 것이 필요하다는 결론을 내릴 수 있다(블록 234). 따라서, PE는 PE가 HTW에 보이지 않는 SP-PTE 필드를 업데이트하고 있고 코히어런스 그래뉼의 코히어런트 사본을 보유하지 않음을 나타내기 위해 임의의 다른 PE에 rd_e_w 버스 요청을 전송한다(블록 236). 그 후, 프로세싱은 상술한 바와 같이 블록(226)에서 재개된다. 로컬 캐시가 결정 블록(232)에서 코히어런스 그래뉼의 코히어런스 상태가 W 또는 I가 아니라고 결정하는 시나리오는 유일하게 유효한 코히어런스 상태가 M, Mw, E, O, R, S, W 및 I인 실시예에서 절대 발생해서는 안 되는 비적격 시나리오임에 유의한다(블록 238). 일부 실시예는 본원에 설명된 것과는 상이하거나 더 많거나 더 적은 코히어런스 상태를 포함할 수 있음에 유의한다.
버스 요청에 응답하고 SP-PTE 필드 저장 명령이 동작한 코히어런스 그래뉼의 공유 사본의 코히어런스 상태를 업데이트하기 위해, 도 1의 프로세서 기반 디바이스(100)의 제2 PE(102(P))와 같은 PE에 의해 적용되는 예시적인 로직을 도시하기 위해, 도 3은 흐름도(300)를 제공한다. 일부 실시예에서, PE는 코히어런스 그래뉼에 대한 rd_e_w 버스 요청을 수신한다(블록 302). 그 후, PE의 로컬 캐시는 코히어런스 그래뉼의 코히어런스 상태가 M 또는 Mw인지 결정한다(블록 304). 그렇다면, PE는 메모리를 업데이트할 책임을 새로운 마스터에 넘긴다(블록 306). PE는 코히어런스 그래뉼이 공유됨을 스누프 응답에서 나타낸다(블록 308). PE는 또한 코히어런스 그래뉼에 대한 코히어런스 상태를 W로 변경한다(블록 310). 로컬 캐시가 결정 블록(304)에서 코히어런스 그래뉼의 코히어런스 상태가 M 또는 Mw가 아니라고 결정하면, 로컬 캐시는 다음으로 코히어런스 그래뉼의 코히어런스 상태가 E인지 결정한다(블록 312). 그렇다면, 프로세싱은 상술한 바와 같이 블록(308)에서 계속된다. 코히어런스 상태가 E가 아니면, 프로세싱은 블록(314)에서 재개된다.
다음으로, 로컬 캐시는 코히어런스 그래뉼의 코히어런스 상태가 R, S 또는 W인지 결정한다(블록 314). 그렇다면, 프로세싱은 상술한 바와 같이 블록(308)에서 계속된다. 로컬 캐시가 결정 블록(314)에서 코히어런스 상태가 R, S, 또는 W가 아니라고 결정하면, 로컬 캐시는 코히어런스 그래뉼의 코히어런스 상태가 O인지 결정한다(블록 316). 그렇다면, PE는 메모리를 업데이트할 책임을 새로운 마스터에 넘긴다(블록 318). 그 후, 프로세싱은 상술한 바와 같이 블록(308)에서 계속된다. 로컬 캐시가 결정 블록(316)에서 코히어런스 그래뉼의 코히어런스 상태가 O가 아니라고 결정하면, 로컬 캐시는 다음으로 코히어런스 그래뉼의 코히어런스 상태가 I인지 결정한다(블록 320). 그렇다면, 프로세싱은 통상의 방식으로 계속된다(블록 322). 로컬 캐시가 결정 블록(320)에서 코히어런스 그래뉼의 코히어런스 상태가 I가 아니라고 결정하는 시나리오는 유일하게 유효한 코히어런스 상태가 M, Mw, E, O, R, S, W 및 I인 실시예에서 절대 발생해서는 안 되는 비적격 시나리오임에 유의한다(블록 324). 일부 실시예는 본원에 설명된 것과는 상이하거나 더 많거나 더 적은 코히어런스 상태를 포함할 수 있음에 유의한다.
일부 실시예에서, PE는 코히어런스 그래뉼에 대한 prex_w 버스 요청을 수신할 수 있다(블록 326). 그렇다면, 프로세싱은 상술한 바와 같이 블록(314)에서 계속된다.
도 4는 코히어런스 그래뉼의 공유 사본에 대해 HTW에 의한 판독 동작을 수행하기 위해, 도 1의 프로세서 기반 디바이스(100)의 제2 PE(102(P))와 같은 PE에 의해 적용되는 예시적인 로직을 도시하는 흐름도(400)를 도시한다. 도 4에 도시된 바와 같이, PE는 코히어런스 그래뉼에 대한 HTW 메모리 판독 액세스 동작을 수행한다(블록 402). 그 후, PE의 로컬 캐시는 코히어런스 그래뉼의 코히어런스 상태가 E, M, Mw, O, R, S 또는 W인지 결정한다(블록 404). 그렇다면, PE는 로컬 캐시로부터의 데이터로 HTW 판독을 충족시킨다(블록 406). 코히어런스 그래뉼의 코히어런스 상태에도 변화가 없다(블록 408).
로컬 캐시가 결정 블록(404)에서 코히어런스 그래뉼의 코히어런스 상태가 E, M, Mw, O, R, S, 또는 W가 아니라고 결정하면, 로컬 캐시는 다음으로 코히어런스 그래뉼의 코히어런스 상태가 I인지 결정한다(블록 410). 그렇다면, PE는 PE가 HTW를 대신하여 판독 동작을 수행하고 있고 필요하다면 W 코히어런스 상태에서 코히어런스 그래뉼을 수용할 수 있음을 나타내는 rd_x_w(임의 판독, 워커) 버스 요청을 전송한다(블록 412). rd_x_w 버스 요청에 대한 응답에 기초하여, PE는 코히어런스 그래뉼이 W의 코히어런스 상태로 획득될 것인지를 결정한다(블록 414). 그렇다면, PE는 코히어런스 그래뉼의 코히어런스 상태를 W로 설정한다(블록 416). 그렇지 않다면, PE는 코히어런스 그래뉼의 코히어런스 상태를 E, M, O, R 또는 S 중 하나로 설정하기 위해 통상적인 규칙을 따른다(블록 418). 로컬 캐시가 결정 블록(410)에서 코히어런스 그래뉼의 코히어런스 상태가 I이 아니라고 결정하는 시나리오는 발생해서는 안 되는 비적격 시나리오라는 점에 유의한다(블록 420).
도 5는 SP-PTE 필드 저장 명령(136)을 실행하는 도 1의 프로세서 기반 디바이스(100)의 제1 PE(102(0))에 응답하여 코히어런스 그래뉼(130(0))과 같은 코히어런스 그래뉼에 대한 예시적인 코히어런스 상태 천이를 도시한다. 도 5에 도시된 바와 같이, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 Mw의 초기 상태에 있는 경우, 버스 요청이 전송되지 않고, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 화살표(502)로 나타낸 바와 같이 Mw로 천이한다. 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 M 또는 E의 초기 상태에 있으면, 버스 요청이 전송되지 않고, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)는 화살표(504, 505, 506 및 507)로 나타낸 바와 같이 Mw 또는 M으로 천이된다. 도 2와 관련하여 상술한 바와 같이, 코히어런스 그래뉼(130(0))이 Mw 또는 M의 코히어런스 상태로 천이하는지 여부는 프로세서 기반 디바이스(100)의 특정 구현에 따를 수 있다.
코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 O, R 또는 S의 초기 상태인 경우, 제1 PE(102(0))는 제1 PE(102(0))가 코히어런스 그래뉼(130(0))의 공유 사본을 갖고 HTW(116(0)-116(P))에 보이지 않는 SP-PTE 필드를 관리하려고 함을 나타내기 위해 복수의 PE(102(0)-102(P)) 중 다른 PE로 prex_w 버스 요청을 전송한다. prex_w 버스 요청에 대한 응답이 코히어런스 그래뉼(130(0))의 공유 사본이 복수의 PE(102(0)-102(P)) 중 다른 PE에 의해 보유됨을 나타내는 것에 응답하여, 코히어런스 상태(132)는 화살표(508, 510 및 512)로 나타낸 바와 같이 Mw로 천이한다. 그렇지 않으면, 코히어런스 상태(132)는 화살표(514, 516 및 518)로 나타낸 바와 같이, M으로 천이한다.
마지막으로, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 W 또는 I의 초기 상태인 경우, 제1 PE(102(0))는 제1 PE(102(0))가 HTW(116(0)-116(P))에 보이지 않는 SP-PTE 필드를 업데이트하고 있으며 코히어런스 그래뉼(130(0))의 코히어런트 사본을 보유하고 있지 않음을 나타내기 위해 복수의 PE(102(0)-102(P)) 중 다른 PE에 rd_e_w 버스 요청을 전송한다. rd_e_w 버스 요청에 대한 응답이 코히어런스 그래뉼(130(0))의 공유 사본이 복수의 PE(102(0)-102(P)) 중 다른 PE에 의해 보유됨을 나타내는 경우, 코히어런스 상태(132)는 화살표(520 및 522)로 나타낸 바와 같이 Mw로 천이한다. 그렇지 않으면, 코히어런스 상태(132)는 화살표(524 및 526)로 나타낸 바와 같이 M으로 천이한다.
통상의 메모리 저장 동작을 실행하는 도 1의 프로세서 기반 디바이스(100)의 제1 PE(102(0))에 응답하여, 도 1의 코히어런스 그래뉼(130(0))과 같은 코히어런스 그래뉼에 대한 코히어런스 상태 천이를 도시하기 위해, 도 6은 도면(600)을 제공한다. 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 Mw의 초기 상태인 경우, 제1 PE(102(0))는 제1 PE(102(0))가 코히어런스 그래뉼(130(0))의 공유 사본을 가짐을 나타내기 위해 prex(배타 촉진) 버스 요청을 복수의 PE(102(0)-102(P)) 중 다른 PE로 전송한다. 그 후, 화살표(602)로 나타낸 바와 같이, 코히어런스 상태(132)는 M으로 천이한다. 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 M 또는 E의 초기 상태에 있으면, 버스 요청이 전송되지 않고, 코히어런스 상태(132)는 화살표(604 및 606)로 나타낸 바와 같이 M으로 천이된다.
코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 O, R 또는 S의 초기 상태인 경우, 제1 PE(102(0))는 제1 PE(102(0))가 코히어런스 그래뉼(130(0))의 공유 사본을 가지고 있음을 나타내기 위해 복수의 PE(102(0)-102(P)) 중 다른 PE로 prex 버스 요청을 전송한다. 그 후, 코히어런스 상태(132)는 화살표(608, 610 및 612)로 나타낸 바와 같이 M으로 천이된다. 마지막으로, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 W 또는 I의 초기 상태이면, 제1 PE(102(0))는 제1 PE(102(0))가 코히어런스 그래뉼(130(0))의 코히어런트 사본을 보유하지 않음을 나타내기 위해 rd_e(배타 판독) 버스 요청을 전송한다. 그 후, 코히어런스 상태(132)는 화살표(614 및 616)로 나타낸 바와 같이 M으로 천이된다.
도 7은 판독 동작을 수행하는 도 1의 프로세서 기반 디바이스(100)의 제1 PE(102(0))의 HTW(116(0))에 응답하여, 도 1의 코히어런스 그래뉼(130(0))과 같은 코히어런스 그래뉼에 대한 코히어런스 상태 천이를 도시하는 도면(700)을 도시한다. 도 7의 예에서, 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 Mw, M, E, O, R, S 또는 W의 초기 상태인 경우, 버스 요청이 전송되지 않고 코히어런스 상태(132)는 화살표(702, 704, 706, 708, 710, 712 및 714)로 나타낸 바와 같이 동일하게 유지된다. 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)가 I의 초기 상태이면, 제1 PE(102(0))는 rd_x_w 버스 요청을 전송하고, 코히어런스 상태(132)는 화살표(716)로 나타낸 바와 같이 적절하게 M, E, O, R, S 또는 W로 천이된다.
도 8은 도 1의 프로세서 기반 디바이스의 제2 PE(102(P))의 논-HTW 에이전트(134)와 같은 논-HTW 에이전트에 의한 판독 동작에 응답하여, 도 1의 코히어런스 그래뉼(130'(0))과 같은 코히어런스 그래뉼에 대한 코히어런스 상태 천이를 도시하는 도면(800)을 제공한다. 도 8에 도시된 바와 같이, 코히어런스 그래뉼(130'(0))의 코히어런스 상태(132')가 Mw, M, E, O, R 또는 S의 초기 상태인 경우, 버스 요청이 전송되지 않고 코히어런스 상태(132')는 화살표(802, 804, 806, 808, 810 및 812)로 나타낸 바와 같이 동일하게 유지된다. 코히어런스 그래뉼(130'(0))의 코히어런스 상태(132')가 W 또는 I의 초기 상태이면, rd_x 버스 요청이 전송되고, 코히어런스 상태(132')는 화살표(814 및 816)로 나타낸 바와 같이 적절하게 M, E, O, R 또는 S로 천이된다.
Mw 코히어런스 상태를 사용하여 PTE 유지 보수를 용이하게 하기 위한 도 1의 프로세서 기반 디바이스(100)의 제1 PE(102(0))의 예시적인 동작을 도시하기 위해, 도 9a 및 도 9b는 흐름도(900)를 제공한다. 명료성을 위해, 도 1의 요소는 도 9a 및 도 9b를 설명할 때 참조된다. 일부 실시예에서, 도 9a의 동작은 복수의 PE(102(0)-102(P)) 중 제1 PE(102(0))가 제1 PE(102(0))의 로컬 캐시(128(0))에 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))을 설치하는 것으로 시작한다(블록 902). 그 후, 제1 PE(102(0))는 코히어런스 그래뉼(130(0))이 HTW 요청의 결과로서 설치되었는지를 나타내기 위해 코히어런스 그래뉼(130(0))에 대한 HTW 설치 표시자(146)를 설정할 수 있다(블록 904). 프로세서 기반 디바이스(100)의 복수의 PE(102(0)-102(P)) 중 제1 PE(102(0))의 실행 파이프라인(120(0))의 디코드 스테이지(124(0))는 다음으로 SP-PTE 필드 저장 명령(136)을 디코딩한다(블록 906). 그 후, 제1 PE(102(0))는 실행 파이프라인(120(0))의 실행 스테이지(126(0))를 사용하여 프로세서 기반 디바이스(100)의 시스템 메모리(106)에 있는 페이지 테이블(110)의 PTE(112(0))의 SP-PTE 필드(114(0))를 수정하기 위해 SP-PTE 필드 저장 명령(136)을 실행하며, 여기서 PTE(112(0))는 제1 PE(102(0))의 로컬 캐시(128(0))의 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))에서 캐싱된다(블록 908).
제2 PE(102(P))는 인터커넥트 버스(104)를 통해 코히어런스 그래뉼(130(0))에 대해 제1 PE(102(0))로부터 (비제한적인 예로서, prex_w 버스 요청(138) 또는 rd_e_w 버스 요청(142)과 같은) 버스 요청을 수신한다(블록 910). 일부 실시예에서, 제2 PE(102(P))는 코히어런스 그래뉼(130(0))의 사본(130'(0))이 제2 PE(102(P))의 로컬 캐시(128(P))에서 캐싱됨을 나타내는 버스 요청에 대한 응답(예를 들어, 비제한적인 예로서, 응답(140) 또는 응답(144))을 인터커넥트 버스(104)를 통해 제1 PE(102(0))에 송신한다(블록 912). 그 후, 프로세싱은 도 9b의 블록(914)에서 재개된다.
이제 도 9b를 참조하면, 제2 PE(102(P))는 다음으로 코히어런스 그래뉼(130(0))의 사본(130'(0))이 제2 PE(102(P))의 (HTW(116(P))와 같은) HTW에 의해서만 판독될 수 있음을 나타내기 위해 제2 PE(102(P))의 로컬 캐시(128(P))에 있는 코히어런스 그래뉼(130(0))의 사본(130'(0))의 코히어런스 상태(132')를 W의 코히어런스 상태로 업데이트한다(블록 914). 일부 실시예에서, 제1 PE(102(0))는 제1 PE(102(0))의 로컬 캐시(128(0))에 있는 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))이 복수의 PE(102(0)-102(P)) 중 하나 이상의 다른 PE(102(1)-102(P))의 하나 이상의 로컬 캐시(128(1)-128(P))에 의해 공유되는지를 결정할 수 있다(블록 916). 코히어런스 그래뉼(130(0))이 하나 이상의 로컬 캐시(128(1)-128(P))에 의해 공유되지 않는 경우, 프로세싱은 통상적인 방식으로 계속된다(블록 918). 그러나, 제1 PE(102(0))가 결정 블록(910)에서 코히어런스 그래뉼(130(0))이 하나 이상의 로컬 캐시(128(1)-128(P))에 의해 공유된다고 결정되면(또는 제1 PE(102(0))가 결정 블록(916)의 동작을 수행하지 않는 실시예), 제1 PE(102(0))는 HTW에만 보이는 코히어런스 그래뉼(130(0))의 캐싱된 사본이 복수의 PE(102(0)-102(P)) 중 대응하는 하나 이상의 다른 PE(102(1)-102(P))의 하나 이상의 로컬 캐시(128(1)-128(P))에 존재할 수 있음을 나타내기 위해 제1 PE(102(0))의 로컬 캐시(128(0))에 있는 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)를 Mw의 코히어런스 상태로 업데이트한다(블록 920). 일부 실시예에서, 코히어런스 상태(132)를 Mw의 코히어런스 상태로 업데이트하기 위한 블록(914)의 동작은 코히어런스 그래뉼(130(0))에 대한 HTW 설치 표시자(146)가 설정되고 SP-PTE 필드 저장 명령(136)이 PTE(112(0))의 SP-PTE 필드(114(0))만을 수정하는 통상의 메모리 저장 명령이라는 결정에 응답하여 수행된다(블록 922).
도 10은 일부 실시예에 따라, SP-PTE 필드 저장 명령(136)의 타깃인 코히어런스 그래뉼(130(0))의 공유 사본이 다른 PE(102(1)-102(P))에 존재하는지(따라서 다른 PE(102(1)-102(P))가 공유 사본의 코히어런스 상태를 W로 설정할 필요가 있는지) 결정하기 위해 버스 커맨드를 전송하기 위한 도 1의 프로세서 기반 디바이스(100)의 제1 PE(102(0))의 추가의 예시적인 동작을 도시하는 흐름도(1000)를 제공한다. 도 1의 요소는 명료성을 위해 도 10을 설명할 때 참조된다. 도 10에서, 동작은 제1 PE(102(0))의 로컬 캐시(128(0))에 있는 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))의 코히어런스 상태(132)를 제1 PE(102(0))가 결정하는 것으로 시작한다(블록 1002). 제1 PE(102(0))가 결정 블록(1002)에서 제1 PE(102(0))의 로컬 캐시(128(0))에 있는 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))이 O, R 또는 S의 코히어런스 상태에 있다고 결정하면, 제1 PE(102(0))는 프로세서 기반 디바이스(100)의 인터커넥트 버스(104)를 통해 제1 PE(102(0))가 공유 사본(130'(0))을 가지고 PTE(112(0))의 SP-PTE 필드(114(0))를 관리하려고 함을 나타내는 prex_w 버스 요청(138)을 송신한다(블록 1004). 그러나, 제1 PE(102(0))가 결정 블록(1002)에서 제1 PE(102(0))의 로컬 캐시(128(0))에 있는 PTE(112(0))에 대응하는 코히어런스 그래뉼(130(0))이 W 또는 I의 코히어런스 상태에 있는 것으로 결정하면, 제1 PE(102(0))는 제1 PE(102(0))가 PTE(112(0))의 SP-PTE 필드(114(0))를 업데이트하고 있고 코히어런스 그래뉼(130(0))의 코히어런트 사본(130'(0))을 보유하고 있지 않음을 나타내는 rd_e_w 버스 요청(142)을 송신한다(블록 1006). 블록 1004 및 1006에 의해 나타낸 시나리오에서, 도 9a의 블록 910과 관련하여 상술한 바와 같이 제2 PE(102(P))에 의해 수신된 버스 요청은 각각 prex_w 버스 요청(128) 또는 rd_e_w 버스 요청(142)을 포함할 수 있다.
도 11은 일부 실시예에 따라, W의 코히어런스 상태를 갖는 코히어런스 그래뉼(130'(0))의 공유 사본(130'(0))에 대한 HTW 판독을 허용하기 위한 도 1의 프로세서 기반 디바이스(100)의 제2 PE(102(P))의 추가의 예시적인 동작을 도시하는 흐름도(1100)를 제공한다. 도 1의 요소는 명료성을 위해 도 11을 설명할 때 참조된다. 도 11에서, 동작은 제2 PE(102(P))의 로컬 캐시(128(P))가 제2 PE(102(P))의 HTW(116(P))가 코히어런스 그래뉼(130(0))의 사본(130'(0))을 판독하려는 것으로 결정하는 것으로 시작한다(블록 1102). 그 후, 제2 PE(102(P))의 로컬 캐시(128(P))는 코히어런스 그래뉼(130(0))의 사본(130'(0))이 W의 코히어런스 상태를 갖는지 결정한다(블록 1104). 코히어런스 그래뉼(130(0))의 사본(130'(0))이 W의 코히어런스 상태를 갖는다는 결정에 응답하여, 제2 PE(102(P))의 로컬 캐시(128(P))는 HTW(116(P))가 코히어런스 그래뉼(130(0))의 사본(130'(0))을 판독하게 허용한다(블록 1106).
W의 코히어런스 상태를 갖는 코히어런스 그래뉼(130(0))의 공유 사본(130'(0))에 대한 논-HTW 에이전트에 의한 판독을 허용하지 않기 위한 도 1의 프로세서 기반 디바이스의 제2 PE의 추가의 예시적인 동작을 도시하기 위해, 도 12는 흐름도(1200)를 제공한다. 명료성을 위해, 도 1의 요소는 도 12를 설명하는 데 참조된다. 도 12의 동작은 제2 PE(102(P))의 로컬 캐시(128(P))가 제2 PE(102(P))의 논-HTW 에이전트(134)가 코히어런스 그래뉼(130(0))의 사본(130'(0))을 판독하려는 것을 결정하는 것으로 시작한다(블록 1202). 제2 PE(102(P))의 로컬 캐시(128(P))는 코히어런스 그래뉼(130(0))의 사본(130'(0))이 W의 코히어런스 상태를 갖는지 결정한다(블록 1204). 코히어런스 그래뉼(130(0))의 사본(130'(0))이 W의 코히어런스 상태를 갖는다는 결정에 응답하여, 로컬 캐시(128(P))는 일련의 동작을 수행한다(블록 1206). 로컬 캐시(128(P))는 코히어런스 그래뉼(130(0))의 사본(130'(0))을 무효화한다(블록 1208). 그 후, 로컬 캐시(128(P))는 코히어런스 그래뉼(130(0))의 사본(130'(0))을 캐시 미스로서 판독하도록 요청을 프로세싱한다(블록 1210). 일부 실시예에서, 로컬 캐시(128(P))는 또한 W의 코히어런스 상태를 갖는 코히어런스 그래뉼(130(0))의 사본(130'(0))에 대한 모든 메모리 저장 동작을 허용하지 않는다는 것을 이해해야 한다.
도 13은 용이하게 된 PTE 유지 보수를 제공하는 도 1의 프로세서 기반 디바이스(100)와 같은 예시적인 프로세서 기반 디바이스(1300)의 블록도이다. 프로세서 기반 디바이스(1300)는 인쇄 회로 보드(PCB), 서버, 퍼스널 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 퍼스널 디지털 어시스턴트(PDA: personal digital assistant), 컴퓨팅 패드, 모바일 디바이스 또는 임의의 다른 디바이스와 같은 전자 보드 카드에 포함된 회로 또는 회로들일 수 있으며, 예를 들어, 서버 또는 사용자의 컴퓨터를 나타낼 수 있다. 이 예에서, 프로세서 기반 디바이스(1300)는 프로세서(1302)를 포함한다. 프로세서(1302)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 프로세싱 회로를 나타내고, 도 1의 PE(102(0)-102(P))에 대응할 수 있다. 프로세서(1302)는 본원에서 논의된 동작 및 단계를 수행하기 위한 명령에서 프로세싱 로직을 실행하도록 구성된다. 이 예에서, 프로세서(1302)는 명령의 임시의, 빠른 액세스 메모리 저장을 위한 명령 캐시(1304) 및 명령 프로세싱 회로(1310)를 포함한다. 시스템 버스(1306)를 통해 시스템 메모리(1308)로부터와 같이, 메모리로부터 페칭 또는 사전 페칭된 명령은 명령 캐시(1304)에 저장된다. 명령 프로세싱 회로(1310)는 명령 캐시(1304)로 페칭된 명령을 프로세싱하고 실행을 위해 명령을 프로세싱하도록 구성된다.
프로세서(1302) 및 시스템 메모리(1308)는 시스템 버스(1306)(도 1의 인터커넥트 버스(104)에 대응)에 커플링되고 프로세서 기반 디바이스(1300)에 포함된 주변 디바이스를 상호 커플링할 수 있다. 공지된 바와 같이, 프로세서(1302)는 시스템 버스(1306)를 통해 어드레스, 제어 및 데이터 정보를 교환함으로써 이러한 다른 디바이스와 통신한다. 예를 들어, 프로세서(1302)는 주변 디바이스의 예로서 시스템 메모리(1308)의 메모리 컨트롤러(1312)에 버스 트랜잭션 요청을 전달할 수 있다. 도 13에 도시되지 않았지만, 다중 시스템 버스(1306)가 제공될 수 있으며, 여기서 각각의 시스템 버스는 상이한 패브릭을 구성한다. 이 예에서, 메모리 컨트롤러(1312)는 시스템 메모리(1308)의 메모리 어레이(1314)에 메모리 액세스 요청을 제공하도록 구성된다. 메모리 어레이(1314)는 데이터를 저장하기 위한 저장 비트 셀의 어레이로 구성된다. 시스템 메모리(1308)는 비제한적인 예로서, 판독 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 등과 같은 동적 랜덤 액세스 메모리(DRAM) 및 정적 메모리(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등)일 수 있다.
다른 디바이스가 시스템 버스(1306)에 연결될 수 있다. 도 13에 도시된 바와 같이, 이러한 디바이스는 예를 들어, 시스템 메모리(1308), 하나 이상의 입력 디바이스(1316), 하나 이상의 출력 디바이스(1318), 모뎀(1324) 및 하나 이상의 디스플레이 컨트롤러(1320)를 포함할 수 있다. 입력 디바이스(들)(1316)는 입력 키, 스위치, 음성 프로세서 등을 포함하지만 이에 한정되지 않는 임의의 유형의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(1318)는 오디오, 비디오, 다른 시각적 표시자 등을 포함하지만 이에 한정되지 않는 임의의 유형의 출력 디바이스를 포함할 수 있다. 모뎀(1324)은 네트워크(1326)로 그리고 네트워크(1326)로부터의 데이터 교환을 허용하도록 구성된 임의의 디바이스일 수 있다. 네트워크(1326)는 유선 또는 무선 네트워크, 사설 또는 공용 네트워크, 근거리 네트워크(LAN), 무선 근거리 네트워크(WLAN), 광역 네트워크(WAN), BLUETOOTH™ 네트워크 및 인터넷을 포함하지만 이에 한정되지 않는 임의의 유형의 네트워크일 수 있다. 모뎀(1324)은 원하는 임의의 유형의 통신 프로토콜을 지원하도록 구성될 수 있다. 프로세서(1302)는 또한 시스템 버스(1306)를 통해 디스플레이 컨트롤러(들)(1320)에 액세스하여 하나 이상의 디스플레이(1322)에 전송된 정보를 제어하도록 구성될 수 있다. 디스플레이(들)(1322)는 음극선관(CRT), 액정 디스플레이(LCD), 플라즈마 디스플레이 등을 포함하지만 이에 한정되지 않는 임의의 유형의 디스플레이를 포함할 수 있다.
도 13의 프로세서 기반 디바이스(1300)는 명령에 따라 원하는 임의의 어플리케이션에 대해 프로세서(1302)에 의해 실행될 도달 기반 명시적 소비자 명명 모델로 인코딩될 수 있는 명령 세트(1328)를 포함할 수 있다. 명령(1328)은 비일시적 컴퓨터 판독 가능 매체(1330)의 예로서 시스템 메모리(1308), 프로세서(1302) 및/또는 명령 캐시(1304)에 저장될 수 있다. 명령(1328)은 또한 실행 동안 시스템 메모리(1308) 내 및/또는 프로세서(1302) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 명령(1328)은 모뎀(1324)을 통해 네트워크(1326)를 통해 추가로 송신 또는 수신될 수 있어, 네트워크(1326)는 컴퓨터 판독 가능 매체(1330)를 포함한다.
컴퓨터 판독 가능 매체(1330)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "컴퓨터 판독 가능 매체"라는 용어는 명령(1328)의 하나 이상의 세트를 저장하는 단일 매체 또는 다중 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스, 및/또는 관련 캐시 및 서버)를 포함하는 것으로 이해되어야 한다. "컴퓨터 판독 가능 매체"라는 용어는 또한 프로세싱 디바이스에 의한 실행을 위해 명령의 세트를 저장, 인코딩 또는 전달할 수 있고, 프로세싱 디바이스로 하여금 본원에 개시된 실시예의 방법 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 이해된다. 따라서, "컴퓨터 판독 가능 매체"라는 용어는 솔리드-스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 한정되지 않는 것으로 이해될 것이다.
본원에 개시된 실시예는 다양한 단계를 포함한다. 본원에 개시된 실시예의 단계는 하드웨어 구성 요소에 의해 형성될 수 있거나 머신 실행 가능 명령으로 구현될 수 있으며, 이는 명령으로 프로그래밍된 범용 또는 특수 목적 프로세서로 하여금 단계를 수행하게 하는 데 사용될 수 있다. 대안적으로, 단계는 하드웨어와 소프트웨어의 조합에 의해 수행될 수 있다.
본원에 개시된 실시예는 본원에 개시된 실시예에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령이 저장된 머신 판독 가능 매체(또는 컴퓨터 판독 가능 매체)를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독 가능 매체는 머신 판독 가능 저장 매체(예를 들어, ROM, 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 등) 등을 포함한다.
달리 구체적으로 언급되지 않고 이전 논의로부터 명백한 바와 같이, 설명 전반에 걸쳐 "프로세싱", "컴퓨팅", "결정하는", "표시하는" 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템의 레지스터 내에서 물리적(전자적) 수량으로 표현된 데이터와 메모리를 컴퓨터 시스템 메모리 또는 레지스터 또는 이러한 다른 정보 저장, 전송 또는 디스플레이 디바이스 내의 물리적 수량으로 유사하게 표현된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스를 지칭한다는 것이 이해된다.
본원에 제시된 알고리즘 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련이 없다. 다양한 시스템이 본원의 교시에 따라 프로그램과 함께 사용될 수 있거나, 필요한 방법 단계를 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리한 것으로 밝혀질 수 있다. 이러한 다양한 시스템에 필요한 구조는 위의 설명에서 나타난다. 또한, 본원에 설명된 실시예는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본원에 설명된 실시예의 교시를 구현하는 데 사용될 수 있음을 이해할 것이다.
본 기술 분야의 통상의 기술자는 본원에 개시된 실시예와 관련하여 설명된 다양한 예시적인 로직 블록, 모듈, 회로 및 알고리즘이 전자 하드웨어, 메모리 또는 다른 컴퓨터 판독 가능 매체에 저장된 명령으로서 구현될 수 있고 프로세서 또는 다른 프로세싱 디바이스 또는 둘 모두의 조합에 의해 실행될 수 있음을 추가로 이해할 것이다. 본원에 설명된 분산 안테나 시스템의 구성 요소는 예를 들어, 임의의 회로, 하드웨어 구성 요소, 집적 회로(IC) 또는 IC 칩에 채용될 수 있다. 본원에 개시된 메모리는 임의의 유형 및 크기의 메모리일 수 있으며, 원하는 임의의 유형의 정보를 저장하도록 구성될 수 있다. 이러한 상호 교환성을 명확하게 설명하기 위해, 다양한 예시적인 구성 요소, 블록, 모듈, 회로 및 단계가 일반적으로 기능 면에서 위에서 설명되었다. 이러한 기능이 구현되는 방식은 전체 시스템에 부과된 특정 어플리케이션, 설계 선택 및/또는 설계 제약 조건에 따른다. 숙련된 기술자는 각각의 특정 어플리케이션에 대해 다양한 방식으로 설명된 기능을 구현할 수 있지만, 이러한 구현 결정이 본 실시예의 범위를 벗어나는 것으로 해석되어서는 안 된다.
본원에 개시된 실시예와 관련하여 설명된 다양한 예시적인 로직 블록, 모듈 및 회로는 프로세서, 디지털 신호 프로세서(DSP: Digital Signal Processor), 주문형 집적 회로(ASIC: Application Specific Integrated Circuit), 필드 프로그램 가능 게이트 어레이(FPGA: Field Programmable Gate Array) 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성 요소, 또는 본원에 설명된 기능을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 또한, 컨트롤러는 프로세서일 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안으로 프로세서는 임의의 통상의 프로세서, 컨트롤러, 마이크로컨트롤러 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스의 조합(예를 들어, DSP와 마이크로프로세서, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성의 조합)으로서 구현될 수 있다.
본원에 개시된 실시예는 하드웨어 및 하드웨어에 저장된 명령으로 구현될 수 있으며, 예를 들어, RAM, 플래시 메모리, ROM, 전기적으로 프로그램 가능 ROM(EPROM: Electrically Programmable ROM), 전기적으로 소거 가능 프로그램 가능 ROM(EEPROM: Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD-ROM, 또는 본 기술 분야에 알려진 임의의 다른 형태의 컴퓨터 판독 가능 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 이에 정보를 쓸 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC는 원격 스테이션에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격 스테이션, 기지국 또는 서버에서 이산 구성 요소로서 상주할 수 있다.
본원의 임의의 예시적인 실시예에서 설명된 동작 단계는 예 및 논의를 제공하기 위해 설명된다는 점에 또한 유의한다. 설명된 동작은 예시된 시퀀스와 다른 수많은 상이한 시퀀스로 수행될 수 있다. 또한, 단일 동작 단계에서 설명된 동작은 실제로 다수의 다른 단계에서 수행될 수 있다. 추가적으로, 예시적인 실시예에서 논의된 하나 이상의 동작 단계는 결합될 수 있다. 본 기술 분야의 통상의 기술자는 또한 정보 및 신호가 다양한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있음을 이해할 것이다. 예를 들어, 위의 설명 전반에서 참조될 수 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼 및 칩은 전압, 전류, 전자기파, 자기장 또는 입자, 광학 필드 또는 입자 또는 이들의 임의의 조합으로 표현될 수 있다.
달리 명시적으로 언급되지 않는 한, 본원에 제시된 임의의 방법은 그 단계가 특정 순서로 수행될 필요가 있는 것으로 해석되지 않는다. 따라서, 방법 청구항이 실제로 그 단계가 따라야 할 순서를 언급하지 않거나, 단계가 특정 순서로 제한되어야 한다고 청구항 또는 설명에서 달리 구체적으로 언급되지 않은 경우, 임의의 특정 순서가 추론되는 것으로 의도되지 않는다.
본 발명의 사상 또는 범위를 벗어나지 않고 다양한 수정 및 변형이 이루어질 수 있음은 본 기술 분야의 통상의 기술자에게 자명할 것이다. 본 발명의 사상 및 본질을 포함하는 개시된 실시예의 수정, 조합, 하위 조합 및 변형이 본 기술 분야의 통상의 기술자에게 생각될 수 있기 때문에, 본 발명은 첨부된 청구항 및 그 균등물의 범위 내의 모든 것을 포함하는 것으로 해석되어야 한다.

Claims (15)

  1. 인터커넥트 버스를 통해 서로 통신 가능하게 커플링된 복수의 프로세싱 요소(PE: processing element)를 포함하는 프로세서 기반 디바이스에 있어서, 각각의 PE는:
    디코드 스테이지 및 실행 스테이지를 포함하는 실행 파이프라인;
    페이지 테이블을 포함하는 시스템 메모리; 및
    로컬 캐시를 포함하고,
    상기 복수의 PE 중 제1 PE는:
    상기 실행 파이프라인의 상기 디코드 스테이지를 사용하여, 특수 페이지 테이블 엔트리(SP-PTE: special page table entry) 필드 저장 명령을 디코딩하고;
    상기 실행 파이프라인의 상기 실행 스테이지를 사용하여, 상기 제1 PE의 로컬 캐시에서의 PTE에 대응하는 코히어런스 그래뉼(coherence granule)에 캐싱된 상기 PTE의 SP-PTE 필드를 수정하기 위해 상기 SP-PTE 필드 저장 명령을 실행하도록 구성되고,
    상기 복수의 PE 중 제2 PE는:
    상기 인터커넥트 버스를 통해, 상기 코히어런스 그래뉼에 대해 상기 제1 PE로부터 버스 요청을 수신하고;
    상기 코히어런스 그래뉼의 사본이 상기 제2 PE의 하드웨어 테이블 워커(HTW: hardware table walker)에 의해서만 판독될 수 있음을 나타내기 위해 상기 제2 PE의 로컬 캐시에서의 상기 코히어런스 그래뉼의 사본의 코히어런스 상태를 워커 판독 가능(W: walker-readable)의 코히어런스 상태로 업데이트하도록 구성되는 것인, 프로세서 기반 디바이스.
  2. 제1항에 있어서,
    상기 복수의 PE 중 상기 제2 PE는 또한:
    상기 제2 PE의 로컬 캐시에 의해, 상기 제2 PE의 상기 HTW가 상기 코히어런스 그래뉼의 사본을 판독하려고 한다고 결정하고;
    상기 제2 PE의 로컬 캐시에 의해, 상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다고 결정하고;
    상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다는 결정에 응답하여, 상기 제2 PE의 로컬 캐시에 의해, 상기 HTW가 상기 코히어런스 그래뉼의 사본을 판독하게 허용하도록 구성되는 것인, 프로세서 기반 디바이스.
  3. 제1항에 있어서,
    상기 복수의 PE 중 상기 제2 PE는 또한:
    상기 제2 PE의 로컬 캐시에 의해, 상기 제2 PE의 논(non)-HTW 에이전트가 상기 코히어런스 그래뉼의 사본을 판독하려고 한다고 결정하고;
    상기 제2 PE의 로컬 캐시에 의해, 상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다고 결정하고;
    상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다는 결정에 응답하여:
    상기 제2 PE의 로컬 캐시에 의해, 상기 코히어런스 그래뉼의 사본을 무효화하고(invalidate);
    상기 코히어런스 그래뉼의 사본을 캐시 미스(cache miss)로서 판독하게끔 상기 요청을 프로세싱하도록 구성되는 것인, 프로세서 기반 디바이스.
  4. 제1항에 있어서,
    상기 제1 PE는 또한, 상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼의 코히어런스 상태를 수정된 워커 액세스 가능(Mw)의 코히어런스 상태로 업데이트하도록 구성되고, Mw의 상기 코히어런스 상태는 HTW에만 보이는 상기 코히어런스 그래뉼의 캐싱된 사본이 상기 복수의 PE 중 대응하는 하나 이상의 다른 PE의 하나 이상의 로컬 캐시에 존재할 수 있음을 나타내는 것인, 프로세서 기반 디바이스.
  5. 제1항에 있어서,
    상기 제1 PE는 또한:
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 공유 수정(shared modified)(O), 최근 공유(recent shared)(R) 또는 공유 클린(shared clean)(S)의 코히어런스 상태에 있다고 결정하고;
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 O, R 또는 S의 코히어런스 상태에 있다는 결정에 응답하여, 상기 인터커넥트 버스를 통해, 상기 제1 PE가 상기 코히어런스 그래뉼의 공유된 사본을 가지며 상기 PTE의 상기 SP-PTE 필드를 관리하려고 한다는 것을 나타내는 prex_w 버스 요청을 송신하도록 구성되고,
    상기 버스 요청은 상기 prex_w 버스 요청을 포함하는 것인, 프로세서 기반 디바이스.
  6. 제1항에 있어서,
    상기 제1 PE는 또한:
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 워커-판독 가능(W) 또는 무효(I)의 코히어런스 상태에 있다고 결정하고;
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 W 또는 I의 코히어런스 상태에 있다는 결정에 응답하여, 상기 제1 PE가 상기 PTE의 상기 SP-PTE 필드를 업데이트하고 있으며 상기 코히어런스 그래뉼의 코히어런트 사본을 보유하지 않는다는 것을 나타내는 rd_e_w 버스 요청을 송신하도록 구성되고,
    상기 버스 요청은 상기 rd_e_w 버스 요청을 포함하는 것인, 프로세서 기반 디바이스.
  7. 제4항에 있어서,
    상기 제1 PE는 또한:
    상기 PTE에 대응하는 상기 코히어런스 그래뉼을 상기 제1 PE의 로컬 캐시에 설치하고;
    상기 코히어런스 그래뉼이 HTW 요청의 결과로서 설치되었는지 여부를 나타내기 위해 상기 코히어런스 그래뉼에 대한 HTW 설치 표시자를 설정하도록 구성되고,
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼의 코히어런스 상태를 Mw의 코히어런스 상태로 업데이트하는 것은, 상기 코히어런스 그래뉼에 대한 상기 HTW 설치 표시자가 설정되고 상기 SP-PTE 필드 저장 명령이 상기 PTE의 상기 SP-PTE 필드만을 수정하는 통상의 메모리 저장 명령이라는 결정에 응답하는 것인, 프로세서 기반 디바이스.
  8. 제1항에 있어서,
    상기 SP-PTE 필드 저장 명령은 커스텀(custom) 저장 명령, 커스텀 비교/실행 명령, 및 상기 페이지 테이블과 연관된 어드레스 범위에 대한 것이며 PTE의 SP-PTE 필드만을 수정하는 통상의 메모리 저장 명령 중 하나인 것인, 프로세서 기반 디바이스.
  9. 페이지 테이블 엔트리(PTE) 유지 보수를 용이하게 하기 위한 방법에 있어서,
    프로세서 기반 디바이스의 복수의 프로세싱 요소(PE) 중 제1 PE의 실행 파이프라인의 디코드 스테이지를 사용하여, 특수 페이지 테이블 엔트리(SP-PTE) 필드 저장 명령을 디코딩하는 단계;
    상기 프로세서 기반 디바이스의 시스템 메모리에서의 페이지 테이블의 PTE의 SP-PTE 필드를 수정하기 위해 상기 SP-PTE 필드 저장 명령을 실행하는 단계로서, 상기 PTE는 상기 복수의 PE 중 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 코히어런스 그래뉼에 캐싱되는 것인, 상기 실행하는 단계;
    상기 복수의 PE 중 제2 PE에 의해 인터커넥트 버스를 통해, 상기 코히어런스 그래뉼에 대해 상기 제1 PE로부터 버스 요청을 수신하는 단계; 및
    상기 제2 PE에 의해, 상기 코히어런스 그래뉼의 사본이 상기 제2 PE의 하드웨어 테이블 워커(HTW)에 의해서만 판독될 수 있음을 나타내기 위해 상기 제2 PE의 로컬 캐시에서의 상기 코히어런스 그래뉼의 사본의 코히어런스 상태를 워커 판독 가능(W)의 코히어런스 상태로 업데이트하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 제2 PE의 로컬 캐시에 의해, 상기 제2 PE의 상기 HTW가 상기 코히어런스 그래뉼의 사본을 판독하려고 한다고 결정하는 단계;
    상기 제2 PE의 로컬 캐시에 의해, 상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다고 결정하는 단계; 및
    상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다는 결정에 응답하여, 상기 제2 PE의 로컬 캐시에 의해, 상기 HTW가 상기 코히어런스 그래뉼의 사본을 판독하게 허용하는 단계
    를 더 포함하는, 방법.
  11. 제9항에 있어서,
    상기 제2 PE의 로컬 캐시에 의해, 상기 제2 PE의 논-HTW 에이전트가 상기 코히어런스 그래뉼의 사본을 판독하려 한다고 결정하는 단계;
    상기 제2 PE의 로컬 캐시에 의해, 상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다고 결정하는 단계; 및
    상기 코히어런스 그래뉼의 사본이 W의 코히어런스 상태를 갖는다는 결정에 응답하여:
    상기 제2 PE의 로컬 캐시에 의해, 상기 코히어런스 그래뉼의 사본을 무효화하는 단계; 및
    상기 코히어런스 그래뉼의 사본을 캐시 미스로서 판독하게끔 상기 요청을 프로세싱하는 단계
    를 더 포함하는, 방법.
  12. 제9항에 있어서,
    상기 복수의 PE 중 상기 제1 PE에 의해, 하드웨어 테이블 워커(HTW)에만 보이는 상기 코히어런스 그래뉼의 캐싱된 사본이 상기 복수의 PE 중 대응하는 하나 이상의 다른 PE의 하나 이상의 로컬 캐시에 존재할 수 있음을 나타내기 위해 상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼의 코히어런스 상태를 수정된 워커 액세스 가능(Mw)의 코히어런스 상태로 업데이트하는 단계를 더 포함하는, 방법.
  13. 제9항에 있어서,
    상기 제1 PE에 의해, 상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 공유 수정(O), 최근 공유(R) 또는 공유 클린(S)의 코히어런스 상태에 있다고 결정하는 단계; 및
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 O, R 또는 S의 코히어런스 상태에 있다는 결정에 응답하여, 상기 인터커넥트 버스를 통해, 상기 제1 PE가 상기 코히어런스 그래뉼의 공유된 사본을 가지며 상기 PTE의 상기 SP-PTE 필드를 관리하려고 한다는 것을 나타내는 prex_w 버스 요청을 송신하는 단계
    를 더 포함하고,
    상기 버스 요청은 상기 prex_w 버스 요청을 포함하는 것인, 방법.
  14. 제9항에 있어서,
    상기 제1 PE에 의해, 상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 워커-판독 가능(W) 또는 무효(I)의 코히어런스 상태에 있다고 결정하는 단계; 및
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼이 W 또는 I의 코히어런스 상태에 있다는 결정에 응답하여, 상기 제1 PE가 상기 PTE의 상기 SP-PTE 필드를 업데이트하고 있으며 상기 코히어런스 그래뉼의 코히어런트 사본을 보유하지 않는다는 것을 나타내는 rd_e_w 버스 요청을 송신하는 단계
    를 더 포함하고,
    상기 버스 요청은 상기 rd_e_w 버스 요청을 포함하는 것인, 방법.
  15. 제12항에 있어서,
    상기 복수의 PE 중 상기 제1 PE에 의해, 상기 PTE에 대응하는 상기 코히어런스 그래뉼을 상기 제1 PE의 로컬 캐시에 설치하는 단계; 및
    상기 코히어런스 그래뉼이 HTW 요청의 결과로서 설치되었는지 여부를 나타내기 위해 상기 코히어런스 그래뉼에 대한 HTW 설치 표시자를 설정하는 단계
    를 더 포함하고,
    상기 제1 PE의 로컬 캐시에서의 상기 PTE에 대응하는 상기 코히어런스 그래뉼의 코히어런스 상태를 Mw의 코히어런스 상태로 업데이트하는 것은, 상기 코히어런스 그래뉼에 대한 상기 HTW 설치 표시자가 설정되고 상기 SP-PTE 필드 저장 명령이 상기 PTE의 상기 SP-PTE 필드만을 수정하는 통상의 메모리 저장 명령이라는 결정에 응답하는 것인, 방법.
KR1020227006719A 2019-09-03 2020-06-17 프로세서 기반 디바이스의 페이지 테이블 엔트리(pte) 유지 보수 용이화 KR20220058542A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/558,789 2019-09-03
US16/558,789 US10896135B1 (en) 2019-09-03 2019-09-03 Facilitating page table entry (PTE) maintenance in processor-based devices
PCT/US2020/037997 WO2021045817A1 (en) 2019-09-03 2020-06-17 Facilitating page table entry (pte) maintenance in processor-based devices

Publications (1)

Publication Number Publication Date
KR20220058542A true KR20220058542A (ko) 2022-05-09

Family

ID=71950825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227006719A KR20220058542A (ko) 2019-09-03 2020-06-17 프로세서 기반 디바이스의 페이지 테이블 엔트리(pte) 유지 보수 용이화

Country Status (5)

Country Link
US (1) US10896135B1 (ko)
EP (1) EP4026007A1 (ko)
KR (1) KR20220058542A (ko)
CN (1) CN114303135A (ko)
WO (1) WO2021045817A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11677754B2 (en) * 2019-12-09 2023-06-13 Daniel Chien Access control systems and methods

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553460B1 (en) 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6658539B2 (en) * 2001-10-16 2003-12-02 International Business Machines Corporation Super-coherent data mechanisms for shared caches in a multiprocessing system
US7802058B1 (en) * 2003-04-30 2010-09-21 Silicon Graphics International Method for performing cache coherency in a computer system
US9213651B2 (en) * 2009-06-16 2015-12-15 Vmware, Inc. Synchronizing a translation lookaside buffer with page tables
US8996812B2 (en) 2009-06-19 2015-03-31 International Business Machines Corporation Write-back coherency data cache for resolving read/write conflicts
US10120802B2 (en) * 2015-09-23 2018-11-06 International Business Machines Corporation Transactional memory coherence control
US10019377B2 (en) * 2016-05-23 2018-07-10 Advanced Micro Devices, Inc. Managing cache coherence using information in a page table
US11016893B2 (en) * 2016-09-30 2021-05-25 Intel Corporation Method and apparatus for smart store operations with conditional ownership requests
US10684957B2 (en) * 2018-08-23 2020-06-16 Advanced Micro Devices, Inc. Apparatus and method for neighborhood-aware virtual to physical address translations

Also Published As

Publication number Publication date
CN114303135A (zh) 2022-04-08
WO2021045817A1 (en) 2021-03-11
US10896135B1 (en) 2021-01-19
EP4026007A1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
US7680987B1 (en) Sub-page-granular cache coherency using shared virtual memory mechanism
US10592424B2 (en) Range-based memory system
US10019377B2 (en) Managing cache coherence using information in a page table
US9043554B2 (en) Cache policies for uncacheable memory requests
US20090006668A1 (en) Performing direct data transactions with a cache memory
US9229866B2 (en) Delaying cache data array updates
US11372757B2 (en) Tracking repeated reads to guide dynamic selection of cache coherence protocols in processor-based devices
KR20220058542A (ko) 프로세서 기반 디바이스의 페이지 테이블 엔트리(pte) 유지 보수 용이화
US11138114B2 (en) Providing dynamic selection of cache coherence protocols in processor-based devices
CN117940909A (zh) 基于处理器的设备中的追踪存储器块存取频率
US11061820B2 (en) Optimizing access to page table entries in processor-based devices
US10949346B2 (en) Data flush of a persistent memory cache or buffer
EP3991049B1 (en) Performing atomic store-and-invalidate operations in processor-based devices
US10216640B2 (en) Opportunistic cache injection of data into lower latency levels of the cache hierarchy
US11126437B2 (en) Load instruction with final read indicator field to invalidate a buffer or cache entry storing the memory address holding load data
US20190258574A1 (en) Apparatus and method for providing an atomic set of data accesses
JP2001273192A (ja) マイクロプロセッサを有するディジタル・システム及びそのディジタル・システムを動作させる方法