KR20080055681A - 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑스킴 - Google Patents

스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑스킴 Download PDF

Info

Publication number
KR20080055681A
KR20080055681A KR1020070129626A KR20070129626A KR20080055681A KR 20080055681 A KR20080055681 A KR 20080055681A KR 1020070129626 A KR1020070129626 A KR 1020070129626A KR 20070129626 A KR20070129626 A KR 20070129626A KR 20080055681 A KR20080055681 A KR 20080055681A
Authority
KR
South Korea
Prior art keywords
cache
affinity
entry location
data
cache entry
Prior art date
Application number
KR1020070129626A
Other languages
English (en)
Other versions
KR100978156B1 (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 KR20080055681A publication Critical patent/KR20080055681A/ko
Application granted granted Critical
Publication of KR100978156B1 publication Critical patent/KR100978156B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories

Landscapes

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

Abstract

일 실시예에서, 하나의 방법이 제공된다. 이 실시예의 방법은 복수의 프로세서 중 하나의 프로세서로부터 데이터 요청을 수신하는 단계, 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하는 단계, 프로세서에 대응하는 캐시 내의 캐시 엔트리 위치에 데이터를 저장하는 단계, 및 데이터에 대응하는 일관성 레코드를 캐시에 대응하는 어피니티에 저장하는 단계를 제공한다.
스누프 필터, 스와핑 스킴, 데이터 요청, 캐시 엔트리 위치, 일관성 레코드

Description

스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴{LINE SWAPPING SCHEME TO REDUCE BACK INVALIDATIONS IN A SNOOP FILTER}
본 발명의 실시예들은 스누프 필터에서의 실효를 줄이기 위한 라인 스와핑 스킴에 관한 것이다.
다수의 프로세서 또는 다수의 코어를 구비한 프로세서들의 사용은 새로운 컴퓨팅 시스템들의 컴퓨팅 능력을 향상시키는 방법으로서 점차 일반화되어 왔다. 멀티프로세서 및 멀티코어 시스템들은 시스템 메모리 및 저장 장치들과 같은 시스템 자원들을 공유한다. 다수의 프로세서 또는 코어는 종종 메모리 또는 저장 장치 내의 동일한 데이터에 액세스하며, 이 데이터를 동시에 사용하려고 시도한다. 이를 달성하기 위하여, 멀티프로세서 및 멀티코어 시스템들은 데이터의 사용을 추적하여, 데이터 일관성을 유지한다. 멀티프로세서 시스템들에서 데이터 일관성을 유지하는 하나의 양태는 각각의 프로세서에 캐시된 데이터가 일관성을 갖는 것을 보증하는 것이다. 예를 들어, 각각의 프로세서는 캐시 내의 데이터를 시스템 메모리에 다시 기입하기 전에 이 데이터를 변경할 수 있다. 변경된 데이터가 메모리에 다시 기입되기 전에 다른 프로세서가 시스템 메모리로부터 이 데이터를 요청하는 경우, 데이터 일관성은 손실된다.
이러한 시스템들에서 데이터 일관성을 유지하기 위한 일반 스킴은 스누프 필터를 이용하는 것이다. 데이터 일관성을 보증하기 위하여, 프로세서 또는 코어는 데이터에 액세스하거나 변경하기 전에 스누프로서 종종 지칭되는 일관성 요청을 다른 프로세서들에게 전송할 수 있다. 통상의 스누프 필터는 각각의 프로세서 또는 코어로부터의 데이터 요청의 캐시를 유지하여, 각각의 프로세서 또는 코어의 캐시의 내용을 추적한다. 프로세서가 메모리로부터 데이터를 검색할 때마다, 그 데이터에 대한 태그 어드레스를 포함하는 일관성 레코드가 스누프 필터에 저장된다. 그러나 스누프 필터는 프로세서 또는 코어에 의해 제거된 캐시 엔트리들을 인식하지 못하는데, 이는 프로세서가 모든 캐시 히트 메모리 참조를 스누프 필터에 전송하여 프로세서의 캐시 엔트리들과 스누프 필터 엔트리들 간의 완벽한 매치를 유지하는 것이 비현실적이기 때문이다. 예를 들어, 프로세서로부터 자주 참조되는 라인은 스누프 필터에게 노화되어 보이는데, 이는 그 라인의 액티비티가 내부 캐시 계층 구조 밖으로 노출되지 않기 때문이다. 다른 시나리오에서, 프로세서의 캐시 내의 클린(변경되지 않은) 라인은 스누프 필터에 통지되지 않고 다른 캐시 미스 어드레스에 의해 대체될 수 있다. 결과적으로, 스누프 필터는 프로세서가 더 이상 사용할 수 없는 많은 실효된 데이터 엔트리를 가질 가능성이 높다. 또한, 프로세서 또는 코어로부터 새로운 요청이 수신될 대 새로운 엔트리에 대한 공간을 만들기 위하여, 스누프 필터는 여전히 사용 중에 있을 수 있는 캐시 엔트리들을 제거해야 할 수 있다.
제거되도록 선택되는 캐시 엔트리들은 대체 알고리즘을 이용하여 선택될 수 있다. 스누프 필터의 하나의 대체 알고리즘은 스누프 필터 캐시 내의 엔트리를 임의로 선택하여 제거함으로써 새로운 엔트리에 대한 공간을 만든다. 이것은 제거된 엔트리에 대해 백 실효 메시지(back invalidation message)가 프로세서 또는 코어로 전송되게 한다. 그러나 제거된 엔트리가 여전히 프로세서 또는 코어에 의해 사용되고 있는 경우, 프로세서 또는 코어는 시스템 메모리로부터 대응 데이터를 다시 요청할 필요가 있을 것이다. 이것은 프로세서 또는 코어와 허브 제어기 간의 버스 상에 추가 트래픽을 발생시켜, 다른 데이터 전송을 위한 가용 대역폭을 감소시키게 된다.
이러한 프로세스의 버스 대역폭 및 프로세서의 이용에 대한 영향을 최소화하기 위하여, 스누프 필터 캐시들은 통상적으로 스누프 필터에 의해 커버되는 프로세서들 내의 모든 캐시의 합쳐진 크기의 여러 배를 추적할 만큼 충분히 크다. 실제로, 스누프 필터는 시스템 내의 프로세서들 또는 코어들의 캐시들의 전체 크기보다 4 내지 8배 클 수 있다. 이러한 큰 스누프 필터들은 많은 양의 공간을 차지하며, 허브 제어기의 복잡성, 결과적으로 비용을 증가시킨다. 결과적으로, 양호한 대체 방책의 선택이 스누프 필터 크기의 증가보다 바람직하다. 또한, 백 실효들의 발행에 대한 개선도 요구된다.
본 발명의 실시예들은, 유사한 참조들이 유사한 요소들을 나타내는 첨부 도면들에서 한정이 아니라 예시적으로 설명된다. 본 개시에서 "일" 또는 "하나의" 실시예에 대한 상이한 참조들은 동일한 실시예에 대한 것일 필요는 없으며, 이러한 참조들은 적어도 하나를 의미한다는 점에 유의해야 한다.
도 1은 "웨이 힌트(way hint)" 스누프 필터를 구비한 시스템의 하나의 실시예의 도면이다. 시스템(100)은 개인용 컴퓨터, 메인프레임 컴퓨터, 핸드헬드 컴퓨터, 소비자 전자 장치(셀룰러 전화, 핸드헬드 게임 장치, 셋톱 박스 또는 유사한 장치), 네트워크 장치, 자동차/항공 전자 제어기 또는 다른 유사한 장치들을 포함하는 임의 타입의 멀티프로세서 또는 멀티코어 시스템일 수 있다.
시스템(100)은 임의 수의 프로세서(107, 111)를 구비할 수 있는데, 이들 프로세서 각각은 프로세서(107, 111)와 연관된 적어도 하나의 캐시(109, 113)를 구비한다. 일 실시예에서, 시스템(100)은 고정된 수의 프로세서(107, 111)를 구비할 수 있다. 다른 실시예에서, 시스템(100)은 임의 수의 프로세서에 대한 슬롯들 또는 인터페이스들을 구비할 수 있다. 프로세서들의 수는 시스템에 프로세서를 추가하거나 제거함으로써 변경될 수 있다.
일 실시예에서, 프로세서(107, 111)는 개별 코어를 구비하고 개별 기판 상에 있으며 개별 패키지 내에 있는 프로세서일 수 있다. 다른 실시예에서, 프로세서들은 단일 기판 및 칩 패키지 또는 이들의 조합 상의 다수의 코어를 포함할 수 있다. 설명의 편의를 위해, 설명되는 예시적인 시스템은 멀티프로세서 개인용 컴퓨터 시스템이다. 각각의 프로세서(107, 111)는 일 그룹의 캐시들을 구비할 수 있다. 본 명세서에서 사용되는 "일 그룹"은 하나를 포함하는 임의 수의 항목을 나타낼 수 있다. 예를 들어, 프로세서는 레벨 1 캐시는 물론 레벨 2 캐시를 구비할 수 있다. 최고 레벨 캐시는 최종 레벨 캐시(LLC)로서 지칭될 수 있다.
각각의 프로세서(107, 111)는 버스(115, 117)를 통해 허브 제어기(101)와 통신할 수 있다. 허브 제어기(101)는 프로세서(107, 111)와 시스템 메모리(105)는 물론 시스템(100) 내의 다른 장치들(119) 사이의 데이터의 이동을 관리하는 장치 또는 칩셋일 수 있다. 일 실시예에서, 시스템(100) 내에는 단일 허브 제어기(101)가 존재할 수 있다. 다른 실시예에서는 다수의 허브 제어기가 존재할 수 있거나, 허브 제어기(101)가 다수의 컴포넌트로 세분될 수 있다. 예를 들어, 몇몇 개인용 컴퓨터 시스템은 노스 브리지 및 사우스 브리지로 지칭되는 2개의 허브 제어기를 구비한다.
일 실시예에서, 허브 제어기(101)는 개별 버스(115, 117)를 통해 각각의 프로세서(107, 111)와 통신할 수 있다. 다른 실시예들에서는, 다수의 프로세서가 단일 버스를 통해 통신하거나 버스들의 서브세트를 공유할 수 있다. 프로세서들(107, 111)과 허브 제어기(101) 사이의 버스들(115, 117)은 프론트 사이드 버스(FSBs)로서 지칭될 수 있다.
일 실시예에서, 시스템 메모리(105)는 임의 타입의 동적 랜덤 액세스 메모리(DRAM) 장치 또는 메모리 장치들의 그룹일 수 있다. 예를 들어, 시스템 메모리 (105)는 동기식 DRAM, 듀얼 데이터 레이트 DRAM, 정적 랜덤 액세스 메모리(SRAM) 및 유사한 타입의 메모리 장치들을 포함할 수 있다. 시스템 메모리(105)는 프로세 서들(107, 111)에 의한 사용을 위해 데이터 및 프로그램 명령들을 저장하는 데 사용될 수 있다. 다른 실시예에서, 시스템 메모리는 정적 메모리 장치, 플래시 메모리 장치 또는 EEPROM(Electronically Erasable Programmable Read Only Memory), 메모리 스틱 또는 유사한 장치와 같은 유사한 메모리 장치일 수 있다.
시스템(100)과 통신할 수 있는 다른 장치들(119)은 네트워크 장치 및 카드, 그래픽 장치, 하드 디스크 드라이브와 같은 대용량 저장 장치, CD 및 DVD와 같은 이동식 저장 장치 및 유사한 장치들을 포함할 수 있다. 이들 장치의 존재는 시스템(100)이 그의 일부인 장치의 타입에 따라 변할 수 있다. 예를 들어, 시스템이 네트워크 장치인 경우, 다수의 네트워크 카드 또는 통신 장치가 존재할 수 있으나, 그래픽 카드 및 모니터와 같은 그래픽 장치는 존재하지 않을 수 있다.
일 실시예에서, 멀티프로세서 시스템(100)은 허브 제어기(101) 내의 프로세서들 간의 데이터 일관성을 관리한다. 이것은 프로세서들(107, 111) 각각에 대한 LLC 데이터의 관리를 통해 달성될 수 있다. 스누프 필터(103)는 프로세서들(107, 111) 간의 데이터 일관성의 관리에 관여할 수 있다. 스누프 필터(103)는 LLC들(109, 113) 각각에 저장된 데이터의 캐시 일관성 상태 표현을 관리할 수 있는데, 이 캐시 일관성 상태 표현은 LLC(109, 113) 각각 내의 데이터의 구성을 나타낸다. 스누프 필터(103)는 각각의 프로세서(107, 111)로부터의 데이터에 대한 요청을 모니터링할 수 있다. 판독 요청과 같은 데이터 요청은 요청 정보는 물론, 의도된 캐시 상태 정보를 포함할 수 있다. 요청 정보는 예를 들어 요청 타입, 웨이 힌트, 어피니티(affinity) 지시자, 태그 어드레스 및 세트 어드레스를 포함할 수 있다. 스누프 필터는 의도된 캐시 상태 정보 및 요청 정보를 이용하여 최신의 것인 캐시들(109, 113) 각각의 구성의 캐시 일관성 상태 표현을 유지할 수 있다.
도 2는 스누프 필터(103)의 일 실시예의 도면이다. 스누프 필터(103)는 캐시 상태 저장 구조(209)를 포함한다. 일 실시예에서, 캐시 상태 저장 구조는 일관성 레코드를 저장할 수 있는 세트 연상 캐시 또는 유사한 저장 구조와 같은 캐시이다. 캐시 상태 저장 구조(209)는 시스템 내의 프로세서들의 LLC들 각각을 표현하도록 구성될 수 있다. 캐시 상태 저장 구조(209)는 논리적으로 일 그룹의 어피니티들로 세분될 수 있다. 시스템 내의 각각의 프로세서에 대해 하나의 어피니티가 존재할 수 있다. 어피니티는 어피니티가 표현하는 관련 LLC와 동일한 구성 방식으로 구성되는 저장 장치 또는 캐시 상태 저장 구조(209)의 한 섹션일 수 있다.
도 3a는 스누프 필터(103)의 캐시 상태 저장 구조(209) 내의 어피니티의 일 실시예의 도면이다. 각각의 어피니티(211A-211D)는 일 그룹의 '세트들'을 포함할 수 있다. 세트는 일 그룹의 '웨이들'로 구성되는 일 타입의 위치 지시자이다. 웨이는 세트 내의 캐시 라인의 슬롯 또는 위치 지시자이다. 각각의 세트는 임의 수의 웨이를 포함할 수 있다. 일 실시예에서, 각각의 세트는 8개의 웨이를 포함할 수 있다. 각각의 어피니티 내의 세트 및 웨이의 수는 프로세서 내의 LLC들의 대응 구성에 기초하여 결정될 수 있다. 어피니티, 세트 및 웨이의 인덱싱 스킴은 하나의 예시적인 구현이다. 스누프 필터 데이터 구조(209)가 LLC들 각각의 구성을 모델링할 수 있는 임의의 다른 인덱싱 및 구성 스킴이 이용될 수 있다. 편의를 위해, 어피니티, 세트 및 웨이 구성의 실시예들이 설명된다. 그러나 다른 구성 스킴 을 이용하는 다른 실시예들도 이용될 수 있다.
도 3b는 캐시 상태 저장 구조(209)의 하나의 웨이(303) 내의 일관성 레코드의 일 실시예의 도면이다. 일 실시예에서, 각각의 일관성 레코드는 LLC 내의 대응 캐시 엔트리에 대한 정보를 저장할 수 있다. 일관성 레코드(303)는 태그 어드레스 데이터(305), 캐시 상태 데이터(307) 및 버스 지시자 데이터(309)를 포함할 수 있다. 태그 어드레스 데이터(305)는 대응 LLC의 캐시 내의 태그 데이터에 매칭하는 데이터일 수 있다. 예를 들어, 태그 어드레스 데이터(305)는 캐시 라인에 대한 어드레스의 일부일 수 있다. 캐시 상태 데이터(307)는 데이터가 프로세서에 독점적인지, 공유되는지, 무효인지, 변경되는지, 또는 유사한 상태 정보와 같이 LLC 내의 캐시 라인의 상태를 나타내는 데이터일 수 있다. 버스 지시자 데이터(309)는 데이터를 보유하는 LLC가 허브 제어기와 통신하는 버스를 지시하는 데 사용되는 한 세트의 비트들일 수 있다. 버스 지시자 데이터(309)는 시스템에서 이용 가능한 각각의 버스 라인에 대응하는 비트를 가질 수 있거나, 프로세서들이 허브와 통신하는 버스 라인들을 인코딩할 수 있다. 캐시 엔트리는 둘 이상의 LLC 내에 존재할 수 있으며, 따라서 다수의 버스가 LLC 각각 내의 캐시 엔트리와 관련된 상태 데이터를 통신하는 데 사용될 필요가 있을 수 있다.
도 2의 설명으로 돌아가면, 스누프 필터(103)는 프로세서의 각각의 버스에 대한 인터페이스(201, 203)를 통해 각각의 프로세서와 통신할 수 있다. 일례로, 스누프 필터(103)는 개별 버스를 각각 구비한 2개의 프로세서와 통신할 수 있다. 이 예에서, 스누프 필터(103)는 제1 버스를 통해 제1 프로세서와 통신하기 위한 제 1 인터페이스(201) 및 제2 버스를 통해 제2 프로세서와 통신하기 위한 제2 인터페이스(203)를 구비한다.
버스 인터페이스(201, 203)를 통해 프로세서로부터 데이터 요청을 수신할 때, 이 요청은 어피니티 지시자는 물론, '웨이 힌트'를 결정하기 위해 분석 또는 처리될 수 있다. 요청은 판독 요청, 독점을 위한 요청 또는 유사한 데이터 요청일 수 있다. 일 실시예에서, 요청은 요청되는 데이터가 요청 프로세서의 LLC에 저장되는 웨이 위치 또는 웨이 힌트를 지시하는 웨이 번호를 포함할 수 있다. 다른 실시예에서, LLC 내의 희생 엔트리의 일관성 상태와 같은 다른 정보가 제공될 수 있다.
일 실시예에서, 요청 정보는 일관성 엔진(207)에 제공되거나, 캐시 상태 저장 구조(209)에 적용되어, 요청된 데이터에 대응하는 태그 어드레스가 어피니티들(211A-211B) 중 임의의 어피니티에, 따라서 시스템 내의 프로세서들의 LLC들 중 임의의 LLC에 존재하는지를 결정할 수 있다. 이어서, 검색의 결과들은 일관성 엔진(207)에 반환될 수 있다. 일 실시예에서, 검색은 요청된 태그 데이터를 어피니티들 각각에 적용하고 캐시 상태 저장 구조(209)의 세트 연상 특징들을 이용하여 임의의 매칭 태그들의 어피니티 내의 위치를 결정함으로써 수행될 수 있다. 다른 실시예에서는 다른 검색 기술들이 이용될 수 있다.
일관성 엔진은 웨이 힌트, 태그 어드레스 데이터, 버스 또는 프로세서 식별 정보 및 세트 위치 지시와 함께 검색 결과를 분석한다. 일 실시예에서, 세트 위치는 요청 내에 지정되거나, 고정된 일대일 맵핑, 간단한 이진 디코드, 테이블 탐색, 또는 일대일 일관성 맵핑을 제공하기 위한 특수 해싱 함수 디코드일 수 있다. 웨이는 태그 탐색(상위 어드레스 필드 비교)을 이용하여 수행될 수 있거나, 탐색에서 발견되지 않는 경우, pLRU(pseudo-least-recently-used), 완전 또는 부분 웨이 힌트 또는 랜덤을 포함하지만 이에 한정되지 않는 다른 선택 스킴들이 이용될 수 있다.
대안으로, 세트 위치는 세트를 선택하기 위한 대응 프로세서 및 LLC에 의해 적용되는 세트를 선택하기 위한 동일 알고리즘을 적용함으로써 결정될 수 있다. 이러한 방식에서, 세트 지시자 정보는 요청 데이터 내에 명시적으로 포함될 필요가 없게 된다. 랜덤 선택 알고리즘, 라운드 로빈 알고리즘 또는 유사한 알고리즘을 포함하는 임의의 세트 선택 알고리즘이 이용될 수 있다. 다른 실시예에서는 세트 지시자 데이터 또는 유사한 데이터가 요청 내에 포함된다.
일 실시예에서, 일관성 엔진(207)은 입력 데이터를 분석하여, 프로세서로부터 수신된 요청을 전달하는 방법, 스누프 필터 데이터 구조(209)를 갱신하는 방법, 및 적절한 LLC로 전송할 실효 메시지를 생성할지의 여부를 결정한다. 이어서, 다른 프로세서들에 전송될 실효 메시지 및 요청이 적절한 버스 인터페이스(201, 203)로 전송된다. 완료될 메모리에 전송되는 요청들은 중앙 데이터 관리자(CDM; 213)로 전송된다. 중앙 데이터 관리자(213)는 허브 제어기와 시스템 메모리는 물론 다른 장치들 간의 데이터의 전송을 책임 관리한다.
도 4는 데이터 일관성을 유지하기 위해 스누프 필터에 의해 수행되는 프로세스의 일 실시예의 도면이다. 일 실시예에서, 프로세스는 프로세서로부터 요청을 수신함으로써 개시된다(블록 401). 요청은 판독 요청, 독점을 위한 요청, 또는 유사한 데이터 요청일 수 있다. 요청은 요청된 데이터가 존재하는지를 결정하기 위해 스누프 필터의 데이터 구조에 적용될 수 있다(블록 403). 프로세스는 탐색 프로세스, 검색 프로세스 또는 유사한 프로세스일 수 있다.
탐색 프로세스의 결과들이 얻어진 후, 요청은 이행될 적절한 수신처로 전송될 수 있다(블록 405). 요청된 데이터가 데이터 구조 내에서 발견되는 경우에, 요청은 데이터를 포함하는 프로세서 및 캐시로 전송된다. 요청된 데이터를 보유하는 프로세서 또는 캐시는 탐색의 결과들에서 지시되고, 요청에 대한 매치가 발견되는 어피니티에 기초하여 결정될 수 있다. 요청된 데이터가 발견되지 않는 경우에, 요청은 완료될 시스템 메모리로 전송된다. 마찬가지로, 요청된 데이터가 데이터 구조 내에서 발견되지만, 그의 상태 정보가 그것이 무효인 것을 지시하는 경우, 요청은 시스템 메모리에서 완료된다.
요청 프로세서 캐시로 반환될 데이터를 수용하기 위하여, 스누프 필터에 의해 유지되는 캐시의 표현이 갱신된다. 표현은 새로운 엔트리에 대한 공간을 할당함으로써 갱신된다. 요청에 응답하여 갱신하기 위한 어피니티는 요청이 수신된 버스를 검출함으로써 결정된다. 요청은 또한 요청 내에 포함된 웨이 힌트 또는 위치 힌트를 결정하기 위해 분석 또는 처리될 수 있다. 스누프 필터 내에 새로운 엔트리를 저장하기 위한 슬롯은, 요청에 의해 제공되는 웨이 힌트에 기초하고, 요청 프로세서의 세트 선택 알고리즘에 매칭되는 세트 선택 알고리즘을 이용하여 선택된다. 이러한 방식으로, 요청 프로세스의 캐시 및 스누프 필터의 데이터 구조 내의 요청된 데이터에 대해 대응 엔트리들이 할당된다. 이러한 스킴은 데이터 구조가 통상의 캐시보다 작은 것을 허용하며, 임의의 프로세서에 의해 사용 중인 캐시 엔트리를 제거할 가능성을 낮추고, 허브 제어기, 요청 프로세서 및 요청을 수행하는 임의의 프로세서 간의 버스의 대역폭의 사용을 최소화한다.
캐시 내의 선택된 공간이 점유되고 있는지를 결정하기 위한 검사가 이루어진다(블록 409). 슬롯이 점유된 경우, 슬롯은 요청 프로세서 캐시 내의 대응 공간에 데이터가 저장되고 있음을 반영하도록 갱신된다. 데이터는 요청이 요청된 데이터의 위치에 따라 요청이 완료되는 프로세서로부터 또는 메모리로부터 반환될 때 스누프 필터에서 갱신된다. 슬롯이 점유된 경우, 슬롯은 제거된다(블록 411). 제거된 데이터는 실효 메시지가 요청 프로세서로 전송될 때까지 버퍼 내에 임시 저장되어, 그 데이터가 아직 실효되지 않은 경우에 요청 프로세서가 그 데이터를 신뢰하지 않는 것을 보장할 수 있다(블록 415).
데이터가 다른 프로세서로부터 검색되는 경우, 그 프로세서에 대한 엔트리는 그 프로세서에 실효 메시지를 전송함으로써 실효될 수 있다. 예를 들어, 다른 프로세서의 캐시 내의 데이터에 대해 독점을 위한 요청이 수신되는 경우, 데이터가 수신된 후 그 프로세서에 실효 메시지가 전송된다.
도 5a-5d는 스누프 필터 대체 알고리즘의 동작의 일례의 도면이다. 이 예에서, 2개의 중앙 처리 장치(CPU)가 스누프 필터(509)와 통신한다. 2개의 CPU는 듀얼 코어이고, 각각의 코어당 하나씩, 복수의 캐시를 구비할 수 있다. 스누프 필터(509)는 한 세트의 대응 어피니티(511A-511D)를 구비한다. 이 예에서, 어피니 티(511A)는 캐시(505)에 대응하고, 어피니티(511C)는 캐시(507)에 대응한다. 도 5a에서, 캐시(505)는 데이터 항목 A를 포함하고, 캐시(507)는 데이터 항목 C를 포함한다. 캐시(505)에 대응하는 어피니티(511A)는 캐시(505) 내의 항목 A의 위치에 대응하는 위치, 즉 세트 1, 웨이 2에 항목 A의 지시자를 포함한다. 마찬가지로, 캐시(507)는 세트 1, 웨이 1에 항목 C를 포함한다. 어피니티(511C)는 대응하는 세트 1, 웨이 1에 항목 C의 지시자를 포함한다.
도 5b는 프로세서(501)에 의한 데이터 항목 B에 대한 요청 및 프로세서(503)에 의한 데이터 항목 D에 대한 요청의 개시를 나타내는 예의 도면이다. 프로세서(501)는 요청된 항목을 저장하기 위한 세트 1, 웨이 2를 선택한다. LLC(505) 내의 이 위치의 선택은 라운드 로빈, LRU 또는 유사한 대체 알고리즘 또는 이들의 조합을 포함하는 임의의 알고리즘에 기초할 수 있다. 마찬가지로, 프로세서(503)는 요청된 항목 D를 저장하기 위한 세트 1, 웨이 1을 선택한다.
도 5c는 요청이 이행된 후의 시스템의 상태를 나타내는 예의 도면이다. 이 경우, 데이터 항목들 B 및 D는 스누프 필터(509) 내에 존재하지 않고 시스템 메모리에서 완료되어, LLC들(505, 507) 내의 선택된 위치들에 저장되었다. 또한, 어피니티들(511A, 511C) 내의 대응 엔트리들은 웨이 힌트들 2 및 1을 각각 포함하는 제공된 요청 데이터 및 각각의 프로세서(501, 503)의 세트 선택 알고리즘에 대한 지식을 이용하여 갱신되었다. 제거된 데이터 항목들 A 및 C는 백 실효 버퍼(513) 내에 임시 저장된다.
도 5d는 프로세서들(501, 503) 및 LLC들(505, 507)에 대한 백 실효 메시지의 전송을 나타내는 예의 도면이다. 데이터 항목들 A 및 C에 대한 백 실효 메시지들은 버스 지시자 데이터(309; 도 3b)에 의해 지시되는 바와 같이 제거된 스누프 필터 엔트리가 참조하는 어느 하나의 프로세서(501, 503)로 전송될 수 있다. 이들 메시지는, 스누프 필터가 프로세서들(501, 503) 내의 캐시 라인들을 완전히 추적하지 못하거나, 웨이 힌트가 적절히 결정되지 못하거나, 세트 선택 알고리즘이 프로세서들(501, 503)과 스누프 필터(509) 간에 매칭되지 못하거나, 데이터가 프로세서들(501, 503) 내의 하위 레벨 캐시들(도시되지 않음)에 캐시되는 경우에 데이터 일관성을 보증한다.
도 3a를 다시 참조하면, 다른 실시예에서, 각각의 어피니티 내의 세트들의 수는 프로세서 내의 LLC들의 대응 구성에 적어도 부분적으로 기초하여 결정될 수 있으며, 어피니티의 각각의 세트 내의 웨이들의 수는 프로세서들의 대응 LLC들 내의 웨이들의 감소된 세트일 수 있다. 이 실시예에서, 각각의 웨이는 LLC 내의 대응 캐시 엔트리 위치에 대한 데이터를 저장할 수 있으며, 요청된 캐시 엔트리가 발견되지 않는 경우에 대응 캐시 엔트리가 도출될 수 있다.
도 6을 참조하면, 일례로서, 프로세서(601)는 하나 이상의 캐시(605)를 포함할 수 있으며, 프로세서(603)는 하나 이상의 캐시(607)를 포함할 수 있다(도시된 프로세서당 단 하나의 캐시). 스누프 필터(609)는 프로세서(601, 603)에 각각 대응하는 한 세트의 어피니티들(611A-611B)을 포함할 수 있다. 이 예에서, 어피니티(611A)는 캐시(605)에 대응하고, 어피니티(611B)는 캐시(607)에 대응한다. 이 예에서, 각각의 캐시(605, 607)는 M개의 세트 및 N개의 웨이를 포함한다. 또한, 각각의 대응 어피니티(611A, 611B)는 M개의 세트 및 N-X개의 웨이(여기서, X는 0보다 큰 정수)를 포함하여, 각각의 어피니티(611A, 611B) 내에는 각각의 대응 캐시(605, 607)보다 적은 세트당 웨이가 존재하게 된다. 도시된 예에서, M=5, N=10, X=5로 하여, 각각의 캐시(605, 607)가 5개의 세트를 포함하고, 각각의 세트가 10개의 웨이를 포함하며, 각각의 어피니티(611A, 611B)가 5개의 세트를 포함하고, 각각의 세트가 (감소된) 5개의 웨이를 포함하게 한다.
도 7은 이 실시예에 따른 방법을 나타내는 흐름도이다. 방법은 블록 700에서 시작하고, 블록 702로 계속되어, 방법은 복수의 프로세서 중 하나의 프로세서로부터 데이터 요청을 수신하는 단계를 포함할 수 있다. 도 6을 다시 참조하면, 일례로, 프로세서(601)는 데이터 항목 A를 요청할 수 있다.
블록 704에서, 방법은 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하는 단계를 포함할 수 있다. 일 실시예에서, 캐시 엔트리 위치는 세트 및 웨이를 포함할 수 있다. 일 실시예에서, 요청은 웨이 힌트를 포함할 수 있다. 다른 실시예에서, 세트 및 웨이 양자는 요청에 포함될 수 있다.
도 6에서, 캐시 엔트리 위치는 세트 1, 웨이 2를 포함할 수 있다. 이 예에서, 캐시 미스가 존재하는 경우(즉, 요청된 데이터가 스누프 필터(609) 내에 존재하지 않고, 따라서 임의의 프로세서 캐시들(605, 607) 내에서 발견되지 않거나, 스누프 필터(609) 내에 존재하지만, 무효로 표시된 경우), 데이터 요청은 시스템 메모리에서 완료될 수 있다.
블록 706에서, 방법은 프로세서에 대응하는 캐시 내의 캐시 엔트리 위치에 데이터를 저장하는 단계를 포함할 수 있다.
도 6을 다시 참조하면, 시스템 메모리로부터의 데이터 항목 A의 검색시, 데이터 항목 A는 결정된 프로세서 캐시(605)의 캐시 엔트리 위치에 저장될 수 있다.
블록 708에서, 캐시 미스가 존재하는 경우, 방법은 블록들 708A 및 708B 중 하나에 따라 스누프 필터에 데이터에 대응하는 일관성 레코드를 저장하는 단계를 포함할 수 있다.
블록 708A에서, 방법은 대응 어피니티에서 캐시 엔트리 위치가 발견되는 경우에 스누프 필터 내의 대응 어피니티의 캐시 엔트리 위치에 일관성 레코드를 저장하는 단계를 포함할 수 있다.
도 6을 다시 참조하면, 이 경우에 캐시 엔트리 위치는 대응 어피니티(611A)(즉, 세트 1, 웨이 2)에서 발견되므로, 대응 어피니티(611A)는 대응 어피니티(611A)의 캐시 엔트리 위치에 일관성 레코드 CRA(프로세서(601) 내의 데이터 항목 A에 대응)를 추가로 저장함으로써 갱신될 수 있다. 일 실시예에서, 프로세서 캐시들(605, 607)의 각각의 세트는 대응 어피니티들(611A, 611B) 내에 복제되지만, 각각의 웨이 번호는 복제되지 않으므로, 요청된 캐시 엔트리 위치는 웨이 번호(즉, 웨이 2)가 캐시(605)에 대응하는 어피니티(611A) 내에 위치하는 경우에 발견된다.
블록 708B에서, 방법은 대응 어피니티에서 캐시 엔트리 위치가 발견되지 않는 경우에 대응 어피니티의 유도된 캐시 엔트리 위치에 일관성 레코드를 저장하는 단계를 포함할 수 있다.
도 6을 다시 참조하면, 시스템 메모리로부터의 데이터 항목 B의 검색시, 데 이터 항목 B는 프로세서 캐시(607)의 선택된 캐시 엔트리 위치에 저장될 수 있다. 이 예에서, 캐시 엔트리 위치는 대응 어피니티(611B)(즉, 세트 2, 웨이 5)에서 발견되지 않으므로, 대응 어피니티(611B)는 대응 어피니티(611B)의 유도된 캐시 엔트리 위치에 일관성 레코드 CRB(데이터 항목 B에 대응)를 추가로 저장함으로써 갱신될 수 있다. 일 실시예에서, 프로세서 캐시들(605, 607)의 각각의 세트는 대응 어피니티들(611A, 611B) 내에 복제되지만, 각각의 웨이 번호는 복제되지 않으므로, 요청된 캐시 엔트리 위치는 웨이 번호(즉, 웨이 5)가 캐시(607)에 대응하는 어피니티(611B)에 위치하지 않는 경우에 발견되지 않는다.
예를 들어, 캐시에 대응하는 어피니티의 유도된 캐시 엔트리 위치에 일관성 레코드를 저장하는 단계는 어피니티 내의 임의로 선택된 웨이에 일관성 레코드를 저장하는 단계를 포함할 수 있다. 이러한 웨이는 선택될 수 있는 어피니티 내의 임의의 웨이일 수 있다. 예를 들어, 어피니티(611B)(5개의 웨이를 가정함)에서, 이것은 W0, W1, W2, W3 또는 W4를 포함할 수 있다.
다른 예로서, 캐시에 대응하는 어피니티의 유도된 캐시 엔트리 위치에 일관성 레코드를 저장하는 단계는 웨이 번호를 계산하는 단계를 포함할 수 있다. 이것은 웨이 번호, 및 관련 어피니티의 웨이들의 수에 적어도 부분적으로 기초하여 웨이 번호를 계산하는 단계를 포함할 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 유도된 웨이 번호는 이 사례에서 0인 어피니티(611B) 내의 웨이들의 수(어피니티(611B) 내의 5개 웨이)를 법으로 하여 선택된 웨이 번호(예를 들어, 5)를 포함할 수 있다. 따라서, 도 6에서, 데이터 항목 B는 세트 2, 웨이 0에 저장될 수 있다. 물론, 다른 계산 방법들이 이용될 수도 있다.
방법은 블록 710에서 종료될 수 있다.
도 8a는 데이터 항목 A가 공유될 수 있는 시나리오를 나타낸다. 이 예에서, 데이터 항목 A는 먼저 프로세서(601)에 의해 요청되고, 프로세서 캐시(605)의 세트 1, 웨이 2로 표현되는 캐시 엔트리 위치에 저장될 수 있다(800A). 대응 어피니티(611A)는 어피니티(611A)의 결정된 캐시 엔트리 위치에 일관성 레코드 CRA(데이터 항목 A에 대응)를 추가로 저장함으로써 갱신될 수 있다(802A). 이어서, 데이터 항목 A는 프로세서(603)에 의해 요청되고, 프로세서 캐시(607)의 세트 1, 웨이 1로 표현되는 캐시 엔트리 위치에 저장될 수 있다(804A).
일 실시예에서, 데이터 항목 A에 대응하는 일관성 레코드 CRA는 어피니티(611A)에 이미 저장되어 있으므로, 대응 어피니티(611B)는 갱신되지 않는다. 이 실시예에서, 데이터 항목에 액세스하는 제1 프로세서의 캐시에 대응하는 어피니티만이 갱신된다. 도 8b는 캐시들(605, 607) 및 대응 어피니티들(611A, 611B)의 결과적인 상태를 나타낸다.
도 8c를 참조하면, 프로세서(601)가 이어서 데이터 항목 C를 요청하고, 데이터 항목 C를 저장하기 위해 프로세서 캐시(605)의 세트 1, 웨이 2로 표현되는 캐시 엔트리 위치를 선택하는 경우, 데이터 항목 C의 검색시, 데이터 항목 C는 프로세서 캐시(605)의 결정된 캐시 엔트리 위치에 저장될 수 있다(800C). 이 캐시 엔트리 위치는 점유되어 있으므로(즉, 데이터 항목 A를 포함하고 있음), 데이터 항목 A는 캐시(605) 내의 캐시 엔트리 위치로부터 제거될 수 있다(802C). 또한, 대응 일관 성 레코드 CRA가 대응 어피니티(611A)의 캐시 엔트리 위치로부터 제거될 수 있고(804C), 데이터 항목 C에 대응하는 일관성 레코드 CRC가 대응 어피니티(611A)의 캐시 엔트리 위치에 저장될 수 있다(806C). 이어서, 제거된 데이터 항목 A는 백 실효 버퍼(613)에 임시 저장될 수 있으며(808C), 백 실효 메시지가 데이터 항목 A를 공유하는 하나 이상의 프로세서로 전송되어, 대응 캐시들로부터 데이터 항목 A가 제거될 수 있다(810C). 도 8d는 캐시들(605, 607) 및 대응 어피니티들(611A, 611B)의 결과적인 상태를 나타낸다. 백 실효의 결과로서, 프로세서(603)(및 데이터 항목 A가 백 실효 메시지에 앞서 이전에 캐시된 임의의 다른 프로세서들)에 의한 데이터 항목 A의 후속 요청이 캐시 미스를 유발할 수 있다. 높은 공유 작업 부하 환경에서, 이것은 캐시 미스 레이트를 크게 증가시킬 수 있다.
도 9는 본 발명의 다른 실시예에 따른 방법을 나타낸다. 방법은 블록 900에서 시작하고, 블록 902로 계속되어, 방법은 복수의 프로세서 중 하나의 프로세서로부터 캐시 엔트리 위치를 포함하는 데이터 요청을 수신하는 단계를 포함할 수 있다. 일 실시예에서, 캐시 엔트리 위치는 세트 및 웨이를 포함할 수 있다.
블록 904에서, 방법은 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하는 단계를 포함할 수 있다. 일 실시예에서, 캐시 엔트리 위치는 세트 및 웨이를 포함할 수 있다. 일 실시예에서, 요청은 웨이 힌트를 포함할 수 있다. 다른 실시예에서, 세트 및 웨이 양자는 요청에 포함될 수 있다.
도 6에서, 캐시 엔트리 위치는 세트 1, 웨이 2를 포함할 수 있다. 이 예에서, 캐시 미스가 존재하는 경우(즉, 요청된 데이터가 스누프 필터(609) 내에 존재 하지 않고, 따라서 임의의 프로세서 캐시들(605, 607)에서 발견되지 않거나, 스누프 필터(609) 내에 존재하지만, 무효로 표시되어 있는 경우), 데이터 요청은 시스템 메모리에서 완료될 수 있다.
블록 906에서, 방법은 프로세서에 대응하는 캐시 내의 캐시 엔트리 위치에 데이터를 저장하는 단계를 포함할 수 있다.
도 6을 다시 참조하면, 시스템 메모리로부터의 데이터 항목 A의 검색시, 데이터 항목 A는 프로세서 캐시(605)의 결정된 캐시 엔트리 위치에 저장될 수 있다.
블록 908에서, 방법은 캐시에 대응하는 어피니티에 데이터에 대응하는 일관성 레코드를 저장하는 단계를 포함할 수 있다. 도 7에서 설명된 실시예와 달리, 일관성 레코드는 캐시 미스의 발생과 관계 없이 (예를 들어, 요청 프로세서의) 어피니티에 저장될 수 있다.
이 실시예에서, 캐시 히트가 발생하는 경우, 일관성 레코드는 요청 프로세서의 캐시에 대응하는 어피니티에 저장될 수 있다. 일 실시예에서, 어피니티의 특정 캐시 엔트리 위치는 웨이-힌트 대체 방침(완전 또는 부분)에 따라 선택될 수 있다. 구체적으로, 일 실시예에서, 캐시 히트는 복수의 프로세서 중 다른 프로세서의 다른 캐시의 다른 캐시 엔트리 위치에서 발생할 수 있다. 이 경우, 요청된 데이터에 대응하는 일관성 레코드는 다른 캐시(즉, 요청된 데이터를 포함하는 캐시)의 다른 캐시 엔트리 위치의 데이터를 요청 프로세서의 캐시에 대응하는 어피니티의 캐시 엔트리 위치의 데이터와 스와핑함으로써 요청 프로세서의 캐시에 대응하는 어피니티의 캐시 엔트리 위치에 저장된다. 즉, 요청 프로세서의 캐시에 대응하는 어피니 티 내의 일관성 레코드는 요청된 데이터가 저장되는 캐시에 대응하는 어피니티로 이동된다.
또한, 이 실시예에서, 캐시 미스가 발생하는 경우, 일관성 레코드는, 캐시 엔트리 위치가 대응 어피니티에서 발견되는지에 따라 캐시 엔트리 위치 또는 유도된 캐시 엔트리 위치에 저장될 수 있다. 대응 어피니티에서 캐시 엔트리 위치가 발견되는 경우, 일관성 레코드는 캐시에 대응하는 어피니티의 캐시 엔트리 위치에 저장될 수 있다. 반면, 대응 어피니티에서 캐시 엔트리 위치가 발견되지 않는 경우에는, 일관성 레코드는 캐시에 대응하는 어피니티의 유도된 캐시 엔트리 위치에 저장될 수 있다.
대안으로, 예를 들어 랜덤 또는 pLRU를 포함하는 다른 대체 방책들에 따라 특정 캐시 엔트리 위치가 선택될 수 있다.
방법은 블록 910에서 종료될 수 있다.
도 10a-10d는 아래에서 설명되며, 부분적인 웨이-힌트 대체 방책을 이용하는 도 9의 방법을 설명한다.
도 10a에서, 먼저 데이터 항목 A가 프로세서(601)에 의해 요청되고, 프로세서 캐시(605)의 세트 1, 웨이 2로 표현되는 캐시 엔트리 위치에 저장될 수 있다(1000A). 대응 어피니티(611A)는, 어피니티(611A)의 결정된 캐시 엔트리 위치에 데이터 항목 A에 대응하는 일관성 레코드 CRA를 추가로 저장함으로써 갱신될 수 있다(1002A). 이어서, 데이터 항목 A는 프로세서(603)에 의해 요청되고, 프로세서 캐시(607)의 세트 1, 웨이 1로 표현되는 캐시 엔트리 위치에 저장될 수 있 다(1004A). 이 실시예에서, 요청 프로세서(603)의 캐시(607)에 대응하는 어피니티(611B)가 갱신될 수 있다. 이 경우, 캐시 히트가 존재하므로(즉, 데이터 항목 A가 프로세서(601)에 대응하는 캐시(605) 내에 있으므로), 요청된 데이터 항목에 대응하는 일관성 레코드는 프로세서의 캐시에 대응하는 어피니티 내의 결정된 캐시 엔트리 위치의 일관성 레코드를 다른 프로세서의 캐시에 대응하는 어피니티 내의 다른 캐시 엔트리 위치의 일관성 레코드와 스와핑함으로써 저장될 수 있다. 도 10b는 캐시들(605, 607) 및 대응 어피니티들(611A, 611B)의 결과적인 상태를 나타낸다.
도 10c를 참조하면, 프로세서(601)가 데이터 항목 C를 요청하고, 데이터 항목 C를 저장하기 위한 프로세서 캐시(605)의 세트 1, 웨이 2로 표현되는 캐시 엔트리 위치를 선택하는 경우, 캐시 미스 발생시, 데이터 항목 C는 시스템 메모리로부터 검색되고, 프로세서 캐시(605)의 결정된 캐시 엔트리 위치에 저장될 수 있다(1000C). 이 캐시 엔트리 위치는 점유되어 있으므로(즉, 데이터 항목 A를 포함하므로), 데이터 항목 A는 캐시(605) 내의 캐시 엔트리 위치로부터 제거될 수 있다(1002C). 그러나 이 경우에는 일관성 레코드 CRA가 캐시(605)에 대응하는 어피니티(즉, 어피니티 611A)로부터 제거될 필요가 없는데, 이는 일관성 레코드 CRA가 데이터 항목을 최종 요청한 프로세서, 즉 프로세서(603)의 어피니티 및 이 예에서 대응 어피니티(611B)로 이동되었기 때문이다. 결과적으로, 최종 요청 프로세서(603)가 이어서 데이터 항목 A를 요청할 때(즉, 프로세서는 데이터 항목 A를 요청할 가능성이 가장 높음), 캐시 미스가 발생하지 않게 된다. 도 10d는 캐시 들(605, 607) 및 대응 어피니티들(611A, 611B)의 결과적인 상태를 나타낸다.
도 10a-10d에서, 도 9의 흐름도에 설명된 스와핑 스킴에서 선택되는 희생자는 부분 웨이-힌트 대체 방책에 기초하여 결정될 수 있다. 그러나 이러한 스와핑 스킴은 완전 웨이-힌트 대체, 랜덤 대체 및 pLRU 대체 방책들을 포함하지만 이에 한정되지 않는 다른 대체 방책들에도 적용될 수 있다.
일 실시예에서, 스누프 필터 및 그의 컴포넌트들은 하드웨어 장치들로 구현된다. 다른 실시예에서, 이들 컴포넌트는 소프트웨어(예를 들어, 마이크로코드, 어셈블리 언어 또는 보다 하이 레벨의 언어)로 구현될 수 있다. 이들 소프트웨어 구현은 머신 판독 가능 매체에 저장될 수 있다. "머신 판독 가능" 또는 "머신 액세스 가능" 매체는 머신(예를 들어, 컴퓨터 네트워크 장치, 개인 휴대 단말기 제작 도구, 하나 이상의 프로세스를 구비한 임의의 장치 등)에 의해 액세스 가능한 형태로 정보를 저장 또는 전송할 수 있는 임의의 매체 또는 메카니즘을 포함할 수 있다. 머신 판독 가능 또는 액세스 가능 매체의 예는 ROM, RAM, 자기 저장 매체, 광학 저장 매체, 물리 저장 매체, 플래시 메모리 또는 유사한 매체와 같은 기록 가능 및 기록 불가능 매체를 포함한다.
전술한 명세서에서, 본 발명의 실시예들은 그의 특정 실시예들을 참조하여 설명되었다. 그러나 첨부된 청구범위에 설명되는 바와 같은 본 발명의 보다 넓은 사상 및 범위를 벗어나지 않고 그에 대한 다양한 수정 및 변경이 이루어질 수 있음이 자명하다. 따라서, 명세서 및 도면은 제한적이 아니라 예시적인 것으로 간주되어야 한다.
도 1은 웨이-힌트 스누프 필터를 포함하는 시스템의 일 실시예의 도면.
도 2는 웨이-힌트 스누프 필터의 일 실시예의 도면.
도 3a는 웨이-힌트 스누프 필터에서의 어피니티의 일 실시예의 도면.
도 3b는 웨이-힌트 스누프 필터에서의 캐시 엔트리의 일 실시예의 도면.
도 4는 웨이-힌트들에 기초한 캐시 관리 프로세스의 일 실시예의 흐름도.
도 5a는 캐시 관리 프로세스의 일례의 도면.
도 5b는 캐시 관리 프로세스의 일례의 도면.
도 5c는 캐시 관리 프로세스의 일례의 도면.
도 5d는 캐시 관리 프로세스의 일례의 도면.
도 6은 다른 실시예에 따른 캐시 관리 프로세스의 일례의 도면.
도 7은 도 6에 도시된 다른 실시예에 따른 방법을 나타내는 흐름도.
도 8a-8d는 일 실시예에 따른 라인 배치 프로세스를 나타내는 도면.
도 9는 도 6에 도시된 발명의 다른 실시예에 따른 방법을 나타내는 흐름도.
도 10a-10d는 다른 실시예에 따른 라인 배치 프로세스를 나타내는 도면.
<도면의 주요부분에 대한 부호의 설명>
101: 허브 제어기
103: 스누프 필터
105: 메모리
107, 111: 프로세서
119: 다른 장치들
205: 웨이 선택 유닛
207: 일관성 엔진
211: 어피니티

Claims (24)

  1. 복수의 프로세서 중 하나의 프로세서로부터 데이터 요청을 수신하는 단계;
    상기 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하는 단계;
    상기 프로세서에 대응하는 캐시 내의 상기 캐시 엔트리 위치에 상기 데이터를 저장하는 단계; 및
    상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티(affinity)에 저장하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 단계는, 상기 데이터를 상기 캐시에 대응하는 어피니티 내의 임의로 선택된 캐시 엔트리 위치에 저장하는 단계를 포함하는 방법.
  3. 제1항에 있어서, 상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 단계는, 상기 데이터를 상기 캐시에 대응하는 어피니티 내의 웨이-힌트 대체 방책(way-hint replacement policy)에 따라 선택된 캐시 엔트리 위치에 저장하는 단계를 포함하는 방법.
  4. 제3항에 있어서, 상기 복수의 프로세서 중 다른 프로세서에 대응하는 다른 캐시의 다른 캐시 엔트리 위치에서 캐시 히트의 발생을 판정하는 단계를 더 포함하고, 상기 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 단계는, 상기 캐시에 대응하는 어피니티 내의 상기 캐시 엔트리 위치의 일관성 레코드를 상기 다른 캐시에 대응하는 어피니티 내의 다른 캐시 엔트리 위치의 일관성 레코드와 스와핑하는 단계를 포함하는 방법.
  5. 제3항에 있어서,
    캐시 미스의 발생을 판정하는 단계를 추가적으로 포함하고,
    상기 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 단계는,
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되면, 상기 어피니티의 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 단계; 및
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되지 않으면, 상기 어피니티의 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서, 상기 캐시 엔트리 위치는 세트(set) 및 웨이(way)를 포함하는 방법.
  7. 제6항에 있어서, 상기 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저 장하는 단계는, 상기 어피니티 내의 임의로 선택된 웨이에 상기 일관성 레코드를 저장하는 단계를 포함하는 방법.
  8. 제6항에 있어서, 상기 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 단계는, 웨이 번호를 계산하는 단계를 포함하는 방법.
  9. 복수의 프로세서 중 하나의 프로세서로부터 데이터 요청을 수신하고,
    상기 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하고,
    상기 프로세서에 대응하는 캐시 내의 상기 캐시 엔트리 위치에 상기 데이터를 저장하고,
    상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하도록
    동작할 수 있는 스누프 필터를 포함하는 장치.
  10. 제9항에 있어서, 상기 스누프 필터는 상기 데이터를 상기 캐시에 대응하는 어피니티 내의 임의로 선택된 캐시 엔트리 위치에 저장함으로써 상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 장치.
  11. 제9항에 있어서, 상기 스누프 필터는 상기 데이터를 상기 캐시에 대응하는 어피니티 내의 웨이-힌트 대체 방책에 따라 선택된 캐시 엔트리 위치에 저장함으로 써 상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 장치.
  12. 제11항에 있어서, 상기 스누프 필터는 상기 복수의 프로세서 중 다른 프로세서에 대응하는 다른 캐시의 다른 캐시 엔트리 위치에서 캐시 히트의 발생을 판정하도록 추가적으로 동작할 수 있고, 상기 스누프 필터는 상기 캐시에 대응하는 어피니티 내의 상기 캐시 엔트리 위치의 일관성 레코드를 상기 다른 캐시에 대응하는 어피니티 내의 다른 캐시 엔트리 위치의 일관성 레코드와 스와핑함으로써 상기 캐시에 대응하는 어피니티에 상기 일관성 레코드를 저장하는 장치.
  13. 제11항에 있어서,
    상기 스누프 필터는 캐시 미스의 발생을 판정하도록 추가적으로 동작할 수 있고,
    상기 스누프 필터는,
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되면, 상기 어피니티의 캐시 엔트리 위치에 상기 일관성 레코드를 저장하고,
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되지 않으면, 상기 어피니티의 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장함으로써
    상기 캐시에 대응하는 어피니티에 상기 일관성 레코드를 저장하는 장치.
  14. 제13항에 있어서, 상기 캐시 엔트리 위치는 세트 및 웨이를 포함하고, 상기 스누프 필터는 웨이 번호를 계산함으로써 상기 일관성 레코드를 유도된 캐시 엔트리 위치에 저장하는 장치.
  15. 스태틱 랜덤 액세스 메모리(SRAM);
    상기 SRAM에 결합되는 복수의 프로세서; 및
    상기 복수의 프로세서에 결합되는 칩셋
    을 포함하고,
    상기 칩셋은,
    상기 SRAM으로부터 데이터에 액세스하고,
    복수의 프로세서 중 하나의 프로세서로부터 데이터 요청을 수신하고,
    상기 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하고,
    상기 프로세서에 대응하는 캐시 내의 상기 캐시 엔트리 위치에 상기 데이터를 저장하고,
    상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하도록 동작할 수 있는 스누프 필터
    를 포함하는 시스템.
  16. 제15항에 있어서, 상기 스누프 필터는 상기 캐시에 대응하는 어피니티 내의 웨이-힌트 대체 방책에 따라 선택된 캐시 엔트리 위치에 상기 데이터를 저장함으로 써 상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 시스템.
  17. 제16항에 있어서, 상기 스누프 필터는 상기 복수의 프로세서 중 다른 프로세서에 대응하는 다른 캐시의 다른 캐시 엔트리 위치에서 캐시 히트의 발생을 판정하도록 추가적으로 동작할 수 있고, 상기 스누프 필터는 상기 캐시에 대응하는 어피니티 내의 상기 캐시 엔트리 위치의 일관성 레코드를 상기 다른 캐시에 대응하는 어피니티 내의 상기 다른 캐시 엔트리 위치의 일관성 레코드와 스와핑함으로써 상기 캐시에 대응하는 어피니티에 상기 일관성 레코드를 저장하는 시스템.
  18. 제16항에 있어서,
    상기 스누프 필터는 캐시 미스의 발생을 판정하도록 추가적으로 동작할 수 있고,
    상기 스누프 필터는,
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되면, 상기 어피니티의 캐시 엔트리 위치에 상기 일관성 레코드를 저장하고,
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되지 않으면, 상기 어피니티의 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장함으로써
    상기 캐시에 대응하는 어피니티에 상기 일관성 레코드를 저장하는 시스템.
  19. 제18항에 있어서, 상기 캐시 엔트리 위치는 세트 및 웨이를 포함하고, 상기 스누프 필터는 웨이 번호를 계산함으로써 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 시스템.
  20. 명령들이 저장되어 있는 제품으로서, 상기 명령들은 머신에 의해 실행될 때,
    복수의 프로세서 중 하나의 프로세서로부터 데이터 요청을 수신하고,
    상기 요청에 적어도 부분적으로 기초하여 캐시 엔트리 위치를 결정하고,
    상기 프로세서에 대응하는 캐시 내의 상기 캐시 엔트리 위치에 상기 데이터를 저장하고,
    상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하도록 하는 제품.
  21. 제20항에 있어서, 상기 데이터에 대응하는 일관성 레코드를 상기 캐시에 대응하는 어피니티에 저장하는 동작은, 상기 데이터를 상기 캐시에 대응하는 어피니티 내의 웨이-힌트 대체 방책에 따라 선택된 캐시 엔트리 위치에 저장하는 동작을 포함하는 제품.
  22. 제21항에 있어서, 상기 복수의 프로세서 중 다른 프로세서에 대응하는 다른 캐시의 다른 캐시 엔트리 위치에서 캐시 히트의 발생을 판정하는 동작을 추가적으로 포함하고, 상기 캐시에 대응하는 어피니티에 상기 일관성 레코드를 저장하는 동 작은, 상기 캐시에 대응하는 어피니티 내의 상기 캐시 엔트리 위치의 일관성 레코드를 상기 다른 캐시에 대응하는 어피니티 내의 상기 다른 캐시 엔트리 위치의 일관성 레코드와 스와핑하는 동작을 포함하는 제품.
  23. 제21항에 있어서,
    캐시 미스의 발생을 판정하는 동작을 추가적으로 포함하고,
    상기 캐시에 대응하는 어피니티에 상기 일관성 레코드를 저장하는 동작은,
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되면, 상기 어피니티의 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 동작; 및
    상기 캐시 엔트리 위치가 대응하는 어피니티에서 발견되지 않으면, 상기 어피니티의 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 동작
    을 포함하는 제품.
  24. 제23항에 있어서, 상기 캐시 엔트리 위치는 세트 및 웨이를 포함하고, 상기 유도된 캐시 엔트리 위치에 상기 일관성 레코드를 저장하는 동작은 웨이 번호를 계산하는 동작을 포함하는 제품.
KR1020070129626A 2006-12-14 2007-12-13 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체 KR100978156B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/638,851 US8055851B2 (en) 2006-12-14 2006-12-14 Line swapping scheme to reduce back invalidations in a snoop filter
US11/638,851 2006-12-14

Publications (2)

Publication Number Publication Date
KR20080055681A true KR20080055681A (ko) 2008-06-19
KR100978156B1 KR100978156B1 (ko) 2010-08-25

Family

ID=38962285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070129626A KR100978156B1 (ko) 2006-12-14 2007-12-13 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체

Country Status (6)

Country Link
US (1) US8055851B2 (ko)
KR (1) KR100978156B1 (ko)
CN (1) CN101236527B (ko)
DE (1) DE102007052853B4 (ko)
GB (1) GB2444818B (ko)
TW (1) TWI385514B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109624A1 (en) * 2006-11-03 2008-05-08 Gilbert Jeffrey D Multiprocessor system with private memory sections
US8015365B2 (en) * 2008-05-30 2011-09-06 Intel Corporation Reducing back invalidation transactions from a snoop filter
US8782347B2 (en) * 2009-06-26 2014-07-15 Intel Corporation Controllably exiting an unknown state of a cache coherency directory
US8301842B2 (en) * 2009-08-26 2012-10-30 Via Technologies, Inc. Efficient pseudo-LRU for colliding accesses
US9558119B2 (en) * 2010-06-23 2017-01-31 International Business Machines Corporation Main memory operations in a symmetric multiprocessing computer
US8489822B2 (en) 2010-11-23 2013-07-16 Intel Corporation Providing a directory cache for peripheral devices
CN102819420B (zh) * 2012-07-31 2015-05-27 中国人民解放军国防科学技术大学 基于命令取消的高速缓存流水线锁步并发执行方法
US9086980B2 (en) 2012-08-01 2015-07-21 International Business Machines Corporation Data processing, method, device, and system for processing requests in a multi-core system
US9535848B2 (en) * 2014-06-18 2017-01-03 Netspeed Systems Using cuckoo movement for improved cache coherency
US9639470B2 (en) * 2014-08-26 2017-05-02 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9727466B2 (en) * 2014-08-26 2017-08-08 Arm Limited Interconnect and method of managing a snoop filter for an interconnect
US9507716B2 (en) * 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US10417128B2 (en) * 2015-05-06 2019-09-17 Oracle International Corporation Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches
JP6451538B2 (ja) * 2015-07-22 2019-01-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20170185515A1 (en) * 2015-12-26 2017-06-29 Bahaa Fahim Cpu remote snoop filtering mechanism for field programmable gate array
NO345417B1 (en) 2019-03-22 2021-01-18 Numascale As Snoop filter device
US11334495B2 (en) * 2019-08-23 2022-05-17 Arm Limited Cache eviction

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US6647466B2 (en) * 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US6857048B2 (en) * 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7590804B2 (en) 2005-06-28 2009-09-15 Intel Corporation Pseudo least recently used replacement/allocation scheme in request agent affinitive set-associative snoop filter

Also Published As

Publication number Publication date
TW200830098A (en) 2008-07-16
CN101236527B (zh) 2012-09-05
US20080147986A1 (en) 2008-06-19
CN101236527A (zh) 2008-08-06
TWI385514B (zh) 2013-02-11
KR100978156B1 (ko) 2010-08-25
GB2444818A (en) 2008-06-18
US8055851B2 (en) 2011-11-08
GB2444818B (en) 2010-08-25
DE102007052853B4 (de) 2018-09-27
DE102007052853A1 (de) 2008-07-03
GB0723332D0 (en) 2008-01-09

Similar Documents

Publication Publication Date Title
KR100978156B1 (ko) 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체
US10204051B2 (en) Technique to share information among different cache coherency domains
US7277992B2 (en) Cache eviction technique for reducing cache eviction traffic
US7698508B2 (en) System and method for reducing unnecessary cache operations
US7962694B2 (en) Partial way hint line replacement algorithm for a snoop filter
US6304945B1 (en) Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
US7711901B2 (en) Method, system, and apparatus for an hierarchical cache line replacement
US20070073974A1 (en) Eviction algorithm for inclusive lower level cache based upon state of higher level cache
KR20170098187A (ko) 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법
US20090094418A1 (en) System and method for achieving cache coherency within multiprocessor computer system
WO2002073417A1 (en) State-based allocation and replacement for improved hit ratio in directory caches
US20020169935A1 (en) System of and method for memory arbitration using multiple queues
US20070233965A1 (en) Way hint line replacement algorithm for a snoop filter
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
US8244985B2 (en) Store performance in strongly ordered microprocessor architecture
CN106164874B (zh) 多核系统中数据访问者目录的访问方法及设备
EP3688597B1 (en) Preemptive cache writeback with transaction support
EP3724774B1 (en) Rinsing cache lines from a common memory page to memory
US20230100746A1 (en) Multi-level partitioned snoop filter
CN113778693B (zh) 缓存操作方法、缓存操作装置、电子设备及处理器

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee