KR100925572B1 - 상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치 - Google Patents

상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치 Download PDF

Info

Publication number
KR100925572B1
KR100925572B1 KR1020077017311A KR20077017311A KR100925572B1 KR 100925572 B1 KR100925572 B1 KR 100925572B1 KR 1020077017311 A KR1020077017311 A KR 1020077017311A KR 20077017311 A KR20077017311 A KR 20077017311A KR 100925572 B1 KR100925572 B1 KR 100925572B1
Authority
KR
South Korea
Prior art keywords
cache
group
location
level
node
Prior art date
Application number
KR1020077017311A
Other languages
English (en)
Other versions
KR20070093439A (ko
Inventor
옌-쿠앙 첸
크리스토퍼 휴게스
3세 제임스 턱
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 KR20070093439A publication Critical patent/KR20070093439A/ko
Application granted granted Critical
Publication of KR100925572B1 publication Critical patent/KR100925572B1/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
    • 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/04Addressing variable-length words or parts of words
    • 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
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

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

본 발명은 레벨 1 캐시 내의 상이한 캐시 위치 길이를 갖는 캐시 시스템의 설계 및 동작을 위한 시스템 및 방법에 관한 것이다. 일실시예에서, 각각의 레벨 1 캐시는 레벨 2 캐시 라인의 부분을 유지할 수 있는 상이한 길이의 캐시 위치 그룹을 포함할 수 있다. 상태 트리는 공유 벡터 내의 데이터로부터 생성될 수 있다. 레벨 1 캐시로부터 요구가 발생하는 경우, 레벨 2 캐시는 상태 트리의 노드를 검사하여 인입 요구에 대응하는 상태 트리의 노드가 이미 활성인 지의 여부를 판정할 수 있다. 이 판정의 결과는 요구의 동시 처리를 허용 또는 금지하는데 사용될 수 있다.

Description

상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한 시스템, 방법, 프로세스 및 장치{SYSTEM AND METHOD FOR CACHE COHERENCY IN A CACHE WITH DIFFERENT CACHE LOCATION LENGTHS}
본 발명은 일반적으로 데이터 캐시를 갖는 마이크로 프로세서에 관한 것으로, 보다 구체적으로는 상이한 길이의 캐시 위치(cache location) 그룹을 갖는 데이터 캐시를 포함할 수 있는 마이크로프로세서에 관한 것이다.
현대의 마이크로프로세서는 단일 반도체 디바이스 상에 둘 이상의 프로세서 코어를 포함할 수 있다. 이러한 마이크로프로세서를 멀티 코어 프로세서라고도 한다. 이들 복수의 코어를 사용하면, 단일 코어를 사용하는 경우보다 성능을 향상시킬 수 있다. 각각의 코어는 그 자신의 레벨 1 데이터 및 인스트럭션 캐시를 포함할 수 있으며, 부가적으로 레벨 2 캐시가 디바이스 상에 존재할 수 있다.
성능을 향상시키기 위해, 레벨 1 데이터 캐시 내의 캐시 위치는 예상 데이터 유형에 응답하여 선택된 길이가 될 수 있다. 디바이스 크기의 제한으로 인해, 보다 짧은 길이의 보다 많은 수의 캐시 위치 또는 보다 긴 길이의 보다 적은 수의 캐 시 위치가 허용될 수 있다. 예상 데이터가 큰 공간적 장소를 갖는 경우(예를 들면, 데이터가 메모리의 인접 영역 내에 위치하는 경향이 있다), 보다 긴 길이의 보다 적은 수의 캐시 위치를 사용함으로써 성능이 향상될 수 있다. 반면에, 예상 데이터가 작은 공간적 장소를 갖는 경우(예를 들면, 데이터가 랜덤으로 또는 의사 랜덤으로 메모리를 통해 산재해 있을 수 있다), 보다 짧은 길이의 보다 많은 수의 캐시 위치를 사용함으로써 성능이 향상될 수 있다.
상이한 길이의 캐시 위치를 각각 포함하는 여러 그룹의 캐시 위치로 레벨 1 데이터 캐시를 설계하는 것이 가능하다. 이것은 다양한 유형의 예상 데이터에 대해 성능을 향상시킬 수 있다. 또한, 데이터의 특정 부분이 동시에 복수의 캐시 위치 그룹에 존재할 수도 있으며, 이로 인해 다시 성능이 향상될 수 있다. 그러나, 대부분의 캐시 코히어런시 엔진은 캐시 위치/캐시 라인 크기의 입도(granularity)로 동작한다. 단순화를 위해, 이들은 공통 캐시 위치/캐시 라인 크기를 지원하는 것으로 설계된다. 따라서, 특히 기본적인 재설계 없이 기존의 캐시 코히어런시 프로토콜을 사용하는 것이 바람직한 경우, 가변 캐시 위치 길이의 캐시와 함께 사용하기 위한 캐시 코히어런시 엔진이 디자인 이슈이다.
이하의 설명은 첨부 도면에서 캐시 위치를 예로 들어 설명하지만, 캐시 위치에 한정되는 것은 아니며, 도면에서 유사한 참조번호는 유사한 구성요소를 지칭한다.
도 1은 본 발명의 일실시예에 따른, 상이한 길이의 캐시 위치를 포함하는 캐시를 구비하는 복수의 프로세서 코어를 포함하는 프로세서를 도시한 도면.
도 2는 본 발명의 일실시예에 따른, 프로세서 모듈을 도시한 도면.
도 3은 본 발명의 일실시예에 따른, 디렉토리 구조를 갖는 레벨 2 캐시를 도시한 도면.
도 4는 본 발명의 일실시예에 따른, 도 3의 레벨 2 캐시에 대한 디렉토리 엔트리를 도시한 도면.
도 5는 본 발명의 일실시예에 따른, 도 4의 디렉토리 엔트리에 대응하는 상태 트리를 도시한 도면.
도 6은 본 발명의 다른 실시예에 따른, 수집 상태 홀딩 레지스터를 도시한 도면.
도 7a는 본 발명의 일실시예에 따른, 복수의 코어를 구비한 프로세서를 포함하는 시스템의 개략도.
도 7b는 본 발명의 다른 실시예에 따른, 복수의 코어를 구비한 프로세서를 포함하는 시스템의 개략도.
이하의 설명은 멀티 코어 프로세서에서 상이한 길이의 캐시 위치를 갖는 데이터 캐시의 코히어런트 동작 및 설계에 대한 기술을 포함한다. 다음의 설명에서 는, 본 발명의 보다 철저한 이해를 위해 로직 구현, 소프트웨어 모듈 할당, 버스 및 기타 인터페이스 신호 전달 기법과 같은 수많은 특정 세부사항과 동작에 대한 세부사항을 설명한다. 그러나, 당업자라면 본 발명이 이러한 특정 세부사항 없이 실시될 수도 있음을 알 수 있을 것이다. 다른 예에서는, 본 발명에 대한 혼동을 방지하기 위해, 제어 구조, 게이트 레벨 회로 및 완전한 소프트웨어 인스트럭션 시퀀스를 상세히 제시하지 않았다. 당업자라면, 본 명세서에 개시된 설명에 의해 과도한 실험 없이 적절한 기능을 구현할 수 있을 것이다. 어떤 실시예에서는, (인텔사에서 제조된)Itanium® 프로세서 패밀리 호환 프로세서 및 관련 시스템 및 프로세서 펌웨어의 환경에서 본 발명을 설명한다. 그러나, 본 발명은 (인텔 사에 의해 제조된)Pentium® 호환 프로세서 시스템, X-Scale® 패밀리 호환 프로세서, 또는 다른 판매자 또는 설계자의 프로세서 아키텍처로부터의 다양한 범용 프로세서와 같은 다른 유형의 프로세서 시스템으로 실시될 수도 있다. 또한, 일부 실시예는 펌웨어와 관련된 그래픽, 네트워크, 이미지 통신 또는 기타 알려져 있거나 이용가능한 유형의 프로세서와 같은 특수 목적 프로세서를 포함할 수도 있다.
도 1에는 본 발명의 일실시예에 따른 상이한 길이의 캐시 위치를 포함하는, 캐시를 구비한 복수의 프로세서 코어를 포함하는 프로세서가 도시되어 있다. 도시된 실시예에서는, 프로세서 모듈 1(130) 및 프로세서 모듈 2(140)가 도시되어 있지만, 다른 실시예에서는 보다 많은 프로세서 모듈이 존재할 수 있다.
프로세서 모듈 1(130) 및 프로세서 모듈 2(140)는 각각 프로그램 실행을 위한 코어(134, 144), 레벨 1(L1) 데이터 캐시 제어기(132, 142) 및 캐시 어레 이(136, 146)를 포함한다. 여기서, "레벨 1"은 계층 레벨에서 프로세서 코어에 대해 가장 가까운 캐시를 나타낼 수 있다. 캐시 어레이(132, 142)는 메모리로부터 캐시 라인으로서 들여온 데이터를 유지할 수 있는 다양한 캐시 위치를 포함할 수 있다. 이들 캐시 위치는 길이가 변할 수 있고, 성능을 향상시키기 위해 전체 캐시 라인 대신에 캐시 라인의 일부를 포함할 수도 있다.
프로세서 모듈 1(130) 및 프로세서 모듈 2(140)는 상호접속부(120)를 통해 레벨 2(L2) 캐시(110)에 접속될 수 있다. 여기서, "레벨 2"는 계층 레벨에서 프로세서 코어로 한 단계 이동된 캐시를 나타낼 수 있다. L2 캐시(110)는 메모리로부터 캐시 라인으로서 들여온 데이터를 유지할 수 있는 캐시 위치를 포함하는 캐시 어레이(114)를 포함할 수 있다. L2 캐시는 또한 캐시 어레이(114) 및 다양한 L1 캐시에도 포함된 캐시 라인에 대한 태그 및 상태 데이터를 유지하기 위한 디렉토리(116)를 포함할 수도 있다. 마지막으로, L2 캐시는 캐시 동작을 지원하기 위한 여러 레지스터(112) 세트를 포함할 수 있다.
도 2에는 본 발명의 일실시예에 따른 프로세서 모듈이 도시되어 있다. 프로세서 모듈(230)은 도 1과 관련하여 위에서 논의한 바와 같이, 코어(244), 레벨 1 데이터 캐시 제어기(242) 및 캐시 어레이(246)를 포함할 수 있다.
캐시 어레이(246)는 길이가 다른 캐시 위치 그룹을 포함할 수 있다. 예를 들면, 그룹(260) 내의 캐시 위치는 캐시 계층의 전체 캐시 라인을 유지할 수 있다. 그러나, 그룹(270) 내의 캐시 위치는 전체 캐시 라인의 일부분을 유지할 수 있으며, 여기서 각 부분은 전체 캐시 라인의 길이의 절반이다. 이와 유사하게, 그 룹(250) 내의 캐시 위치는 전체 캐시 라인의 일부분을 유지하는데, 여기서 각 부분은 전체 캐시 라인의 길이의 1/4이다. 이러한 캐시 어레이에 대한 많은 실시예에 있을 수 있는데, 여기서 상이한 캐시 위치는 상이한 길이를 가질 수도 있다. 세 개보다 많거나 또는 적은 유형의 캐시 위치가 있을 수도 있으며, 다른 실시예에서는 반드시 전체 캐시 계층의 전체 캐시 라인 길이의 2의 멱과 관련되지는 않는 길이의 캐시 위치가 있을 수도 있다. 도 2의 실시예에서, 그룹(260)의 캐시 위치가 전체 캐시 라인을 유지할 수도 있지만, 다른 실시예에서는, 캐시 어레이(246) 내의 가장 긴 캐시 위치인 그룹(260)의 캐시 위치가 전체 캐시 라인의 일부분만 유지할 수도 있다.
캐시 어레이(246)의 사용을 논의하기 위해, "블록(block)"이란 표현이 유용할 것이다. 여기서 블록은 L1 데이터 캐시의 코히어런시 내의 가장 작은 캐시 위치의 길이로서 정의될 수 있다. 따라서, 그룹(250)은 1 블록 캐시 위치를 포함하고, 그룹(270)은 2 블록 캐시 위치를 포함하며, 그룹(260)은 4 블록 캐시 위치를 포함한다. 다른 실시예에서는, 다른 블록 길이의 캐시 위치가 사용될 수 있다.
캐시로서 작동하기 위해, 캐시 위치(250, 260, 270)의 그룹은 레벨 1 데이터 캐시 제어기(242)에 접속된다. 이것은 제어기, 코히어런스 엔진, 미스 상태 홀딩 레지스터(MSHR; miss status holding register)(252), 라이트백(write-back) 버퍼(WB)(250), 상호접속 인터페이스(220)를 제공한다. 일부 실시예에서는, 이들이 각 그룹의 캐시 위치(250, 260, 270)에 대해 복제될 수 있지만, 본 실시예에서는 이들이 캐시 위치 사이에 공유될 수 있다. L2 캐시는 다른 그룹의 캐시 위치를 인 식할 수 있으며, 따라서 다른 그룹의 캐시 위치를 목표로 하는 코히어런스 메시지를 송신할 수도 있다. 레벨 1 데이터 캐시 제어기(242)는 이러한 메시지를 수신하고 이들에 작용할 수 있으며, 이에 따라 캐시 어레이(246) 내의 특정 캐시 위치 그룹에 대해 이동할 때 메시지를 마킹하고 해석할 필요가 있다.
MSHR(252)은 단일 캐시 위치 길이를 갖는 캐시 내에서 발견되는 통상의 MSHR과 비교하여 수정될 수도 있다. 통상의 MSHR은 복수의 메모리 요구를 미스로 판정된 동일 어드레스에 버퍼링할 수 있다. 상이한 길이의 캐시 위치 그룹 때문에, 동일 어드레스에 대한 이러한 복수의 메모리 요구는 상이한 길이의 캐시 위치로 진행할 수 있다. 통상의 방법으로 복수의 메모리 요구를 버퍼링하면 성능이 저하될 수 있다. 일례로서, 어드레스에 대한 제 2 요구가 제 1 메모리 요구의 길이보다 더 긴 길이의 캐시 위치에 대한 것인 경우, 제 1 요구로부터의 결과는 제 2 메모리 요구를 만족시키기에 충분한 블록을 포함하지 않을 것이다. 따라서, 일실시예에서는, MSHR(252)이 동일 어드레스에 대한 메모리 요구가 계류중인 각각의 캐시 위치 블록에 대해 개별 엔트리를 할당할 수 있다. 각각의 메모리 요구는 L2 캐시로 전송될 것이다. MSHR(252) 내의 개별 엔트리는 요구가 어느 캐시 위치 그룹으로부터의 것인 지를 지정하는 어드레스 및 식별자 모두로 색인될 수 있다. 이런 방식으로, 동일한 캐시 위치 그룹으로부터의 특정 어드레스에 대한 메모리 요구만이 그 특정 어드레스에 대한 제 1 요구 다음에 버퍼링될 수 있다.
통상은, 미스가 선언되기 전에 어드레스에 대한 인입 요구를 수신할 때 WB가 체크된다. 만약 요구된 어드레스가 WB에서 발견되면, 이 어드레스에 대한 인입 요 구가 버퍼링되고, 이 요구에 대한 처리를 계속하기 전에 라이트백이 완료되도록 허용될 수 있다. 그러나, 라이트백 엔트리가 인입 요구를 생성한 것과 다른 길이의 캐시 위치 그룹으로부터 생성되면, 이 라이트백 엔트리는 미스 처리를 지연시키지 않을 수도 있다. 이것을 지원하기 위해, 일실시예에서는 WB(250)가 인입 요구가 어느 유형의 캐시 위치 그룹으로부터 왔는지를 나타내는 어드레스 및 식별자로 색인될 수 있다.
도 3에는 본 발명의 일실시예에 따른 디렉토리 구조를 갖는 레벨 2 캐시가 도시되어 있다. L2 캐시(310)는 데이터(350) 및 디렉토리(360)를 유지하는 다수의 캐시 위치를 포함할 수 있다. 디렉토리(360)는 데이터(350) 내의 동등한 캐시 위치의 컨텐츠에 대응하는 여러 종류의 엔트리를 포함할 수 있다. 이들 종류의 엔트리는 태그(370), 캐시 코히어런시 상태(380) 및 공유 벡터(390)를 포함할 수 있다. 일실시예에서는, 상태가 MSI 캐시 코히어런시 프로토콜의 수정된 비활성 상태(M), 공유 상태(S) 또는 무효 상태(I)일 수 있다. 다른 실시예에서는, 다른 캐시 코히어런시 상태가 지원될 수도 있다.
공유 벡터는 L2 캐시(310)의 캐시 코히어런시 공간 내에 모든 L1 데이터 캐시에 대한 정보를 포함할 수 있다. 특히, 공유 벡터는 상이한 길이를 갖는 캐시 위치 그룹이 존재하는 만큼의 프로세서 코어당 비트를 포함할 수 있다. 일부 실시예에서는, 전체 캐시 라인의 어느 부분이 특정 L1 데이터 캐시에 존재할 수 있는 지를 나타내기 위해 캐시 위치 그룹마다 부가적인 비트가 존재할 수도 있다. 도 2를 간단히 참조하면, 이러한 부가적인 비트는 캐시 위치(272) 내의 두 블록이 대응 하는 전체 캐시 라인의 처음 두 블록으로부터의 것인지 아니면 두 번째 두 블록으로부터의 것인지를 나타낼 수 있다. 디렉토리(360) 내의 엔트리(362)의 일실시예의 세부사항은 도 4와 함께 아래에서 상세히 논의할 것이다.
L2 캐시(310)는 또한 여러 레지스터 세트를 포함할 수 있다. 도 3의 실시예에서, 이들은 라이트백 레지스터(320), 미스 상태 처리 레지스터(MSHR; miss status handling register)(330) 및 수집 상태 홀딩 레지스터(CSHR; collection status holding register)(340)를 포함할 수 있다. 일실시예에서, 라이트백 레지스터(320) 및 MSHR(330)은 통상적으로 설계될 수 있다. CSHR(340) 및 전체 캐시 라인의 업데이트된 부분을 수집하기 위한 활용은 도 6과 관련하여 아래에 상세히 논의한다.
도 4에는 본 발명의 일실시예에 따른 도 3의 레벨 2 캐시에 대한 디렉토리 엔트리(362)가 도시되어 있다. 엔트리(362)는 전체 캐시 라인에 있어서 태그(402)에 대해 할당된 비트를 갖는다. 엔트리(362)는 또한 캐시 코히어런시 상태(404)에 대해 하나 이상의 비트를 갖는다. 현재의 각각의 코어에 대해 그리고 이 코어의 데이터 캐시에 존재할 수 있는 전체 캐시 라인의 일부분 및 캐시 위치의 유형의 각각의 가능한 조합에 대해, 이 유형의 캐시 위치 내의 전체 캐시 라인의 이 부분의 존재 또는 부재를 나타내는 비트가 존재할 수 있다.
각각의 프로세서 모듈이 도 2의 프로세서 모듈(230)인 도 1의 프로세서(100)를 고려하자. 엔트리(362)에는 코어(1, 2)에 4 블록을 유지하는 캐시 위치 그룹을 각각 나타내는 2 비트(408, 412)가 존재한다. 4 블록 캐시 위치, 즉, 전체 캐시 라인 자체에 포함될 수 있는 전체 캐시 라인의 일부분만이 존재하기 때문에 단일 비트로 충분할 수 있다.
두 블록을 유지하는 캐시 위치 그룹과 관련된 엔트리(362)의 부분에 있어서, 코어 1은 2 비트(416, 418)를 가지며, 코어 2는 2 비트(420, 422)를 갖는다. 여기서는 2 블록을 유지하는 캐시 위치가 전체 캐시 라인의 두 부분 중 한 부분(예를 들면, 전체 캐시 라인의 첫 번째 또는 두 번째의 두 개의 블록)을 유지할 수 있기 때문에, 코어마다 2 비트가 사용될 수 있다. 예를 들면, 418에 위치한 "1"은 전체 캐시 라인의 두 번째 부분이 두 블록의 코어 1의 캐시 위치 그룹 내에 존재한다는 것을 나타낼 수 있다.
단일 블록을 홀딩하는 캐시 위치의 그룹과 관련된 엔트리(362)의 부분에 있어서, 코어 1은 4 비트(424-430)를 갖고, 코어 2는 4 비트(432-438)를 갖는다. 여기서는 한 블록을 유지하는 캐시 위치가 전체 캐시 라인의 네 부분(예를 들면, 전체 캐시 라인의 제 1, 제 2, 제 3, 제 4 블록)을 유지할 수 있기 때문에, 코어마다 4 비트가 사용될 수 있다. 예를 들면, 424에 위치하는 "1"은 전체 캐시 라인의 제 1 블록 부분이 한 블록의 코어 1의 캐시 위치 그룹에 존재한다는 것을 나타낼 수 있다.
다른 실시예에서는, 엔트리(362)가 단순히 적절한 장소에 비트 필드를 추가함으로써 두 개의 코어보다 많은 코어를 갖는 프로세서의 경우로 확장될 수 있다. 엔트리(362)의 설계에 의한 코어의 수에 대한 특별한 제한은 없다. 이와 유사하게, 다른 실시예에서는, 엔트리(362)가 단순히 적절한 장소에 비트 필드를 추가하 거나 제거함으로써 상이한 길이를 갖는 세 개의 캐시 위치 그룹보다 많거나 적은 프로세서의 경우로 확장될 수 있다. 도 4는 캐시 위치의 길이에 의해 그룹화된 엔트리(362)의 비트를 도시하고 있지만, 다른 실시예에서는 엔트리의 비트가 코어에 의해 조직될 수도 있다.
앞에서 논의한 캐시 코히어런시 프로토콜의 비활성 상태는 일실시예에서 M, S, I로 주어졌다. 코히어런시 동작은 이들 비활성 상태 중 한 상태로부터 다른 상태로의 변화를 발생할 수 있다. 코히어런시 동작에 대한 요구가 처리될 때, 코히어런시 동작은 캐시 라인의 상태가 다양한 활성 상태를 거치게 할 수 있다. 통상의 캐시 코히어런시 프로토콜에서의 규칙은 캐시 라인이 활성 상태에 있을 때 어떠한 부가적인 코히어런시 동작도 일어나지 않게 하는 것이다.
그러나, 본 발명의 캐시 시스템의 일실시예에서는, 레벨 1 데이터 캐시의 상이한 캐시 위치가 전체 캐시 라인의 상이한 부분을 유지할 수도 있다. 코히어런시 동작에 대한 요구가 전체 캐시 라인의 "독립적인" 부분에 대한 것인 경우에 코히어런시 동작에 대한 요구들을 동시에 처리할 수도 있다. 여기서 독립적인 부분들은 전체 캐시 라인의 제 1 및 제 2 절반 또는 전체 캐시 라인의 1/4의 임의의 쌍일 수 있다. 코히어런스 동작은 메시지 전송 및 응답 대기를 포함할 수 있기 때문에, 요구들을 동시 처리할 수 있다면 캐시 성능을 향상시킬 수 있다.
L2 캐시(310)에서 수행된 코히어런스 프로토콜은 프로세서 모듈로부터 코히어런시 동작에 대한 네 가지 상이한 종료의 요구를 수신할 수 있다. 이들은 판독, 배타적 판독(예를 들면 기록에 대한 소유권을 수신하기 위해), 업그레이드 및 라이 트백에 대한 요구를 포함할 수 있다. 상이한 길이의 캐시 위치 그룹을 갖는 환경에서 이들 요구를 고려해보면, 이들 요구는 전체 캐시 라인의 다양한 부분에 의해 유지된 상태를 고려하고자 할 수 있다. 이러한 사항을 효율적으로 수행하기 위해, 상태 비트(404) 및 공유 벡터 비트(408-438)에 포함된 비트는 이들이 상태 트리인 것처럼 로직에 의해 검사될 수 있다.
도 5에는 본 발명의 일실시예에 따른 도 4의 디렉토리 엔트리(362)에 대응하는 상태 트리(500)가 도시되어 있다. 상태 트리(500)는 노드(510, 512, 514, 520, 522, 524, 526) 세트로부터 형성될 수 있다. 각 노드는 다양한 L1 데이터 캐시 내에 존재하는 다양한 종류의 캐시 위치들 중 하나를 유지할 수 있는 전체 캐시 라인의 다양한 부분들 중 한 부분의 상태를 나타낸다. L2 캐시 내의 로직은 노드를 계류중인 코히어런시 동작에 대응하는 활성 상태 또는 비활성 상태가 되게 할 수 있다.
예를 들면, 루트 노드(510)는 임의의 비활성 또는 계류중인 활성 캐시 코히어런시 상태를 나타낼 수 있으며 전체 캐시 라인이 다양한 L1 데이터 캐시 내에 존재할 수 있다는 것을 보여주는 엔트리(362)의 부분(예를 들면, 비트(408, 412))을 나타낼 수 있다. L1 데이터 캐시들 중 어느 것도 네 개의 캐시 위치를 포함하지 않는 일실시예에서는, 계류중인 활성 캐시 코히어런시 상태는 유지하면서, 루트 노드(510)가 엔트리(362)의 일부분을 생략할 수도 있다.
노드(512, 514)는 임의의 비활성 또는 계류중인 활성 캐시 코히어런시 상태 및 전체 캐시 라인의 제 1 및 제 2 절반 각각이 다양한 L1 데이터 캐시에 존재할 수 있음을 보여주는 엔트리(362)의 부분을 나타낼 수 있다. 마찬가지로, 노드(520, 522, 524, 526)는 임의의 계류중인 활성 캐시 코히어런시 상태 및 전체 캐시 라인의 제 1, 제 2, 제 3, 제 4 쿼터가 각각 다양한 L1 데이터 캐시(예를 들면, 비트(각각 424, 432; 426, 434; 428, 436; 430, 438) 내에 존재할 수 있음을 나타내는 엔트리(362)의 일부분을 나타낼 수 있다.
다른 형태의 캐시 코히어런시 프로토콜은 상태 트리(500)의 노드들 사이에 코히어런스에 대한 다른 규칙을 발생시킬 수 있다. 예로서 앞에서 논의한 MSI 프로토콜을 이용하면, 다른 노드들은 이들의 위치 및 관련 의존성에 따라 다른 상태를 갖도록 요구될 수 있다. 예를 들어, 노드(514)가 M 상태에 있으면, 그 조상(ancestor)(트리의 브랜치를 따라 루트 노드 쪽으로의 노드)인 루트 노드(510)는 I 상태에 있을 필요가 있으며, 그 후손(descendent) 노드(로트 노드로부터 트리의 브랜치를 따라 번 노드)(524, 526) 또한 마찬가지다. 그러나, 노드(514)와 노드들(512, 520, 522) 사이의 의존성의 부족으로 인해 MSI 상태 중 어떠한 상태(예를 들어 "이상 없음(don't care)" 상태)에 있을 수도 있다. 이와 유사하게 노드(526)가 M 상태에 있으면, 노드(510, 514)는 I 상태에 있을 필요가 있지만, 노드(524, 512, 520, 522)는 의존성이 부족하기 때문에 MSI 상태 중 어떠한 상태에 있을 수도 있다. 루트 노드(510)는 다른 모든 노드가 루트 노드(510)와 의존적이라는 점이 다르다. 캐시 코히어런시 프로토콜의 다른 실시예에서, 의존 및 비의존 노드 사이의 상태에 대한 다른 규칙이 사용될 수도 있다.
상태 트리(500)는 전체 캐시 라인의 주어진 부분이 코히어런시 동작에 현재 포함되는 지의 여부를 결정하는 것을 지원하는데 사용될 수 있다. 특정 노드의 조상은 노드 그 자체가 나타내는 데이터의 수퍼세트를 나타낼 수도 있다는 것을 고려하자. 그리고, 노드의 후손들은 노드 그 자체가 나타내는 부분 내에 포함된 전체 캐시 라인의 부분을 나타낼 수도 있다. 이들 속성 때문에, 노드에 의해 표현된 전체 캐시 라인의 일부분이 현재 코히어런시 동작에 포함되는 지의 여부를 결정하는데 간단한 규칙 세트가 사용될 수 있다. 이들 규칙은 디렉토리의 엔트리에 대해 동작할 수 있는 L2 캐시의 로직으로 구현될 수 있다.
규칙 1은 노드가 이미 활성 상태에 있는 조상을 가지면, 그 노드는 새로운 코히어런시 동작을 시작하지 않을 수도 있다는 것이다. 규칙 2는 노드 자체가 이미 활성 상태에 있으면, 그 노드는 새로운 코히어런시 동작을 시작하지 않을 수도 있다는 것이다. 규칙 3은 노드의 어느 한 후손이 이미 활성 상태에 있으면, 그 노드는 새로운 코히어런시 동자을 시작하지 않을 수 있다는 것이다. 규칙 4는 새로운 코히어런시 동작이 노드의 어느 한 조상의 상태를 수정하면, 규칙 1, 2, 3이 루트 노드에 가장 가까운 조상에게 적용될 수 있다는 것이다. 다른 실시예에서는, 전체 캐시 라인의 일부분이 코히어런시 동작에 동시에 포함되는 지의 여부를 결정하기 위해 다른 규칙 세트가 확립될 수도 있다.
도 6에는, 본 발명의 일실시예에 따른 수집 상태 홀딩 레지스터(CSHR; collection status holding register)가 도시되어 있다. 통상의 캐시 시스템에서, 하나의 데이터 L1 캐시가 다른 데이터 L1 캐시에 의해 소유되는 캐시 라인에 액세스하고자 하는 경우, 대응하는 L2 캐시는 라인의 상태를 업데이트하여 소유하는 데 이터 L1 캐시로 전달할 수도 있다. 상이한 길이의 캐시 위치를 갖는 캐시 시스템의 일실시예에서, 라인 상태를 업데이트하고 소유하는 데이터 L1 캐시에 요구를 전달하는 프로세스가 소정의 경우에 유사한 방식으로 수행될 수도 있다. 이들 경우는 소유하는 데이터 L1 캐시가, 요구 데이터 L1 캐시 내의 대응 캐시 위치와 길이가 동일하거나 더 긴 캐시 위치 내의 캐시 라인의 요구된 부분을 갖는 경우를 포함할 수도 있다.
그러나, 라인이 요구된 블록 입도보다 더 작은 블록 입도에서 수정되면, 요구된 캐시 라인의 부분이, 예를 들어 하나의 데이터 L1 캐시 내의 수정된 상태 및 다른 데이터 L1 캐시(또는 메모리) 내의 나머지 상태에 있을 수 있다. 이들과 같은 상황에서, 요구된 캐시 라인의 이들 다양한 부분을 수집 및 취합할 필요가 있다. 요구된 캐시 라인의 이들 다양한 부분을 수집하고 취합하는 방법은 여러 캐시 위치에서 수행될 수 있다. 일실시예에서, 요구 데이터 L1 캐시는 이들 부분 자체를 수집하고 취합할 수 있다. 이것은 바람직하게는 요구를 처리하는데 있어서의 지연을 감소시킬 수 있다.
그러나, 다른 실시예에서는 상태 트리 내의 여러 노드에 대응하는 캐시 라인의 부분들을 공유하는 것이 비교적 드물 수 있다. 이에 따라 요구 캐시 라인의 이들 다양한 부분들을 수집하고 취합할 필요성이 비교적 낮을 수 있다. 이 실시예에서, L2 캐시에서 수집 및 취합을 수행하여 취합된 캐시 라인을 요구 레벨 1 데이터 캐시에게 전달하는 것이 더 간단할 수 있다.
L2 캐시에서 수집 및 취합을 수행하기 위해, CSHR(340)이 사용될 수도 있다. CSHR(340) 내의 각각의 엔트리는 특정 레벨 1 데이터 캐시 요구를 추적할 수 있다. 엔트리들은 레벨 1 데이터 캐시 요구에 대응하는 L2 캐시 라인 어드레스에 의해 색인될 수 있다. 각각의 엔트리는 인입 레벨 1 데이터 캐시 요구를 포함할 수 있는데, 이 요구는, 요구가 이루어지는 캐시 위치의 길이를 포함할 수 있고 또한 전체 캐시 라인의 어느 특정 부분(예를 들면, 제 1 절반, 제 3 쿼터 등)이 요구되는 지를 포함할 수 있다. 각각의 엔트리는 L2 캐시가 다양한 레벨 1 데이터 캐시에게 만드는 요구들의 수를 처음에 저장했을 수도 있다. 이 수는 응답이 도착할 때마다 감소할 수 있다. 이 수가 0이 되면 L2 캐시는 모든 부분들이 수집되었으며 취합 과정이 시작될 수 있다는 것을 알 것이다.
레벨 1 데이터 캐시들 중 하나로부터의 요구는 다음과 같이 처리될 수 있다. L2 캐시가 요구를 수신하면, 먼저 이 요구가 소유하는 레벨 1 데이터 캐시와 동일한 블록 입도를 갖는 지의 여부를 판단할 수 있다. 만약 그렇다면, L2 캐시는 이 요구를 단순히 소유하는 레벨 1 데이터 캐시로 전달할 수 있다. 그러나, 동일한 입도가 아니라면, CSHR(340) 내의 엔트리(610)가 할당될 수 있다. 인입 레벨 1 데이터 캐시 요구는 요구 필드(612)에 위치할 수 있으며, L2 캐시가 다양한 레벨 1 데이터 캐시에 만드는 요구의 수는 미해결 응답 필드(outstanding response field)(614)의 수에 위치할 수 있다. 그 다음에, L2 캐시는 다양한 레벨 1 데이터 캐시에 대한 요구를 발생할 수 있으며, 응답이 도착하기를 기다린다. 응답이 L2 캐시에 도착할 때마다, 대응 데이터가 유지되고, 미해결 응답 필드(614)의 수가 감소할 수 있다. 미해결 응답 필드(614)의 수가 0이 되면, L2 캐시는 모든 부분이 수집되었음을 알게 된다. 그 다음에 L2 캐시는 레벨 1 데이터 캐시로부터 수신된 데이터를 취합할 수 있다. 일단 취합되면, L2 캐시는 취합된 캐시 라인을 원래의 요구 레벨 1 데이터 캐시로 전달될 수 있다.
도 7a 및 7b는 본 발명의 두 실시예에 따른 복수의 코어를 구비한 프로세서를 포함하는 시스템의 개략도이다. 도 7a의 시스템은 일반적으로 프로세서, 메모리 및 입력/출력 디바이스가 시스템 버스에 의해 상호접속되는 시스템을 도시한 것이며, 도 7b의 시스템은 일반적으로 프로세서, 메모리 및 입력/출력 디바이스가 다수의 점대점 인터페이스에 의해 상호접속되는 시스템을 도시하고 있다.
도 7a의 시스템은 하나 또는 여러 개의 프로세서를 포함할 수 있지만, 여기서는 명확성을 위해 단지 두 개의 프로세서(40, 60)만 도시되어 있다. 프로세서(40, 60)는 레벨 2 캐시(42, 62)를 포함할 수 있으며, 여기서 각각의 프로세서(40, 60)는 레벨 1 캐시를 구비한 복수의 코어를 포함한다. 도 7a의 시스템은 버스 인터페이스(44, 64, 12, 8)를 통해 시스템 버스(6)에 접속된 여러 기능부를 포함할 수 있다. 일실시예에서, 시스템 버스(6)는 인텔사에 의해 제조된 Pentium® 계 마이크로프로세서와 함께 이용되는 FSB(front side bus)일 수 있다. 다른 실시예에서는, 다른 버스가 이용될 수도 있다. 일부 실시예에서는, 메모리 제어기(34) 및 버스 브리지(32)는 총괄하여 칩셋이라고 한다. 일부 실시예에서는, 칩셋의 기능이 도 7a의 실시예에 도시된 것과 다르게 물리적 칩 사이에 분할될 수도 있다.
메모리 제어기(34)는 프로세서(40, 60)가 시스템 메모리(10)에 기록하고 이 로부터 판독하며, 기본 입력/출력 시스템(BIOS) 소거 가능 프로그램가능한 판독 전용 메모리(EPROM)(36)로부터 판독하는 것을 허용할 수 있다. 일부 실시예에서는 BIOS EPROM(36)이 플래시 메모리를 이용할 수 있으며, BIOS 대신에 다른 기본 동작 펌웨어를 포함할 수 있다. 메모리 제어기(34)는 시스템 버스(6) 상의 버스 에이전트에 대해 운반되는 데이터를 메모리에 기록 또는 판독할 수 있게 하는 버스 인터페이스(8)를 포함할 수 있다. 메모리 제어기(34)는 또한 고성능 그래픽 인터페이스(39)를 통해 고성능 그래픽 회로(38)와 접속될 수 있다. 어떤 실시예에서는, 고성능 그래픽 인터페이스(39)가 고급 그래픽 포트(AGP) 인터페이스일 수 있다. 메모리 제어기(34)는 데이터를 고성능 그래픽 인터페이스(39)를 통해 시스템 메모리(10)로부터 고성능 그래픽 회로(38)로 전달할 수 있다.
도 7b의 시스템은 또한 하나 또는 여러 개의 프로세서를 포함할 수 있는데, 여기서는 명확성을 위해 두 개의 프로세서(70, 80)만 도시되어 있다. 프로세서(70, 80)는 레벨 2 캐시(56, 58)를 포함할 수 있으며, 각각의 프로세서(70, 80)는 레벨 1 캐시를 각각 구비하는 복수의 코어를 포함할 수 있다. 프로세서(70, 80)는 각각 메모리(2, 4)와 접속하기 위한 로컬 메모리 제어기 허브(MCH)(72, 82)를 포함할 수 있다. 프로세서(70, 80)는 점대점 인터페이스 회로(78, 88)를 이용하여 점대점 인터페이스(50)를 통해 데이터를 교환할 수 있다. 프로세서(70, 80)는 각각 점대점 인터페이스 회로(76, 94, 86, 98)를 이용하여 개별 점대점 인터페이스(52, 54)를 통해 칩셋(90)과 데이터를 교환할 수 있다. 다른 실시예에서는, 칩셋 기능이 프로세서(70, 80) 내에서 구현될 수 있다. 칩셋(90)은 또한 고성능 그래픽 인터페이스(92)를 통해 고성능 그래픽 회로(38)와 데이터를 교환할 수도 있다.
도 7a의 시스템에서, 버스 브리지(32)는 시스템 버스(6)와 버스(16) 사이에서 데이터를 교환할 수 있게 하는데, 이 버스는 일부 실시예에서는 ISA(industry standard architecture) 버스 또는 PCI(peripheral component interconnect) 버스일 수 있다. 도 7b의 시스템에서는, 칩셋(90)이 버스 인터페이스(96)를 통해 버스(16)와 데이터를 교환할 수 있다. 각 시스템에서, 버스(16) 상에는 일부 실시예에서 저성능 그래픽 제어기, 비디오 제어기 및 네트워킹 제어기를 포함하는 다양한 입력/출력 I/O 디바이스(14)가 존재할 수 있다. 버스(16)와 버스(20) 사이에 데이터 교환을 할 수 있도록 다른 버스 브리지(18)가 사용될 수도 있다. 버스(20)의 예로는 SCSI(small computer system interface) 버스, IDE(integrated drive electronics) 버스 또는 USB(universal serial bus) 버스가 있다. 추가적인 I/O 디바이스가 버스(20)로 접속될 수 있다. 이들은 키보드 및 마우스를 포함하는 커서 제어 장치(22), 오디오 I/O(24), 모뎀 및 네트워크 인터페이스를 포함하는 통신 장치(26), 데이터 저장 장치(28)를 포함할 수 있다. 소프트웨어 코드(30)는 데이터 저장 장치(28)에 저장될 수 있다. 일부 실시예에서는, 데이터 저장 장치(28)가 고정 자기 디스크, 플로피 디스크 드라이브, 광 디스크 드라이브, 자기 광학 디스크 드라이브, 자기 테이프, 또는 플래시 메모리를 포함하는 비휘발성 메모리일 수 있다.
전술한 설명에서, 본 발명은 특정 실시예를 참조하여 설명하였다. 그러나, 본 발명은 첨부한 청구범위에 개시된 보다 넓은 본 발명의 사상 및 범주로부터 벗어나지 않고 다양한 수정 및 변경이 이루어질 수도 있음은 분명하다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (31)

  1. 제 1 길이의 제 1 캐시 위치 그룹 및 제 2 길이의 제 2 캐시 위치 그룹을 포함하는 제 1 캐시를 구비한 제 1 코어와,
    상기 제 1 캐시보다 상기 제 1 코어로부터 먼 계층 레벨에 있으며, 제 3 길이의 제 3 캐시 위치 그룹을 갖는 제 2 캐시와,
    상기 제 1 캐시 내의 캐시 라인에 대응하는 필드를 구비하는 상기 제 3 캐시 위치 그룹의 한 캐시 위치에 제 1 캐시 라인의 디렉토리 엔트리를 유지하기 위해, 코히어런시 동작을 수행하는 제 1 로직--상기 디렉토리 엔트리는 상기 제 1 캐시 위치 그룹 및 상기 제 2 캐시 위치 그룹 내의 상기 제 1 캐시 라인의 부분들의 존재 또는 부재를 나타내는 벡터를 포함함--과,
    상기 제 1 길이의 제 4 캐시 위치 그룹 및 상기 제 2 길이의 제 5 캐시 위치 그룹을 포함하는 제 3 캐시를 구비하는 제 2 코어를 포함하며,
    상기 제 2 캐시는 상기 제 1 캐시 위치 그룹, 제 2 캐시 위치 그룹, 제 4 캐시 위치 그룹 및 제 5 캐시 위치 그룹에서 상기 제 1 캐시 라인의 부분들에 대한 상기 제 1 캐시 및 상기 제 3 캐시에 대해 행해진 요구를 추적하기 위한 제 1 레지스터 그룹을 포함하는
    프로세서.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 벡터는 또한 상기 제 4 캐시 위치 그룹 및 상기 제 5 캐시 위치 그룹 내의 상기 제 1 캐시 라인의 부분들의 존재 또는 부재를 나타내는
    프로세서.
  5. 제 4 항에 있어서,
    상기 제 1 로직은, 상기 제 1 캐시가 상태 트리의 제 1 노드에 대응하는 메모리 또는 캐시 동작을 요구할 때 상기 벡터로부터 상기 상태 트리를 형성하는
    프로세서.
  6. 제 5 항에 있어서,
    상기 제 1 로직은 상기 제 1 노드가 이미 활성인 경우에 상기 코히어런시 동작을 지연시키는
    프로세서.
  7. 제 5 항에 있어서,
    상기 제 1 로직은 상기 상태 트리 내의 상기 제 1 노드의 조상(ancestor)이 이미 활성인 경우에 상기 코히어런시 동작을 지연시키는
    프로세서.
  8. 제 5 항에 있어서,
    상기 제 1 로직은 상기 상태 트리 내의 상기 제 1 노드의 후손(descendent)이 이미 활성인 경우에 상기 코히어런시 동작을 지연시키는
    프로세서.
  9. 제 5 항에 있어서,
    상기 제 1 로직은 상기 제 1 노드 및 상기 제 2 노드의 의존도에 따라 상기 제 1 노드 및 제 2 노드의 허용가능한 상태에 대한 규칙을 구현하는
    프로세서.
  10. 삭제
  11. 제 1 항에 있어서,
    상기 제 2 캐시는 상기 부분들을 취합하여 상기 부분들 중 한 부분의 현재의 값을 수집하는 제 2 로직을 포함하는
    프로세서.
  12. 제 1 길이의 캐시 위치 및 제 2 길이의 캐시 위치를 각각 포함하는 제 1 레벨의 캐시 그룹 중 하나로부터 메모리 또는 캐시 동작에 대한 요구를 수신하는 단계와,
    제 2 레벨 캐시에서, 상기 제 1 길이의 상기 캐시 위치 및 상기 제 2 길이의 상기 캐시 위치 중 어느 것이 상기 요구에 대응하는 상기 제 2 레벨 캐시의 제 1 캐시 라인의 부분을 포함하는 지를 판정하는 단계와,
    상기 판정 결과에 부분적으로 기초하여 상기 메모리 또는 캐시 동작에 대한 상기 요구를 지연시키는 단계를 포함하는
    방법.
  13. 제 12 항에 있어서,
    상기 판정 단계는 디렉토리 내의 벡터를 검사하는 단계를 포함하는
    방법.
  14. 제 13 항에 있어서,
    상기 판정 단계는 상기 제 2 레벨 캐시의 로직을 이용하여 상기 벡터로부터 상태 트리를 구축하는 단계를 더 포함하는
    방법.
  15. 제 14 항에 있어서,
    상기 판정 단계는 상기 요구에 대응하는 노드로부터 상기 상태 트리 내의 선조 및 후손에게 규칙을 적용하는 단계를 포함하는
    방법.
  16. 제 12 항에 있어서,
    상기 판정 단계가 상기 제 1 캐시 라인의 부분을 발견한 상기 제 1 레벨 캐시 그룹 중 선택된 하나의 레벨 캐시에게 데이터 요구 그룹을 전송하는 단계를 더 포함하는
    방법.
  17. 제 16 항에 있어서,
    레지스터 내에서 상기 데이터 요구를 추적하고 상기 부분을 상기 제 1 캐시 라인의 현재의 값으로 수집하는 단계를 더 포함하는
    방법.
  18. 제 1 길이의 제 1 캐시 위치 그룹 및 제 2 길이의 제 2 캐시 위치 그룹을 포함하는 제 1 캐시를 구비하는 제 1 코어와,
    상기 제 1 캐시보다 상기 제 1 코어로부터 먼 계층 레벨에 있으며, 제 3 길이의 제 3 캐시 위치 그룹을 갖는 제 2 캐시와,
    상기 제 1 캐시 내의 캐시 라인에 대응하는 필드를 구비하는 상기 제 3 캐시 위치 그룹의 한 캐시 위치 내에 제 1 캐시 라인의 디렉토리 엔트리--상기 디렉토리 엔트리는 상기 제 1 캐시 위치 그룹 및 상기 제 2 캐시 위치 그룹 내의 상기 제 1 캐시 라인의 부분의 존재 또는 부재를 나타내는 벡터를 포함함--를 유지하기 위해, 코히어런시 동작을 수행하는 제 1 로직과,
    상기 제 1 길이의 제 4 캐시 위치 그룹 및 상기 제 2 길이의 제 5 캐시 위치 그룹을 포함하는 제 3 캐시를 구비하는 제 2 코어를 포함하며,
    상기 제 2 캐시는 상기 제 1 캐시 위치 그룹, 제 2 캐시 위치 그룹, 제 4 캐시 위치 그룹 및 제 5 캐시 위치 그룹에서 상기 제 1 캐시 라인의 부분들에 대한 상기 제 1 캐시 및 상기 제 3 캐시에 대해 행해진 요구를 추적하기 위한 제 1 레지스터 그룹을 포함하는 프로세서와;
    상기 프로세서를 입력/출력 장치에 연결하는 상호접속부;및
    상기 상호접속부에 의해 상기 프로세서에 결합되는 네트워크 제어기
    를 포함하는 시스템.
  19. 삭제
  20. 삭제
  21. 제 18 항에 있어서,
    상기 벡터는 또한 상기 제 4 캐시 위치 그룹 및 상기 제 5 캐시 위치 그룹 내의 상기 제 1 캐시 라인의 부분의 존재 또는 부재를 나타내는
    시스템.
  22. 제 21 항에 있어서,
    상기 제 1 로직은, 상기 제 1 캐시가 상태 트리의 노드에 대응하는 코히어런시 동작을 요구할 때 상기 벡터로부터 상기 상태 트리를 형성하는
    시스템.
  23. 제 22 항에 있어서,
    상기 제 1 로직은 상기 노드가 이미 활성인 경우에 상기 코히어런시 동작을 지연시키는
    시스템.
  24. 제 23 항에 있어서,
    상기 제 1 로직은 상기 상태 트리 내의 상기 노드의 조상이 이미 활성인 경우에 상기 코히어런시 동작을 지연시키는
    시스템.
  25. 제 24 항에 있어서,
    상기 제 1 로직은 상기 상태 트리 내의 상기 노드의 후손이 이미 활성인 경우에 상기 코히어런시 동작을 지연시키는
    시스템.
  26. 제 1 길이의 캐시 위치 및 제 2 길이의 캐시 위치를 각각 포함하는 제 1 레벨의 캐시 그룹 중 하나로부터 메모리 또는 캐시 동작에 대한 요구를 수신하는 수단과,
    제 2 레벨 캐시에서, 상기 제 1 길이의 상기 캐시 위치 및 상기 제 2 길이의 상기 캐시 위치 중 어느 것이 상기 요구에 대응하는 상기 제 2 레벨 캐시의 제 1 캐시 라인의 부분을 포함하는 지를 판정하는 수단과,
    상기 판정 수단에 의해 생성된 결과에 부분적으로 기초하여 상기 메모리 또는 캐시 동작에 대한 상기 요구를 지연시키는 수단을 포함하는
    장치.
  27. 제 26 항에 있어서,
    상기 판정 수단은 디렉토리 내의 벡터를 검사하는 수단을 포함하는
    장치.
  28. 제 27 항에 있어서,
    상기 판정 수단은 상기 제 2 레벨 캐시의 로직을 이용하여 상기 벡터로부터 상태 트리를 구축하는 수단을 더 포함하는
    장치.
  29. 제 28 항에 있어서,
    상기 판정 수단은 상기 요구에 대응하는 노드로부터 상기 상태 트리 내의 선조 및 후손에게 규칙을 적용하는 수단을 포함하는
    장치.
  30. 제 26 항에 있어서,
    상기 판정 수단이 상기 제 1 캐시 라인의 부분을 발견한 상기 제 1 레벨 캐 시 그룹 중 선택된 하나의 레벨 캐시에게 데이터 요구 그룹을 전송하는 수단을 더 포함하는
    장치.
  31. 제 30 항에 있어서,
    레지스터 내에서 상기 데이터 요구를 추적하고 상기 부분을 상기 제 1 캐시 라인의 현재의 값으로 수집하는 수단을 더 포함하는
    장치.
KR1020077017311A 2004-12-27 2005-12-27 상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치 KR100925572B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/024,278 2004-12-27
US11/024,278 US7454576B2 (en) 2004-12-27 2004-12-27 System and method for cache coherency in a cache with different cache location lengths

Publications (2)

Publication Number Publication Date
KR20070093439A KR20070093439A (ko) 2007-09-18
KR100925572B1 true KR100925572B1 (ko) 2009-11-06

Family

ID=36216791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077017311A KR100925572B1 (ko) 2004-12-27 2005-12-27 상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치

Country Status (7)

Country Link
US (1) US7454576B2 (ko)
JP (1) JP4307508B2 (ko)
KR (1) KR100925572B1 (ko)
CN (1) CN101088074B (ko)
DE (1) DE112005003243T5 (ko)
TW (1) TWI298457B (ko)
WO (1) WO2006072064A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US8959292B1 (en) * 2005-12-22 2015-02-17 The Board Of Trustees Of The Leland Stanford Junior University Atomic memory access hardware implementations
DE102008012979A1 (de) * 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
JPWO2010024071A1 (ja) * 2008-08-25 2012-01-26 日本電気株式会社 キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム
KR101338282B1 (ko) 2009-04-24 2014-01-02 레벨 3 커뮤니케이션즈 엘엘씨 미디어 자원 저장 및 관리
US9774818B2 (en) 2009-04-24 2017-09-26 Level 3 Communications, Llc Media resource storage and management
EP2441005A2 (en) * 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
KR101497516B1 (ko) 2010-12-29 2015-03-02 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화
CN102270180B (zh) * 2011-08-09 2014-04-02 清华大学 一种多核处理器系统的管理方法
KR101856506B1 (ko) * 2011-09-22 2018-05-11 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 쓰기 방법
US8868843B2 (en) * 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
CN104809076B (zh) * 2014-01-23 2018-02-06 华为技术有限公司 Cache的管理方法及装置
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
CN104850508B (zh) * 2015-04-09 2018-02-09 深圳大学 基于数据局部性的访存方法
EP3371707B1 (en) 2015-11-04 2021-10-27 Samsung Electronics Co., Ltd. Systems and methods for implementing coherent memory in a multiprocessor system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3515333B2 (ja) * 1997-08-26 2004-04-05 株式会社東芝 情報処理装置
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
JP3751741B2 (ja) * 1998-02-02 2006-03-01 日本電気株式会社 マルチプロセッサシステム
US6662277B2 (en) * 2001-07-31 2003-12-09 Hewlett-Packard Development Company, L.P. Cache system with groups of lines and with coherency for both single lines and groups of lines
US7111128B2 (en) * 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache

Also Published As

Publication number Publication date
WO2006072064A3 (en) 2006-09-14
TWI298457B (en) 2008-07-01
KR20070093439A (ko) 2007-09-18
JP4307508B2 (ja) 2009-08-05
JP2008525904A (ja) 2008-07-17
CN101088074B (zh) 2010-06-16
DE112005003243T5 (de) 2007-11-08
CN101088074A (zh) 2007-12-12
WO2006072064A2 (en) 2006-07-06
TW200703100A (en) 2007-01-16
US7454576B2 (en) 2008-11-18
US20060143404A1 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
KR100925572B1 (ko) 상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치
US10389839B2 (en) Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US6816947B1 (en) System and method for memory arbitration
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
US6971098B2 (en) Method and apparatus for managing transaction requests in a multi-node architecture
US6704842B1 (en) Multi-processor system with proactive speculative data transfer
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
US9239791B2 (en) Cache swizzle with inline transposition
Bolotin et al. The power of priority: NoC based distributed cache coherency
US6345352B1 (en) Method and system for supporting multiprocessor TLB-purge instructions using directed write transactions
JP3628595B2 (ja) 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード
EP1153349A1 (en) Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node
US20060143406A1 (en) Predictive early write-back of owned cache blocks in a shared memory computer system
JP2002519785A (ja) マルチプロセッサコンピュータシステムのための分割ディレクトリベースのキャッシュコヒーレンシ技術
CN110119304B (zh) 一种中断处理方法、装置及服务器
JP2005189928A (ja) マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
JP4667092B2 (ja) 情報処理装置、情報処理装置におけるデータ制御方法
WO2009123492A1 (en) Optimizing memory copy routine selection for message passing in a multicore architecture
US8930640B2 (en) Multiprocessor computer system with reduced directory requirement
US11061676B2 (en) Scatter gather using key-value store
JP2021522608A (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
WO2016049807A1 (zh) 多核处理器系统的缓存目录处理方法和目录控制器
WO2023124304A1 (zh) 芯片的缓存系统、数据处理方法、设备、存储介质及芯片
US7406554B1 (en) Queue circuit and method for memory arbitration employing same
US7073004B2 (en) Method and data processing system for microprocessor communication in a cluster-based multi-processor network

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151002

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee