KR101072174B1 - 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법 - Google Patents

능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법 Download PDF

Info

Publication number
KR101072174B1
KR101072174B1 KR1020097010996A KR20097010996A KR101072174B1 KR 101072174 B1 KR101072174 B1 KR 101072174B1 KR 1020097010996 A KR1020097010996 A KR 1020097010996A KR 20097010996 A KR20097010996 A KR 20097010996A KR 101072174 B1 KR101072174 B1 KR 101072174B1
Authority
KR
South Korea
Prior art keywords
cache
cache line
memory
line
local
Prior art date
Application number
KR1020097010996A
Other languages
English (en)
Other versions
KR20090079964A (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 KR20090079964A publication Critical patent/KR20090079964A/ko
Application granted granted Critical
Publication of KR101072174B1 publication Critical patent/KR101072174B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Amplifiers (AREA)

Abstract

본 발명은 능동적인 프리페치로 향상된 호버 상태를 실시하는 시스템 및 방법에 관한 것이다. 본 발명의 바람직한 실시 예에 따르면, 프로세싱 유닛의 스누퍼는 특정 주소를 타켓으로 하는 저장-수정 동작의 완료를 나타내는 시스템-전체 업데이트 완료 동작을 수신한다. 여기서 상기 저장-수정 동작은 제1 캐시 메모리에 있는 제1 캐시 라인의 수정을 초래한다. 상기 스누퍼는 상기 시스템-전체 업데이트 완료 동작을 수신하기 전에 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 결정한다. 만약 보유했다면, 상기 스누퍼는 상기 제2 캐시 메모리의 제2 캐시 라인을 교체하기 위하여 상기 수정된 제1 캐시 라인의 카피에 대한 프리페치 요청을 시작한다. 상기 스누퍼는 상기 수정된 제1 캐시 라인의 카피로 상기 제2 캐시 메모리를 업데이트 한다.
Figure R1020097010996
캐시 일관성 프로토콜, 캐시 라인, 호버 상태, 프리페치, 스누퍼

Description

능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법{SYSTEM AND METHOD FOR IMPLEMENTING AN ENHANCED HOVER STATE WITH ACTIVE PREFETCHES}
본 발명은 일반적으로 데이터 처리 시스템들의 분야에 관한 것이며, 더욱 구체적으로는 데이터 처리 시스템을 위한 캐시 일관성 프로토콜(cache coherency protocol)에 관한 것이다.
서버 컴퓨터 시스템과 같은 종래의 대칭형 멀티프로세서(Symmetric Multiprocessor: SMP) 컴퓨터 시스템은 시스템 인터커넥트(system interconnect)에 모두 연결되어 있는 다수의 프로세싱 유닛들을 포함하며, 이 시스템 인터커넥트는 통상적으로 하나 또는 그 이상의 주소, 데이터, 및 제어 버스들을 포함한다. 시스템 메모리는 상기 시스템 인터커넥트에 연결되어 있으며, 이 시스템 메모리는 상기 멀티프로세서 컴퓨터 시스템의 휘발성 메모리의 최하위 레벨을 나타내며 일반적으로 모든 프로세싱 유닛들이 판독과 기록을 위해 액세스할 수 있다. 상기 시스템 메모리에 상주하는 명령들 및 데이터에 대한 액세스 지연(access latency)을 줄이기 위해, 각각의 프로세싱 유닛은 통상적으로 각각의 멀티-레벨 캐시 계층구조(multi-level cache hierarchy)에 의해 더 지원되며, 이들 중 더 하위 레벨(the lower level)은 하나 또는 그 이상의 프로세서 코어들(processor cores)에 의해 공유되기 도 한다.
다수의 프로세서 코어들은 데이터의 동일 캐시 라인(a same cache line)에 기록 액세스(write access)를 요청할 수 있기 때문에 그리고 수정된 캐시 라인들(modified cache lines)은 즉각적으로 시스템 메모리와 동기화되지 않기 때문에, 상기 멀티프로세서 컴퓨터 시스템들의 캐시 계층구조들은 통상적으로 캐시 일관성 프로토콜을 실시하여(implement) 시스템 메모리의 내용들에 대한 상기 다양한 프로세서 코어들의 관점들(processor's views) 중 적어도 최소 레벨의 일관성을 보장한다. 특히, 캐시 일관성은 어느 프로세싱 유닛이 어느 메모리 블럭의 카피( a copy)에 액세스하고 이어서(subsequently) 상기 메모리 블럭의 업데이트된(updated) 카피에 액세스한 후에는 상기 프로세싱 유닛이 상기 메모리 블럭의 구 카피(the old copy)를 다시 액세스할 수 없도록 하는 것을 최소한 요구한다.
캐시 일관성 프로토콜은 캐시 계층구조들 사이에 캐시 상태 정보들과 통신하기 위해 사용되는 한 세트의 일관성 메시지들( a set of coherency messages)뿐만 아니라 각 캐시 계층구조의 캐시 라인들과 연관되어 저장된 한 세트의 캐시 상태들(a set of cache states)을 통상적으로 정의한다(define). 한 통상적 실시 예에서, 캐시 상태 정보는 공지의 MESI(Modified, Exclusive, Shared, Invalid) 프로토콜 또는 이것의 변형된 형태를 취하며, 일관성 메시지들은 메모리 액세스 요구의 요구자 및/또는 수신자들의 캐시 계층구조에서 프로토콜에 의해 정의된 일관성 상태의 변화(a protocol-defined coherency state transition)를 표시한다.
멀티프로세서 컴퓨터 시스템에서, 프로세싱 유닛들은 종종 그들의 로컬 캐시 들(local caches)에 저장된 캐시 라인들을 업데이트 한다. 현재, 일단 제1 프로세싱 유닛이 상기 로컬 캐시의 캐시 라인을 업데이트 하면, 상기 캐시 라인의 카피를 가진 다른 프로세싱 유닛들은 상기 캐시 라인의 카피를 업데이트가 필요한 캐시 라인으로 표시(mark)할 것이다. 몇몇의 프로토콜들이 제안되고 실시되었는데, 이 프로토콜들에서는 캐시 제어기가 시스템 데이터 트랜잭션들(transactions)을 감시하고 캐시 라인이 인터커넥트상의 상기 캐시 제어기를 통과하는 일이 일어날 경우 상기 캐시 라인의 업데이트된 카피를 잡아내도록 되어 있다.
오늘날의 계층적 시스템 구조들(today's hierarchical system structures)에서는, 캐시 라인이 지연 페널티(latency penalties)를 피할 수 있도록 제시간에(in time) 모든 관련 캐시들(all interested caches)대하여 보여질(visible) 것이라는 보장은 없다. 캐시 라인의 새로운 카피를 요청하는 모든 캐시들이 그 업데이트된 캐시 라인을 보는 것을 보장하기 위해서 다른 프로토콜들은 업데이트 후에 그 캐시 라인을 시스템 전체에 대하여 방송(system-wide broadcast)한다. 그러나, 이러한 프로토콜들은 업데이트된 캐시 라인의 시스템-전체에 대한 방송이 인터커넥트에서 불필요한 대역폭(bandwidth)을 소비하기 때문에 효율적이지 못하다.
따라서, 상기 언급한 종래기술의 한계점들 때문에, 데이터 처리 시스템 내에서 불필요한 대역폭의 소비 없이, 업데이트된 캐시 라인들을 캐시 라인의 업데이트를 필요로 하는 캐시들에 효율적으로 제공하는 시스템 및 방법이 요구되고 있다.
본 발명의 한 실시 예는, 주소 및 데이터 인터커넥트를 통해 통신하는 다수의 프로세싱 유닛들을 포함하는 데이터 처리 시스템을 위해서, 캐시 일관성 프로토콜을 실시하는 방법을 제공하는 것이다. 상기 방법은, 시스템-전체 업데이트 완료 신호를 수신하기 전에 다수의 프로세싱 유닛들 중 제2 프로세싱 유닛의 제2 캐시 메모리가 특정 주소와 연관된 제2 캐시 라인을 보유했는 지에 대하여 결정하는 단계, 상기 시스템-전체 업데이트 완료 신호를 수신하기 전에 상기 특정 주소와 연관된 제2 캐시 라인을 보유했다는 결정에 응답하여 상기 제2 캐시 메모리의 상기 제2 캐시 라인을 교체하기 위해 상기 수정된 제1 캐시 라인의 카피에 대한 프리페치 요청을 시작하는 단계, 및 상기 제2 캐시 메모리를 상기 수정된 제1 캐시 라인의 상기 카피로 업데이트 하는 단계를 포함한다.
바람직하게는, 상기 결정 단계는 상기 제2 캐시 라인이 호버(hover) 일관성 상태에 있는지를 결정하기 위해 상기 제2 캐시 메모리와 연관된 캐시 디렉토리에 액세스하는 단계를 더 포함한다.
바람직하게는, 상기 방법은 상기 제2 캐시 라인의 로컬 일관성 상태를 결정하는 단계; 상기 제2 캐시 라인의 로컬 일관성 상태가 공유(shared)라는 결정에 응답하여, 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 무효(invalid)로 업데이트하는 단계를 더 포함한다.
바람직하게는, 상기 방법은 상기 제2 캐시 라인의 로컬 일관성 상태를 결정하는 단계; 상기 제2 캐시 라인의 상기 로컬 일관성 상태가 수정(modified)이라는 결정에 응답하여, 상기 제2 캐시 라인이 제공되는 것이 요구되는 지를 결정하는 단계; 상기 제2 캐시 라인이 제공되는 것이 요구된다는 결정에 응답하여, 상기 제2 캐시 라인을 요청 프로세싱 유닛에 전송하고 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 호버로 업데이트하는 단계; 및 상기 제2 캐시 라인이 제공되는 것이 요구되지 않는다는 결정에 응답하여, 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 호버로 업데이트하는 단계를 더 포함한다.
바람직하게는, 상기 방법은 상기 수정된 제1 캐시 라인의 수정된 상기 카피가 수신되지 않았다는 결정에 응답하여, 상기 프리페치 요구를 재전송하는 단계를 더 포함한다.
바람직하게는, 상기 방법은 프리페치 요청 재시도 수와 미리 결정된 수의 비교에 응답하여, 프리패치 요청들의 시작을 중지하는 단계를 더 포함한다.
본 발명의 제2 실시 예는 주소 및 데이터 인터커넥트을 통해 통신하는 다수의 프로세싱 유닛들을 포함하는 데이터 처리 시스템에서 캐시 일관성 프로토콜을 실시하는 프로세싱 유닛을 제공하는 것이다. 상기 프로세싱 유닛은 적어도 하나의 프로세서 코어; 상기 적어도 하나의 프로세서 코어에 결합되어 상기 적어도 하나의 프로세서 코어에 의한 엑세스를 위한 데이터를 캐싱(caching)하는 로컬 캐시 어레이(local cache array); 및 적어도 하나의 스누퍼(snooper)를 포함하며 : 상기 스누퍼는 특정 주소를 타켓으로 하는 저장-수정 동작의 완료를 나타내는 시스템-전체 업데이트 완료 신호(system-wide update completion signal)를 상기 인터커넥트를 통해 수신하고(여기서, 상기 저장-수정 동작은 상기 다수의 프로세싱 유닛들 중 제1 프로세싱 유닛과 연관된 제1 캐시 메모리 어레이에서 제1 캐시 라인의 수정을 초래한다); 상기 시스템-전체 업데이트 완료 신호를 수신하기 전에 상기 로컬 캐시 어레이가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는 지를 결정하고; 상기 시스템-전체 업데이트 완료 신호를 수신하기 전에 상기 로컬 캐시 어레이가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했다는 결정에 응답하여, 상기 로컬 캐시 어레이의 상기 제2 캐시 라인을 교체하기 위해 상기 수정된 제1 캐시 라인의 카피에 대한 프리페치 요청을 시작하고; 상기 로컬 캐시 어레이를 상기 수정된 제1 캐시 라인의 상기 카피로 업데이트한다.
또한, 시스템 인터커넥트, 상기 시스템 인터커넥트에 연결된 시스템 메모리, 및 상기 시스템 인터커넥트에 연결되어 있는 제2 실시 예에 따른 적어도 하나의 프로세싱 유닛을 포함하는 데이터 처리 시스템이 더 제공될 수 있다.
바람직하게는, 상기 프로세싱 유닛은 일관성 상태를 상기 로컬 캐시 어레이에 저장된 캐시 라인들과 연관시키기 위해 상기 로컬 캐시 어레이와 연관된 캐시 디렉토리를 더 포함한다.
바람직하게는, 상기 스누퍼는 상기 제2 캐시 라인이 호버 일관성 상태에 있는지를 결정하기 위해 상기 캐시 디렉토리에 액세스한다.
바람직하게는, 상기 스누퍼는 상기 제2 캐시 라인의 로컬 일관성 상태가 공유라는 결정에 응답하여 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 무효로 업데이트한다.
바람직하게는, 상기 스누퍼는 상기 제2 캐시 라인의 로컬 일관성 상태가 수정이라는 결정에 응답하여 상기 제2 캐시 라인이 제공되는 것이 요구되는 지를 결정한다.
바람직하게는, 상기 스누퍼는 상기 제2 캐시 라인이 제공되는 것이 요구된다는 결정에 응답하여, 요구 프로세싱 유닛에 상기 제2 캐시 라인을 전송하고 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 호버로 업데이트한다.
바람직하게는, 상기 스누퍼는 상기 제2 캐시 라인이 제공되는 것이 요구되지 않는다는 결정에 응답하여, 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 호버로 업데이트한다.
바람직하게는, 상기 스누퍼는 상기 수정된 제1 캐시 라인의 상기 수정된 카피가 수신되지 않았다는 결정에 응답하여 상기 프리페치 요청을 재전송한다.
바람직하게는, 상기 스누퍼는 프리페치 요청의 재시도 수와 미리 설정된 수와의 비교에 응답하여 프리페치 요청들의 시작을 중단한다.
따라서, 본 발명의 실시 예는 능동적인 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법을 포함한다. 본 발명의 바람직한 실시 예에 따르면, 프로세싱 유닛의 스누퍼는 특정 주소를 타켓으로 하는 저장-수정 동작의 완료를 나타내는 시스템-전체 업데이트 완료 신호(system-wide update completion signal)를 수신한다(여기서, 상기 저장-수정 동작은 제1 캐시 메모리에서 제1 캐시 라인의 수정을 초래한다). 상기 스누퍼는 상기 시스템-전체 업데이트 완료 동작을 수신하기 전에 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 결정한다. 만약 보유했다면, 상기 스누퍼는 상기 제2 캐시 메모리의 제2 캐시 라인을 교체하기 위하여 상기 수정된 제1 캐시 라인의 카피에 대한 프리페치 요청을 시작한다. 상기 스누퍼는 상기 수정된 제1 캐시 라인의 카피로 상기 제2 캐시 메모리를 업데이트 한다.
상기 스누퍼는 상기 제2 캐시 라인이 호버 일관성 상태에 있는지를 결정하기 위해 제2 캐시 메모리와 연관된 캐시 디렉토리에 엑세스하여 상기 시스템-전체 업데이트 완료 동작을 수신하기 전에 상기 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 결정한다.
상기 스누퍼가 상기 수정된 제1 캐시 라인의 상기 카피가 수신되지 않았다고 결정한 경우, 상기 스누퍼는 상기 프리페치 요청을 재전송하고 전송한 프리페치 요청 시도들의 수를 결정하기 위해 카운터(counter)를 증가한다.
첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 예를 들어 설명할 것이다.
도 1은 본 발명의 바람직한 실시 예에 따른 데이터 처리 시스템을 나타내는 고수준의 블록도이다.
도 2는 본 발명의 실시 예에 따른 프로세싱 유닛을 나타내는 보다 상세한 블럭도이다.
도 3은 도 2에 도시된 L2 캐시 어레이 및 디렉토리를 나타내는 보다 상세한 블럭도이다.
도 4는 본 발명의 실시 예에 따른 캐시 메모리가 연관된 프로세서 코어로부터 수신된 요청을 서비스하는 방법을 도시하는 고수준 논리적 흐름도이다.
도 5A는 본 발명의 실시 예에 따른 캐시 메모리가 시스템 인터커넥트에서 감 시된(snooped) 저장-수정 동작을 처리하는 방법을 도시하는 고수준 논리적 흐름도이다.
도 5B는 본 발명의 실시 예에 따른 캐시 메모리가 시스템 인터커넥트에서 감시된 "업데이트 완료" 동작을 처리하는 방법을 도시하는 고수준 논리적 흐름도이다.
상기 도면, 구체적으로 도 1을 참조하면, 본 발명의 바람직한 실시 예에 따른 캐시 일관성 대칭형 멀티프로세서(a cache coherent Symmetric Multiprocessor: SMP) 데이터 처리 시스템의 고수준 블록도가 도시되어 있다. 도시된 바와 같이, 데이터 처리 시스템(100)은 데이터 및 명령들을 처리하기 위한 다수의 프로세싱 노드들(102a, 102b)을 포함한다. 상기 프로세싱 노드들(102a, 102b)은 주소, 데이터, 및 제어 정보를 전달하기 위한 시스템 인터커넥트(110)과 연결되어 있다. 예를 들면, 상기 시스템 인터커넥트(110)은 버스형 인터커넥트, 스위칭형 인터커넥트, 또는 하이브리드형 인터커넥트로 실시될 수 있다.
도시된 실시 예에 있어서, 각 프로세싱 노드(102)는 4개의 프로세싱 유닛들(104a 내지 104d)을 포함하는 하나의 멀티 칩 모듈(Multi-Chip Module: MCM)로 실시되며, 각 프로세싱 유닛은 개별 집적회로로 실시되는 것이 바람직하다. 각 프로세싱 노드(102) 내의 상기 프로세싱 유닛들(104a 내지 104d)는 통신을 위해 로컬 인터커넥트(114)에 의해 연결되어 있으며, 로컬 인터커넥트(114)는 시스템 인터커넥트(110)과 마찬가지로, 하나 또는 그 이상의 버스들 및/또는 스위치들로 실시될 수 있다.
각 로컬 인터커넥트(114)에 연결된 상기 장치들에는 프로세싱 유닛들(104) 뿐만 아니라 하나 또는 그 이상의 시스템 메모리들(108a 내지 108d)도 포함된다. 상기 시스템 메모리들(108) 내에 존재하는 데이터 및 명령들은 데이터 처리 시스템(100)의 모든 프로세싱 노드(102)에서 모든 프로세싱 유닛(104)의 프로세서 코어에 의해 일반적으로 액세스 되고 수정될 수 있다. 본 발명의 다른 실시 예에 따르면, 하나 또는 그 이상의 시스템 메모리들(108)은 로컬 인터커넥트(114)보다는 시스템 인터커넥트(110)에 연결될 수 있다.
당해 기술분야에 통상의 지식을 가진자는 SMP 데이터 처리 시스템(100)이 인터커넥트 브릿지들, 비휘발성 저장 장치, 네트워크들 또는 부속 장치들에 대한 연결을 위한 포트들 등과 같은 도시되지 않은 많은 부가적인 구성요소들을 포함할 수 있음을 이해할 수 있을 것이다. 이러한 부가적인 구성요소들은 본 발명을 이해를 위해 반드시 필요한 것이 아니기 때문에 도 1에 도시되지 않거나 본 명세서에서 추가적으로 논의되지 않는다. 그러나, 본 발명에 의해 제공된 개선되는 특징들(enhancements)은 다양한 아키텍쳐들의 캐시 일관성 데이터 처리 시스템들에 적용가능하고 도 1에 도시된 일반화된 데이터 처리 시스템 아키텍쳐에 한정되지 않음을 이해하여야 한다.
도 2를 참조하면, 본 발명에 따른 프로세싱 유닛(104)의 보다 상세한 블럭도가 도시되어 있다. 도시된 실시 예에 있어서, 각 프로세싱 유닛(104)은 명령들과 데이터를 독립적으로 처리하기 위한 두 개의 프로세서 코어들(200a, 200b)을 포함 한다. 각 프로세서 코어(200)는 실행 명령들을 패치하고(fetching) 정렬하기(ordering) 위한 적어도 하나의 명령 순차화 유닛(Instruction Sequencing Unit: ISU)(208) 및 명령 실행을 위한 하나 또는 그 이상의 실행 유닛들(224)을 포함한다. 상기 실행 유닛들(224)에 의해 실행되는 명령들에는 메모리 블럭으로의 액세스를 요청하거나 메모리 블럭으로의 액세스 요청을 시작하는 명령들이 포함된다.
각 프로세서 코어(200)의 동작은 최하위 레벨에서의 공유 시스템 메모리들(108a 내지 108d) 및 그보다 상위 레벨에서의 하나 또는 그 이상의 레벨들의 캐시 메모리를 가지는 하나의 멀티-레벨 휘발성 메모리 계층 구조(a multi-level volatile memory hierarchy)에 의해 지원된다. 도시된 실시 예에서, 각 프로세싱 유닛(104)은 집적 메모리 제어기(Integrated Memory Controller: IMC)(206)를 포함한다. 이 제어기는 프로세서 코어들(200a, 200b)로부터 수신된 요청들 및 상기 로컬 인터커넥트(114)에서 스누퍼(Snooper: S)(236)에 의해 감시된(snooped) 동작들에 응답하여 프로세싱 노드(102) 내의 상기 시스템 메모리들(108a 내지 108d) 각각에 대한 판독 및 기록 액세스를 컨트롤한다.
상기 도시된 실시 예에서, 상기 프로세싱 유닛(104)의 상기 캐시 메모리 계층구조는 각 프로세서 코어(200) 내의 스토어스루(store-through) 레벨 1(L1) 캐시(226)와 상기 프로세싱 유닛(104)의 모든 프로세서 코어들(200a, 200b)에 의해 공유되는 레벨 2(L2) 캐시(230)를 포함한다. 상기 L2 캐시(230)는 L2 어레이 및 디렉토리(234), 마스터(232), 및 스누퍼(236)을 포함한다. 상기 마스터(232)는 로컬 인터커넥트(114) 및 시스템 인터커넥트(110)상에서의 트랜잭션들(transactions)을 시작하며(initiate), 상기 연관된 프로세서 코어들(200a, 200b)로부터 수신된 메모리 액세스 (및 다른) 요구들에 응답하여 L2 어레이 및 디렉토리(234)에 액세스한다. 상기 스누퍼(236)는 로컬 인터커넥트(114)상에서 동작들을 감시하여, 적절한 응답을 제공하며, 상기 동작들에 의해 요구되는 L2 어레이 및 디렉토리(234)에 대한 모든 액세스를 수행한다.
비록 도시된 캐시 계층구조는 오직 2 레벨( two levels)의 캐시를 포함하지만, 당해 기술분야에 통상의 지식을 가진자는 다른 실시 예가 가능하다는 것을 이해할 수 있을 것이다. 이러한 다른 실시예는 추가의 레벨들(L3, L4, 등)로서 온칩(on-chip) 또는 오프칩(off-chip) 인라인(in-line), 또는 룩어사이드(lookaside) 캐시를 포함할 수 있으며, 이들은 상위 레벨들의 캐시의 컨텐츠들을 완전히, 부분적으로 포함하거나 혹은 전혀 포함하지 않을 수 있다.
각 프로세싱 유닛(104)은 또한 하나의 응답 논리부(response logic)(210)를 포함하며, 이는 데이터 처리 시스템(100) 내의 캐시 일관성을 유지하는 분산 일관성 신호발생 메커니즘의 한 부분(a portion of the distributed coherency signaling mechanism)을 실시한다. 또한, 각 프로세싱 유닛(104)은 로컬 인터커넥트(114)와 시스템 인터커넥트(110) 사이에서 통신을 선택적으로 포워딩하기 위한 포워딩 논리부(forwarding logic)(212)를 포함한다. 마지막으로, 각 프로세싱 유닛(104)은 I/O 장치(216)와 같은 하나 또는 그 이상의 I/O 장치들의 부착을 지원하는 집적 I/O(Input/Output) 제어기(214)를 포함한다. 하기에서 더 설명되는 바와 같이, 상기 I/O 제어기(214)는 상기 I/O 장치(216)의 요청들에 응답하여 로컬 인터 커넥트 및/또는 시스템 인터커넥트(110) 상에서 동작들을 시작할 수 있다.
도 3을 참조하면, 본 발명에 따른 L2 어레이 및 디렉토리(234)의 바람직한 실시 예에 대한 보다 상세한 블럭도가 도시된다. 도시된 바와 같이, L2 어레이 및 디렉토리(234)는 하나의 세트 연상 L2 캐시 어레이(a set associative L2 cache array)(300)와 L2 캐시 어레이(300)의 컨텐츠를 갖는 L2 캐시 디렉토리(302)를 포함한다. 종래의 세트 연상 캐시들에 있어서, 시스템 메모리들(108)의 메모리 위치들(locations)은 상기 시스템 메모리 (실제) 주소들 내 미리 정해진 인덱스 비트(index bits)를 활용하여 캐시 어레이들(300)내의 특정 콘그루언스 클래스들(paticular congruence classes)로 사상(map)된다. 캐시 어레이(300)내에 저장된 특정 캐시 라인들은 캐시 디렉토리(302)에 기록되며, 캐시 디렉토리(302)는 캐시 어레이(300)의 각 캐시 라인마다 하나의 디렉토리 엔트리를 포함한다. 당해 기술분야에 통상의 지식을 가진자가 이해하는 것과 같이, 캐시 디렉토리(302)에 포함된 각 디렉토리 앤트리는 적어도 하나의 태그필드(304), 상태필드(306), 및 최소 최근 사용(Least Recently Used: LRU) 필드(308)를 포함한다. 태그 필드(304)는 대응 실제 주소의 태그 부분을 활용하여 캐시 어레이(300)에 저장된 특정 캐시 라인을 명시하고(specify), 상태필드(306)는 캐시 라인의 일관성 상태를 표시하고, LRU 필드(308)는 동일 콘그루언스 클래스의 다른 캐시 라인들에 관하여 캐시 라인 교체 순서를 표시한다.
본 발명의 바람직한 목적은 다수의 캐시들에 저장된 캐시 라인들의 다수의 카피들간의 충돌을 관리하고 캐시들과 시스템 메모리간 데이터의 일치성을 유지하 는 캐시 일관성 프로토콜을 실시하는 것이다. 당업계에 잘 알려진 바와 같이, MESI 프로토콜을 활용하는 시스템들은 다음 네 가지 일관성 상태들 중 하나로 각 캐시 라인을 표시한다.
수정(Modified: M): 캐시 라인 태그 및 데이터가, 현재 캐시에서만 유효 하고 존재 하며, 오염(dirty) 혹은 메인 메모리에 저장된 캐시 라인의 값으로 부터 수정되었음을 나타낸다.
배타(Exclusive: E): 캐시 라인 태그 및 데이터는 현재 캐시에서만 유효하고 존재하면서 "청정(clean) 혹은 메인 메모리에 저장된 대응 캐시 라인의 값과 동일함을 나타낸다.
공유(Shared: S): 캐시 라인 태그 및 데이터는 유효하며 상기 시스템의 하나 또는 그 이상의 다른 캐시들에 저장될 수 있음을 나타낸다.
무효 (Invalid: I): 캐시 라인 태그 및 데이터는 무효를 나타낸다.
캐시는 "무효"를 제외한 모든 상태에서 캐시 라인에 대하여 판독 할 수 있다.
판독을 만족시키기 위해서 "무효" 상태에 있는 캐시 라인은 다른 캐시 또는 메인 메모리로부터 페치(fetch) 되어야 한다. 기록은 캐시 라인이 "수정" 또는 "배타" 상태에 있는 경우에 수행될 수 있다. 선행 기술에서, 캐시 라인이 공유 상태에 있는 경우, 모든 다른 캐시된 카피들은 1차로 무효화 되는데, 이는 통상적으로 방송 동작을 통해 수행된다.
다른 수정된 MESI 일관성 프로토콜들에서는 수정(M), 공유(S), 및 무효(I) 상태에 더하여 더 많은 상태가 존재할 수 있다. 예를 들어, "Me" 상태는 캐시 라인이 메모리에 대하여 수정되어 현재 캐시에 배타적으로 유지되었음을 나타낸다. 또 다른 수정 MESI 프로토콜에서는 "태그된(Tagged)" 또는 "T" 상태를 포함하는데, 이는 캐시 라인이 메모리에 대하여 수정되지만 또한 다른 캐시들에 의해서도 공유된다는 것을 나타낸다.
본 발명은 MESI 프로토콜의 변형을 사용하는데, 이는 캐시 라인에 대한 주소 태그는 유효이나 캐시 라인 데이터는 무효라는 것을 표시하는 "호버(Hover: H)" 상태를 포함한다. 만약 캐시 라인이 "호버(H)" 상태로 표시될 경우, "호버(H)"상태에 있는 상기 캐시 라인을 보유하고 있는 캐시는 상기 캐시 라인 데이터의 업데이트된 카피를 재획득하기 위해 시도할 것이다. 예를 들어, 데이터 처리 시스템이 세 개의 프로세서들 (예, 프로세서(0), 프로세서(1), 및 프로세서(2))과 이와 연관된 캐시들 (예, 캐시(0), 캐시(1), 및 캐시(2))을 포함하고, 이들 캐시 각각은 "공유(S)"상태에 있는 캐시 라인의 카피를 보유하고 있다고 가정하자. 프로세서(0)이 캐시(0)에 저장된 캐시 라인의 로컬 카피를 수정하면, 캐시(0)에 저장된 상기 캐시 라인의 상기 카피는 "수정(M)"으로 표시될 것이다. 그러면 캐시(1)와 캐시(2)에 저장된 상기 캐시 라인의 카피들은 "호버(H)"로 표시될 것이다. 본 발명에 따르면, 일단 프로세서(0)이 캐시(0)에 저장된 상기 캐시 라인의 카피의 수정을 완료하고 프로세서들(1, 2)에게 이러한 수정을 알리면 (예를 들어, "업데이트 완료(update complete)" 시스템-전체(system-wide), 주소전용 방송(address-only broadcast)을 통해), 프로세서들(1, 2)은 상기 캐시 라인을 재획득하기 위해 데이터 프리페치 요청들을 시작할 것이다.
일단 상기 프리페치 요청들이 만족되면, 캐시들(1, 2)에 저장된 상기 캐시 라인은 공유(즉, S) 상태로 되돌아 갈 것이다. 물론, 당해 기술분야 통상의 지식을 가진 자는 상기 업데이트된 캐시 라인의 이전 카피를 부분으로 가질 수 있는 다른 모든 캐시들에게 유효 프로토콜을 통지하기 위해 본 발명이 상기 업데이트된 캐시 라인의 주소를 전송해야함을 이해할 것이다. 업데이트된 캐시 라인을 포함하는 실제 데이터는 시스템 인터커넥트 상의 대역폭을 보호하기 위해 데이터 처리 시스템의 모든 캐시들에게 방송되지 않는다. 업데이트된 캐시 라인의 이전 카피를 저장한 캐시들만이 "업데이트 완료(update complete)" 시스템-전체(system-wide), 주소전용 방송(address-only broadcast)의 수신에 응답하여 캐시 라인의 업데이트된 카피를 프리페치할 것이다.
도 4는 본 발명의 실시 예에 따른 방법을 나타내는 고수준 논리적 흐름도이다. 이 방법에 의해 캐시 메모리가 연관된 프로세싱 유닛으로부터 수신된 저장-수정 요청을 서비스한다. 이 방법은 단계(400)에서 시작되어 단계 (402)로 진행한다. 단계(402)에서 L2 캐시(230)의 마스터(232)는 연관된 프로세서 코어들(200a, 200b)중 어느 하나로부터의 저장 요청 또는 무효화 요청과 같은 저장-수정 동작 요청을 수신한다. 단계(403)으로 진행하면, 마스터(232)는 상기 저장-수정 요청의 타켓인 특정 캐시 라인의 로컬 일관성 상태를 결정한다. 만일 L2 어레이(300)에 있는 상기 캐시 라인의 일관성 상태가 상태 필드(306)(도3)에서 수정 혹은 M상태에 있으면, 단계(404)로 진행하고, 단계(404)에서 마스터(232)는 상기 캐시 라인 상에서 저장-수정 동작을 수행한다. 이후, 프로세스는 단계(416)에서 종료된다.
만일 단계(403)에서, L2 어레이(300)의 상기 캐시 라인의 일관성 상태가 상태 필드(306)에서 일관성 상태에 있으면, 마스터(232)는 시스템 인터커넥터(110)에서 동작을 시작하지 않고는 프로세서 요청들에 대하여 서비스할 수 없으므로 (즉, 공유(S) 또는 무효(I) 상태인 경우에는), 프로세스는 단계(408)로 진행하고 마스터(232)는 시스템 인터커넥트(110)상에서 적절한 저장-수정 동작을 시작한다. 그 다음, 단계(410)으로 진행하고, 마스터(232)는 상기 저장-수정 동작이 성공했는지, 예를 들어 시스템 전체로 조합된 응답(system-wide combined response)을 참조하여, 결정한다. 만약 상기 동작이 성공하지 못한 경우, 프로세스는 단계(408)로 복귀한다.
만약 상기 동작이 성공적이었다면, 프로세스는 단계(412)로 진행하고 마스터(232)는 L2 어레이(300)에 있는 타켓 캐시 라인의 로컬 카피를 무효화시키거나 업데이트한다. 상기 캐시라인이 무효화되거나 업데이트된 후에, 프로세스는 단계(414)로 진행하고, 마스터(232)는 시스템-전체, 주소전용 "업데이트 완료" 동작을 방송한다. 이는 상기 저장-수정 동작이 완료되었음과, 상기 캐시 라인이 데이터 처리 시스템(100)내의 모든 다른 프로세싱 유닛에 의해 프리페치(prefetch)될 수 있는 상태임을 표시하기 위해서이다. 상기 프로세싱 유닛은 상기 저장-수정 동작의 수신 직전에는 자신의 L2 캐시(230)에 상기 캐시 라인의 유효 카피를 보유했다. 이후, 프로세스는 단계(416)에서 종료된다.
도 5A는 본 발명의 실시 예에 따라 캐시 메모리가 시스템 인터커넥트에서 감시된(snooped) 저장-수정 동작들을 처리하는 방법을 도시하는 고수준 논리적 흐름도이다. 스누퍼(snooper)(236)가 시스템 인터커넥트(110)상에서 감시된 동작을 수신한 것에 대해 응답하여 단계(500)에서 프로세스가 시작된다. 이후, 프로세스는 단계(501)로 진행하고 스누퍼(236)는 시스템 인터커넥트(110)상에서 감시된 동작이 연관된 L2 어레이(300)에 저장된 유효 캐시 라인을 타겟(target)으로 하는지 (즉, 캐시 적중(cache hit)인지)를 결정한다. 만약 상기 동작이 L2 어레이(300)에 저장된 캐시 라인을 타켓으로 하지 않는 경우, 프로세스는 단계(514)에서 종료된다.
만약 상기 동작이 L2 어레이(300)에 저장된 유효한 캐시 라인을 타켓으로 하는 경우 (즉, 캐시 적중), 프로세스는 단계(502)로 진행하여 스누퍼(236)는 상기 동작이 저장-수정 동작 (예, 저장 요청 또는 무효화 요청)인지를 결정한다. 만약 스누퍼(236)가 상기 동작이 저장-수정 동작이 아니라고 결정한 경우, 프로세스는 단계(503)으로 진행하고 스누퍼(236)는 감시된 동작이 "업데이트 완료" 동작의 시스템-전체, 주소전용 방송인지를 결정한다. 만약 상기 감시된 동작이 "업데이트 완료" 동작의 시스템-전체, 주소전용 방송일 경우, 프로세스는 페이지 연결표시 "A"를 지나 도 5B로 진행하며 이는 하기에서 설명될 것이다. 만약 상기 감시된 동작이 "업데이트 완료" 동작의 시스템-전체, 주소전용 방송이 아닐 경우, 프로세스는 단계(504)로 진행하고 스누퍼(236)는 상기 감시된 동작을 위한 다른 프로세싱을 수행한다. 이후, 프로세스는 단계(514)에서 종료된다.
단계(502)에서, 만약 스누퍼(236)가 상기 감시된 동작이 저장-수정 동작이라 고 결정한 경우, 프로세스는 선택적 단계(506)으로 진행하고 스누퍼(236)는 상기 캐시 라인의 로컬 일관성 상태를 결정한다. 단계(506)는 선택적 단계(optional step)다. 왜냐하면 각각의 감시된 저장-수정 동작이 자동적으로 데이터 프리페치 요청의 결과를 가져오는 것은 바람직하지 않을 수 있기 때문이다. 프리페치 요청들은 필요한 시스템 인터커넥트 대역폭을 소비하므로 특정 일관성 상태들을 가지는 캐시 라인들로 한정될 수 있다. 예를 들어, 로컬 일관성 상태가 "M"인 캐시 라인은 가까운 미래에 엑세스될 가능성이 크다 왜냐하면 로컬 캐시와 연관된 프로세싱 유닛이 상기 캐시 라인을 최근에 수정하였기 때문이다. 로컬 일관성 상태가 "S"인 캐시 라인은 다시 엑세스될 가능성이 적을 것이다.
캐시 라인의 로컬 카피의 로컬 일관성 상태가 "S" 인 경우, 프로세스는 단계(512)으로 진행하고 스누퍼(236)는 상기 캐시 라인의 일관성 상태를 "I" 로 업데이트 한다. 이후, 프로세스는 단계(514)에서 종료된다.
단계(506)에서, 만약 상기 로컬 일관성 상태가 "M"인 경우, 프로세스는 단계(520)으로 진행하여 감시된 동작을 시작한 요청 프로세서에 대하여 캐시 라인을 제공하는 것이 스누퍼(236)에게 요구되는지를 스누퍼(236)는 결정한다. 만약 상기 캐시 라인을 상기 요청 프로세서에 대하여 제공하는 것이 스누퍼(236)에게 요구된다고 결정된 경우, 프로세스는 단계(518)로 진행하고 스누퍼(236)는 캐시간 개입(cache to cache intervention)에 의해 상기 요청 프로세서에 대하여 상기 캐시 라인을 전송한다. 그 다음, 프로세스는 단계(522)로 진행하여, 스누퍼(236)가 상기 캐시 라인의 일관성 상태를 "호버(H)상태"로 업데이트한다. 그러나, 만약 상기 캐 시 라인을 상기 요구 프로세서에 대하여 제공하는 것이 스누퍼(236)에게 요구되지 않다고 결정된 경우, 프로세스는 바로 단계(522)로 진행한다. 그 다음 프로세스는 단계(514)에서 종료된다. 당해 기술분야에 통상을 지식을 가진 자는 본 발명이 상기 캐시 라인의 이전 일관성 상태 (예, "수정(M)"상태, "공유(S)"상태, "무효(I)"상태, 등)와 무관하게 상기 캐시 라인의 일관성 상태를 "호버(H)"상태로 업데이트하는 스누퍼(236)를 포함하기 때문에 단계(506)이 선택적 단계임을 이해할 것이다.
도 5B는 본 발명의 실시 예에 따라 캐시 메모리가 시스템 인터커넥트 상에서 감시된 "업데이트 완료" 동작을 처리하는 방법을 도시하는 고수준 논리적 흐름도이다. 스누퍼(236)에 의해 감시된 동작이 "업데이트 완료" 동작의 주소전용, 시스템-전체 방송이라는 도 5A의 단계(503)에서의 결정에 대한 응답으로 페이지 연결표지 "A'에서 프로세스가 시작된다. 상기 "업데이트 완료"동작은 저장-수정 동작의 타켓이었던 캐시 라인을 표시한다.
프로세스는 단계(524)로 진행하여, 연관된 캐시 디렉토리(302)가 상기 "업데이트 완료" 동작의 타켓 주소와 "호버(H)"상태를 연관시키면, 프로세스는 단계(526)와 단계(528)로 진행한다. 단계(526) 및 단계(528)에서, 스누퍼(236)는 상기 "업데이트 완료" 동작으로부터 수신된 주소를 활용하여 상기 캐시 라인의 새롭게 업데이트된 카피를 검색하기 위해 데이터 프리페치 요청을 발생시켜 전송한다. 상기 캐시 라인의 새롭게 업데이트된 카피를 프리페칭하는 것은 프로세싱 유닛들(104a 내지 104n)내의 파이프라인 기능 정지(pipeline stall)의 가능성을 줄여준다.
캐시 라인이 L2 캐시 디렉토리(302)에 저장되어 있다는 사실은 연관된 프로세싱 유닛이 최근에 상기 캐시 라인을 참조하였고 다시 상기 캐시 라인을 참조할 가능성이 있다는 것을 나타낸다. 상기 프로세싱 유닛은 가까운 미래에 상기 캐시 라인을 참조로 할 것이기 때문에, 미래의 참조를 예상하여 상기 캐시 라인의 새롭게 업데이트된 카피를 프리페칭해 두는 것은 파이프라인 기능 정지의 기회를 줄여줄 것이다. 왜냐하면 상기 프로세싱 유닛이 상기 캐시 라인의 프로세싱을 필요로 할 때 상기 새롭게 업데이트된 캐시 라인의 패치를 기다려야 할 (즉, 파이프라인의 기능이 정지될) 가능성이 줄어들기 때문이다.
단계(528) 이후, 프로세스는 단계(530)으로 진행하여 스누퍼(236)는 단계(528)에서 언급된 상기 프리페치 요청에 응답하여 상기 요청된 새롭게 업데이트된 캐시 라인이 수신되었는지를 결정한다. 단계(534)에서 보는 바와 같이, 본 발명의 일 실시 예에 있어서, 스누퍼(236)는 필요하다면 N 회까지 상기 프리페치 요청을 재시도한다.
단계(530)에서, 만일 상기 요청된 새롭게 업데이트된 캐시 라인이 수신되면, 스누퍼(236)는 상기 캐시 라인을 정확한 일관성 상태(the correct coherency state) (예, "공유(S)상태")로 업데이트 한다. 이후, 단계(538)에서 프로세스가 종료된다.
상기에서 논의된 바와 같이, 본 발명은 능동적인 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법을 포함한다. 본 발명의 바람직한 실시 예에 따르면, 프로세싱 유닛의 스누퍼는 특정 주소를 타켓으로 하는 저장-수정 동작의 완료 를 나타내는 시스템-전체 업데이트 완료 동작을 수신한다. 여기서 상기 저장-수정 동작은 제1 캐시 메모리의 제1 캐시 라인의 수정을 초래한다. 상기 스누퍼는 상기 시스템-전체 업데이트 완료 동작을 수신하기 전에 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 결정한다. 만약 보유했다면, 상기 스누퍼는 상기 제2 캐시 메모리의 제2 캐시 라인을 교체하기 위하여 상기 수정된 제1 캐시 라인의 카피에 대한 프리페치 요청을 시작한다. 상기 스누퍼는 상기 수정된 제1 캐시 라인의 카피로 상기 제2 캐시 메모리를 업데이트 한다.
상기 스누퍼는 상기 제2 캐시 라인이 호버 일관성 상태에 있는지를 결정하기 위해 제2 캐시 메모리와 연관된 캐시 디렉토리에 엑세스함에 의하여 상기 시스템-전체 업데이트 완료 동작을 수신하기 전에 상기 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 결정한다.
당해 기술분야에 통상의 지식을 가진 자는 프리페치 요청이 저장-수정 동작의 완료에 대한 응답하여 발생 되는지 여부는 상기 시스템 인터커넥트에서 검출된 동작 또는 트랜잭션의 종류에 달려있다는 것을 이해할 것이다.

Claims (10)

  1. 주소 및 데이터 인터커넥트를 통해 통신하는 다수의 프로세싱 유닛들을 포함하는 데이터 처리 시스템을 위한 캐시 일관성 프로토콜을 실시하는 방법에 있어서,
    특정 주소를 타켓으로 하는 저장-수정 동작의 완료를 나타내는 시스템-전체 업데이트 완료 신호를 상기 인터커넥트를 통해 상기 다수의 프로세싱 유닛들 중 제2 프로세싱 유닛의 제2 캐시 메모리에서 수신하는 단계 - 상기 저장-수정 동작은 상기 다수의 프로세싱 유닛들 중 제1 프로세싱 유닛의 제1 캐시 메모리에 있는 제1 캐시 라인에 수정을 초래함 - ;
    상기 시스템-전체 업데이트 완료 신호를 상기 제2 캐시 메모리에서 수신하기 전에 상기 다수의 프로세싱 유닛들 중 제2 프로세싱 유닛의 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 상기 제2 캐시 메모리에서 결정하는 단계 - 상기 결정 단계는 상기 제2 캐시 라인이 호버(hover) 일관성(H) 상태에 있는지를 결정하기 위해 상기 제2 캐시 메모리와 연관된 캐시 디렉토리에 액세스하는 단계를 더 포함하며, 상기 H 상태는 상기 제2 캐시 라인에 대한 주소 태그는 유효하고 상기 제2 캐시 라인에 있는 캐시 라인 데이터는 현재 무효임을 나타내고, 캐시 라인이 H 상태로 표시될 경우, 상기 H 상태에 있는 캐시 라인을 보유하는 캐시는 수정(M) 상태에 있는 캐시 라인을 보유하는 다른(another) 캐시의 다른(another) 캐시 라인으로부터 상기 캐시 라인 데이터의 업데이트된 카피를 재획득하기 위해 시도함 -;
    상기 시스템-전체 업데이트 완료 신호를 상기 제2 캐시 메모리에서 수신하기 전에 상기 특정 주소와 연관된 제2 캐시 라인을 보유했다는 결정에 응답하여, 상기 제2 캐시 라인의 특정 주소와 연관된 데이터가 상기 제2 캐시 메모리와 연관된 프로세싱 유닛에 의해 요청되기 전에, 상기 제2 캐시 메모리의 상기 제2 캐시 라인을 교체하기 위해 상기 제2 캐시 메모리에서 상기 수정된 제1 캐시 라인의 카피에 대한 상기 제1 캐시 메모리로의 프리페치 요청을 시작하는(issuing) 단계; 및
    상기 프리페치 요청이 상기 수정된 제1 캐시 라인의 카피를 리턴하는 것에 응답하여, 상기 제2 캐시 메모리에서 상기 제2 캐시 메모리 내의 상기 제2 캐시 라인을 상기 수정된 제1 캐시 라인의 상기 카피로 업데이트 하는 단계
    를 포함하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제2 캐시 라인의 로컬 일관성 상태를 상기 제2 캐시 메모리에서 결정하는 단계; 및
    상기 제2 캐시 라인의 로컬 일관성 상태가 공유라는 결정에 응답하여 상기 제2 캐시 메모리에서 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 무효로 업데이트 하는 단계
    를 더 포함하는 방법.
  4. 주소 및 데이터 인터커넥트를 통해 통신하는 다수의 프로세싱 유닛들을 포함하는 데이터 처리 시스템을 위한 캐시 일관성 프로토콜을 실시하는 방법에 있어서,
    특정 주소를 타겟으로 하는 저장-수정 동작의 완료를 나타내는 시스템-전체 업데이트 완료 신호를 상기 인터커넥트를 통해 상기 다수의 프로세싱 유닛들 중 제2 프로세싱 유닛의 제2 캐시 메모리에서 수신하는 단계 - 상기 저장-수정 동작은 상기 다수의 프로세싱 유닛들 중 제1 프로세싱 유닛의 제1 캐시 메모리에 있는 제1 캐시 라인에 수정을 초래함 -;
    상기 시스템-전체 업데이트 완료 신호를 상기 제2 캐시 메모리에서 수신하기 전에 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는지를 상기 제2 캐시 메모리에서 결정하는 단계;
    상기 시스템-전체 업데이트 완료 신호를 상기 제2 캐시 메모리에서 수신하기 전에 상기 제2 캐시 메모리가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했다는 결정에 응답하여, 상기 제2 캐시 메모리에서 상기 제2 캐시 메모리의 상기 제2 캐시 라인을 교체하기 위해 상기 수정된 제1 캐시 라인의 카피에 대한 상기 제1 캐시 메모리로의 프리 페치 요청을 시작하는(issuing) 단계;
    상기 프리페치 요청이 상기 수정된 제1 캐시 라인의 카피를 리턴하는 것에 응답하여, 상기 제2 캐시 메모리에서 상기 제2 캐시 메모리 내의 상기 제2 캐시 라인을 상기 수정된 제1 캐시 라인의 상기 카피로 업데이트하는 단계;
    상기 제2 캐시 라인의 로컬 일관성 상태를 결정하는 단계;
    상기 제2 캐시 라인의 로컬 일관성 상태가 수정이라는 결정에 응답하여 상기 제2 캐시 라인이 제공되는 것이 요구되는 지를 결정하는 단계;
    상기 제2 캐시 라인이 제공되는 것이 요구된다는 결정에 응답하여, 상기 제2 캐시 라인을 요청 프로세싱 유닛에 전송하고 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 호버로 업데이트하는 단계; 및
    상기 제2 캐시 라인이 제공되는 것이 요구되지 않는다는 결정에 응답하여, 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 호버로 업데이트하는 단계
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 수정된 제1 캐시 라인의 수정된 상기 카피가 수신되지 않았다는 결정에 응답하여 상기 프리페치 요청을 재전송하는 단계
    를 더 포함하는 방법.
  6. 주소 및 데이터 인터커넥트를 통해 통신하는 다수의 프로세싱 유닛들을 포함하는 데이터 처리 시스템에서 캐시 일관성 프로토콜을 실시하는 프로세싱 유닛에 있어서,
    적어도 하나의 프로세서 코어;
    상기 적어도 하나의 프로세서 코어에 연결되어, 상기 적어도 하나의 프로세서 코어에 의해 엑세스될 데이터를 캐싱(caching)하기 위한 로컬 캐시 어레이; 및
    적어도 하나의 스누퍼를 포함하되,
    상기 스누퍼는,
    특정 주소를 타켓으로 하는 저장-수정 동작의 완료를 나타내는 시스템-전체 업데이트 완료 신호를 수신하고 - 상기 저장-수정 동작은 상기 다수의 프로세싱 유닛들 중 제1 프로세싱 유닛과 연관된 제1 캐시 어레이에 있는 제1 캐시 라인에 수정을 초래함 - ;
    상기 시스템-전체 업데이트 완료 신호를 수신하기 전에 상기 로컬 캐시 어레이가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했는 지를 결정하고 - 상기 스누퍼는 상기 제2 캐시 라인이 호버(hover) 일관성(H) 상태에 있는지를 결정하기 위해 상기 로컬 캐시 어레이와 연관된 캐시 디렉토리에 액세스하며, 상기 H 상태는 상기 제2 캐시 라인에 대한 주소 태그는 유효하고 상기 제2 캐시 라인에 있는 캐시 라인 데이터는 현재 무효임을 나타내고, 상기 캐시 라인이 H 상태로 표시될 경우, 상기 H 상태에 있는 캐시 라인을 보유하는 캐시는 수정(M) 상태에 있는 캐시 라인을 보유하는 다른(another) 캐시의 다른(another) 캐시 라인으로부터 상기 캐시 라인 데이터의 업데이트된 카피를 재획득하기 위해 시도함 -;
    상기 시스템-전체 업데이트 완료 신호를 수신하기 전에 상기 로컬 캐시 어레이가 상기 특정 주소와 연관된 제2 캐시 라인을 보유했다는 결정에 응답하여, 상기 제2 캐시 라인의 특정 주소와 연관된 데이터가 상기 로컬 캐시 어레이와 연관된 프로세싱 유닛에 의해 요청되기 전에, 상기 로컬 캐시 어레이의 상기 제2 캐시 라인을 교체하기 위해 상기 수정된 제1 캐시 라인의 카피에 대한 상기 제1 캐시 어레이로의 프리페치 요청을 시작하고;
    상기 프리페치 요청이 상기 수정된 제1 캐시 라인의 카피를 리턴하는 것에 응답하여, 상기 로컬 캐시 어레이의 상기 제2 캐시 라인을 상기 수정된 제1 캐시 라인의 상기 카피로 업데이트 하는
    프로세싱 유닛.
  7. 제6항에 있어서,
    일관성 상태를 상기 로컬 캐시 어레이에 저장된 캐시 라인들과 연관시키기 위해 상기 로컬 캐시 어레이와 연관된 캐시 디렉토리
    를 더 포함하는 프로세싱 유닛.
  8. 삭제
  9. 제6항에 있어서,
    상기 스누퍼는 상기 제2 캐시 라인의 로컬 일관성 상태가 공유라는 결정에 응답하여 상기 제2 캐시 라인의 상기 로컬 일관성 상태를 무효로 업데이트 하는
    프로세싱 유닛.
  10. 제6항에 있어서,
    상기 스누퍼는 상기 제2 캐시 라인의 로컬 일관성 상태가 수정이라는 결정에 응답하여 상기 제2 캐시 라인이 제공되는 것이 요구되는 지를 결정하는
    프로세싱 유닛.
KR1020097010996A 2006-12-19 2007-12-07 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법 KR101072174B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/612,568 US7890704B2 (en) 2006-12-19 2006-12-19 Implementing an enhanced hover state with active prefetches
US11/612,568 2006-12-19

Publications (2)

Publication Number Publication Date
KR20090079964A KR20090079964A (ko) 2009-07-22
KR101072174B1 true KR101072174B1 (ko) 2011-10-10

Family

ID=39214051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097010996A KR101072174B1 (ko) 2006-12-19 2007-12-07 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법

Country Status (7)

Country Link
US (1) US7890704B2 (ko)
EP (1) EP2122470B1 (ko)
KR (1) KR101072174B1 (ko)
AT (1) ATE502336T1 (ko)
DE (1) DE602007013292D1 (ko)
TW (1) TWI428754B (ko)
WO (1) WO2008074670A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943273B1 (en) * 2008-08-14 2015-01-27 Marvell International Ltd. Method and apparatus for improving cache efficiency
US8271735B2 (en) * 2009-01-13 2012-09-18 Oracle America, Inc. Cache-coherency protocol with held state
US8375170B2 (en) * 2010-02-12 2013-02-12 Arm Limited Apparatus and method for handling data in a cache
US8806134B2 (en) * 2010-04-16 2014-08-12 Pmc-Sierra Us, Inc. Mirrored cache protection
US9762428B2 (en) 2012-01-11 2017-09-12 Bazaarvoice, Inc. Identifying and assigning metrics to influential user generated content
US9785619B1 (en) * 2012-03-23 2017-10-10 Amazon Technologies, Inc. Interaction based display of visual effects
US10514920B2 (en) 2014-10-20 2019-12-24 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared at program detection
US10698822B1 (en) * 2017-11-13 2020-06-30 Johnny Yau Systems and methods for reduced latency in data exchange within shared memory with coherent cache memories

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415358B1 (en) 1998-02-17 2002-07-02 International Business Machines Corporation Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US20050044174A1 (en) 2003-04-11 2005-02-24 Sun Microsystems, Inc. Multi-node computer system where active devices selectively initiate certain transactions using remote-type address packets

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615334A (en) * 1994-10-07 1997-03-25 Industrial Technology Research Institute Memory reflection system and method for reducing bus utilization and device idle time in the event of faults
US6021466A (en) * 1996-03-14 2000-02-01 Compaq Computer Corporation Transferring data between caches in a multiple processor environment
US5852716A (en) 1996-07-02 1998-12-22 Sun Microsystems, Inc. Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions
US6292872B1 (en) * 1998-02-17 2001-09-18 International Business Machines Corporation Cache coherency protocol having hovering (H) and recent (R) states
US6606676B1 (en) 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6754782B2 (en) 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6785774B2 (en) 2001-10-16 2004-08-31 International Business Machines Corporation High performance symmetric multiprocessing systems via super-coherent data mechanisms
US7100001B2 (en) 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US7096323B1 (en) 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
GB2403560A (en) 2003-07-02 2005-01-05 Advanced Risc Mach Ltd Memory bus within a coherent multi-processing system
US7318074B2 (en) * 2003-11-17 2008-01-08 International Business Machines Corporation System and method for achieving deferred invalidation consistency
US7536513B2 (en) 2005-03-31 2009-05-19 International Business Machines Corporation Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7444494B2 (en) 2005-05-31 2008-10-28 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415358B1 (en) 1998-02-17 2002-07-02 International Business Machines Corporation Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US20050044174A1 (en) 2003-04-11 2005-02-24 Sun Microsystems, Inc. Multi-node computer system where active devices selectively initiate certain transactions using remote-type address packets

Also Published As

Publication number Publication date
TW200834322A (en) 2008-08-16
US7890704B2 (en) 2011-02-15
US20080147991A1 (en) 2008-06-19
EP2122470B1 (en) 2011-03-16
TWI428754B (zh) 2014-03-01
ATE502336T1 (de) 2011-04-15
KR20090079964A (ko) 2009-07-22
WO2008074670A1 (en) 2008-06-26
EP2122470A1 (en) 2009-11-25
DE602007013292D1 (de) 2011-04-28

Similar Documents

Publication Publication Date Title
US7536513B2 (en) Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US8495308B2 (en) Processor, data processing system and method supporting a shared global coherency state
US7620776B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US7747826B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
US8347037B2 (en) Victim cache replacement
US7404046B2 (en) Cache memory, processing unit, data processing system and method for filtering snooped operations
US8209489B2 (en) Victim cache prefetching
US7716428B2 (en) Data processing system, cache system and method for reducing imprecise invalid coherency states
US7395376B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US7290094B2 (en) Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy
US7237070B2 (en) Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source
US8327072B2 (en) Victim cache replacement
US20130205096A1 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US6405290B1 (en) Multiprocessor system bus protocol for O state memory-consistent data
US8024527B2 (en) Partial cache line accesses based on memory access patterns
US9110808B2 (en) Formation of an exclusive ownership coherence state in a lower level cache upon replacement from an upper level cache of a cache line in a private shared owner state
KR101072174B1 (ko) 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법
US6345341B1 (en) Method of cache management for dynamically disabling O state memory-consistent data
US7512742B2 (en) Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope
US20090198910A1 (en) Data processing system, processor and method that support a touch of a partial cache line of data
US7984256B2 (en) Data processing system and method in which a participant initiating a read operation protects data integrity
US6349368B1 (en) High performance mechanism to support O state horizontal cache-to-cache transfers

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150925

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160928

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190927

Year of fee payment: 9