KR20060102565A - 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법 - Google Patents

라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법 Download PDF

Info

Publication number
KR20060102565A
KR20060102565A KR1020067013231A KR20067013231A KR20060102565A KR 20060102565 A KR20060102565 A KR 20060102565A KR 1020067013231 A KR1020067013231 A KR 1020067013231A KR 20067013231 A KR20067013231 A KR 20067013231A KR 20060102565 A KR20060102565 A KR 20060102565A
Authority
KR
South Korea
Prior art keywords
write back
cache
snoop
rate
kill
Prior art date
Application number
KR1020067013231A
Other languages
English (en)
Inventor
로이 문석 김
야스키치 오카와
쒕 쾅 쭝
Original Assignee
가부시키가이샤 소니 컴퓨터 엔터테인먼트
인터내셔널 비지니스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시키가이샤 소니 컴퓨터 엔터테인먼트, 인터내셔널 비지니스 머신즈 코포레이션 filed Critical 가부시키가이샤 소니 컴퓨터 엔터테인먼트
Publication of KR20060102565A publication Critical patent/KR20060102565A/ko

Links

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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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
    • 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
    • G06F12/12Replacement control
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating

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)
  • Storage Device Security (AREA)

Abstract

캐시 라이트 백 연산(cache write back operation), 즉 라이트 백과 스누프 푸시(snoop push) 또는 스누프 킬(snoop kill) 사이의 불일치를 수정하기 위해 캐시 데이터 어레이(cache data array)로부터 메모리로 전송된 라이트 백 수정 데이터는 라이트 백과 스누프 푸시 또는 스누프 킬 사이의 진행을 비교한 결과에 의해 취소될 수 있다. 라이트 백은 캐시 미스(cache miss)로 인한 리로드 데이터(reload data)를 수용하는 빈 슬롯(empty slot)을 만들기 위해 의도되며, 스누프 푸시 또는 스누프 킬 연산이 캐시 내에 무효 엔트리(invalid entry)를 만들기 때문에 라이트 백은 불필요하게 된다. 만약 동시발생의 스누프 푸시 또는 스누프 킬이 라이트 백 연산과 함께 존재한다면, 라이트 백 기계는 레이트 캔슬된다. 시스템 성능은 가능한 미래의 재사용을 위해 캐시 데이터 내에 더 많은 캐시 라인(cache lines)을 저장함으로써 향상된다.

Description

라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는 스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및 방법{System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches}
본 발명은 컴퓨터 시스템 분야, 더 구체적으로, 마이크로프로세서의 캐시 시스템에 관한 것이다.
고성능 프로세싱 시스템은 빠른 데이터 처리를 위해 빠른 메모리 액세스(memory access)와 낮은 메모리 대기시간(memory latency)을 요구한다. 시스템 메모리는 프로세서에 데이터를 제공하는데 느리기 때문에 데이터에 대해 더 빠른 액세스 시간으로 프로세서에 데이터를 액세스시키는 방법을 제공하기 위해 캐시(cache)가 설계된다. 캐시가 클수록 전체적으로 더 나은 시스템 성능을 제공하지만, 반대로 작은 캐시에 비하여 대기시간이 더 길어지게 하고 설계를 복잡하게 할 수 있다. 보통 시스템 적용 수준, 특히 네트워킹이나 그래픽환경에서 프로세서가 다른 프로세서와 동기화하거나 통신하는 빠른 방법을 제공하기 위해 더 작은 캐시가 설계된다.
프로세서는 로드(Loads) 및 저장을 통해 메모리와 데이터를 주고 받는다. 시스템 메모리로부터의 데이터는 제때에 캐시를 채운다. 최적의 조건은 프로세서 액세스 데이터의 대부분 또는 모두가 캐시 내에 있는 것이다. 이는 만약 어플리케이션 데이터의 크기가 캐시의 크기와 같거나 더 작은 경우 일어날 수 있다. 일반적으로 캐시의 크기는 설계나 기술적인 문제에 의해 제한되며 어플리케이션 데이터 모두를 수용할 수는 없다. 이것이 프로세서가 캐시 내에 없는 새로운 데이터에 액세스하는 경우와 새로운 데이터를 기입하기 위해 이용할 수 있는 캐시 공간이 없는 경우에 문제가 된다. 그러므로 캐시 컨트롤러는 메모리로부터 새로운 데이터가 도착했을 때 캐시 안에 적당한 공간을 찾아야 한다. 이러한 상황을 조정하기 위해 최저 사용 빈도(Least Recently Used, LRU) 알고리즘이 캐시 컨트롤러에서 사용된다. LRU는 데이터 액세스 히스토리에 기초하여 새로운 데이터에 어떤 위치가 사용될 것인지를 결정한다. 만일 LRU가 시스템 메모리와 일치하는 라인을 선택한 경우(예를 들어 공유상태)에는 새로운 데이터는 그 위치에 겹쳐 써질 것이다. LRU가 '수정됨(modified)'으로 표시된 라인을 선택한 경우 그것은 데이터가 시스템 메모리와 일치하지 않으며 유일한 것을 의미하고, 캐시 컨트롤러는 이 위치의 '수정된' 데이터가 시스템메모리에 역기입되도록 한다. 이러한 동작을 '라이트 백(write back)' 또는 '캐스트아웃(castout)'이라고 하며 라이트 백 데이터를 포함하는 캐시 위치를 '빅팀 캐시 라인(victim cache line)' 이라고 한다.
종래의 캐시 설계에서, LRU 알고리즘은 최저의 빈도로 사용된 데이터를 제거함으로써 소프트웨어에 의해 미래의 데이터 재사용에 대한 예측을 최적화하는데에 사용된다. 그러나 LRU는 잘못된 선택을 할 수도 있고, 그것은 동일한 데이터에 대하여 미래 캐시 미스(cache miss)를 야기할 수도 있다. 그렇다면, 이는 미스 데이터에 대해 메인 메모리로부터 다른 긴 대기시간 리로드(latency reload)를 요구하게 된다.
이러한 라이트 백이나 리로드를 위한 긴 대기시간에 더하여 다른 상황이 성능저하를 유발할 수 있다. 캐시 컨트롤러는 지정된 버스 연산(bus operation)을 통해 시스템 메모리에 데이터를 보냄으로써 편리하게 라이트 백 연산을 완성하려고 한다. 라이트 백 연산중에, 버스 스누프 연산(bus snoop operation)이 라이트 백 어드레스(write back address)에 대한 그것의 일치 어드레스(address matches)와 함께 들어간다. 스누프 연산(snoop operation)은 재시도될 것이다. 즉, 라이트 백 데이터가 시스템 메모리에 있을 때까지 동일한 라이트 백 데이터에 대한 모든 후속 스누프 히트(subsequent snoops' hits)는 재시도될 것이다. 스누프 연산은 멀티프로세서 캐시와 시스템 메모리 사이의 메모리 일치를 유지하기 위해 시스템 버스에서 필요하다.
라이트 백 연산(write back operation)은 긴 대기시간을 갖는 버스 연산이므로, 라이트 백 어드레스에 있어서 모든 스누프 연산 히팅은 재시도될 것이다. 이것은 시스템 성능에 문제를 일으키며 때로는 무한반복(live-lock) 상태를 만들어 낼 수도 있다. 그러므로 가능한 한 이러한 긴 대기시간을 갖는 라이트 백 연산을 피함으로써 시스템 성능이 더 나아질 것이다.
전형적인 라이트 백 캐시(write back cache)는 프로세서가 최적의 성능으로 데이터에 액세스하고, 통신하고, 태스크(tasks) 사이에서 동기화하는 빠른 방법을 제공하기 위해 수행된다. 비록 이 캐시에 들어오고 나가는 데이터의 양이 적을지라도 가능하다면 언제나 라이트 백 연산을 취소하는 메커니즘이 더 나은 성능을 위해 필요하게 된다. 캐시 내에 공간을 만드는 연산에는 '스누프 푸시(snoop push)' 나 '스누프 킬(snoop kill)'의 두 가지 유형이 있다. 스누프 푸시 연산의 일례는 수정된 캐시 히트 데이터 상에서 캐시가 없는 다른 버스 에이전트, 예로서 시스템 버스에 있는 IO 컨트롤러로부터의 저장에 의해 이루어질 수 있다. 캐시 컨트롤러는 상기 버스 상에서 이 IO 컨트롤러 저장 요청을 재시도할 것이며, 수정된 데이터의 가장 최근의 복사본은 IO 컨트롤러가 가장 최근의 수정된 데이터로 메모리를 업데이트 할 수 있도록 메모리 쪽으로 밀려날 것이다. 스누프 푸시 연산은 수정된 데이터를 메모리로 밀어내고 그 데이터를 공유(shared)나 무효(invalid)로 유지한다. 예를 들면 캐시 플러시(cache flush)에서처럼 스누프 킬 연산은 엔트리(entry)를 무효화시키고, 이는 이후의 캐시 미스 리로드(cache miss reload)를 위하여 캐시에 자리를 만들게 된다. 따라서, 스누프 푸시 또는 스누프 킬 연산에 의해 공간이 만들어지므로 라이트 백은 동시발생의 캐시 미스 리로드에 대해서는 불필요해 진다.
시스템 성능은 이러한 메커니즘에 의해 향상될 수 있는데, 이것은 순차적으로 취소된 라이트 백이 후속의 가능한 캐시 미스 및 라이트 백 동안 빅팀(victim)을 발견하는 스누프 재시도를 제거하기 때문이다. 또한, 라이트 백과 같은 긴 대기시간을 갖는 버스 연산을 취소하는 것은 버스에 있어서 부담을 덜어 줄 수 있는데, 특히 스누프 푸시 연산이 동시에 일어나는 경우 그러하다. 그러므로 만약 스누프 상태 기계가 스누프 푸시나 스누프 킬을 수행하는 동안이라면 진행중인 라이트 백 연산을 취소할 수 있도록 하는 것이 바람직하다.
본 발명과 발명의 이점에 대한 좀더 완전한 이해를 위해 첨부된 도면과 관련된 다음의 상세한 설명으로 참고된다.
도 1은 프로세싱 유닛, 캐시 유닛, 및 버스 인터페이스 유닛이 직렬과 병렬로 작동되는 방법 및 본 발명이 적용되는 위치를 보여주는 종래의 멀티 프로세싱 컴퓨팅 시스템의 블록도이다.
도 2는 라이트 백 캐시 시스템의 일례에 대한 기본 블록도이다.
도 3은 라이트 백 연산의 플로우 차트이다.
도 4는 캐시 미스의 경우 라이트 백 연산의 캐시라인(cacheline) 플로우의 상세도이다.
도 5는 캐시 내에서 라이트 백과 스누프 푸시 연산의 캐시라인 플로우의 상세도이다.
도 6은 스누프 푸시 또는 스누프 킬 연산에 의한 라이트 백 레이트 캔슬의 최종 캐시 데이터 어레이 연산에 대한 예시도이다.
본 발명은 캐시 시스템에 있어서 라이트 백 연산의 레이트 캔슬(late cancel) 실행을 제공한다. 라이트 백 캐시는 시스템 버스를 통해 하위계층 기억장치에 연결되어 있다. 캐시 미스에 따른 리로드 연산은 하위 또는 동일 계층의 기억장치로부터 캐시로 데이터를 전송한다. 라이트 백 연산은 캐시로부터 하위계층의 기억장치로 데이터를 전송한다. 유효한 빅팀이 확인되고, 스누프 푸시 또는 스누프 킬의 진행상태가 결정되며, 진행중인 라이트 백 사이클의 검증이 이루어진다. 동시에 발생하는 스누프 킬 또는 스누프 푸시와 라이트 백 연산의 출력응답에 기초하여 라이트 백의 레이트 캔슬의 개시 및 진전 단계가 결정된다.
이하에서는 본 발명에 대한 완전한 이해를 위해 다양한 구체적인 설명들이 제공된다. 그러나 이 분야의 기술자라면 구체적인 설명 없이도 본 발명을 실시할 수 있을 것이다. 다른 실시예에서 불필요한 설명으로 본 발명이 불명료하지 않도록 공지의 구성요소에 대해서도 개략도나 블록도로 설명된다. 더불어, 대부분 네트워크 통신, 전자기적 신호 기술 등과 관련된 설명들은 본 발명을 완전히 이해하는데 필요하다고 고려되지 않거나 관련분야에서 통상의 기술을 가진자의 이해력의 범위에 속하는 사항으로 고려되므로 생략된다.
본원의 나머지 실시예에서, 일 실시예의 캐시는 스누프 푸시나 스누프 킬들이 장치 내에서 수행되는 동안 라이트 백 연산을 방지하기 위한 디지털 논리 연산의 유일한 캐시가 될 수도 있다. 또한, 다른 실시예의 캐시는 주어진 컴퓨터장치를 위해 개발된 방법이나 알고리즘에 따른 데이터 처리를 공유하는 다수의 프로세싱 유닛 중 하나일 수도 있다. 다른 언급이 없다면, 여기에 설명된 모든 기능은 하드웨어나 소프트웨어, 또는 이들의 몇몇 결합에서도 실행될 수 있다. 그러나 바람직한 실시예에서, 이러한 기능들은 하드웨어 캐시 디지털 장치에서 실행된다. 다른 언급이 없다면, 개별 데이터의 이동은 컴퓨터 프로그램코드와 같은 코드, 소프트웨어, 및/또는 그러한 기능을 수행하도록 부호화된 집적회로들과 일치한다.
도 1은 복수의 프로세서, 캐시들, 및 상호작용하는 서브시스템들을 설명하는 멀티프로세서 시스템(100)의 블록도를 도시하고 있다.
이 분야의 기술자라면 프로세서들, 시스템 버스, 메모리 컨트롤러, 메모리 버스, 메인 메모리 모듈, 캐시 등으로 구성되는 서브시스템들의 상호작용과 복잡성을 이해할 수 있을 것이다. 전체 시스템은 정확한 타이밍, 배치, 메모리 장치로 들어오고 나가는 데이터 교환에 의존한다. 데이터는 동시에 이동되거나 저장될 수 있다. 프로세서에서의 동적 저장은 대부분 캐시에서 일어난다. 캐시 내에 전용 디렉토리가 스누핑용 전용 포트와 함께 포함된다. 스누핑은 종속 캐시가 시스템 버스를 감시하고 전송된 어드레스와 캐시 디렉토리 내에 있는 어드레스들을 비교하는 프로세스이다. 매치(match)가 발견되는 경우 부가 연산이 실행될 수 있다. 버스 스누핑 또는 버스 와칭(bus watching)의 두 용어는 동일하다.
도 1은 예를 들어, 명령 유닛들(instruction units), 명령 캐시들(instruction caches), 데이터 캐시들, 고정소수점 유닛들(fixed-point units), 부동소수점들(floating points) 및 로컬 기억장치들을 포함하는 일반화된 중앙 프로세서 유닛들 CPU 1(105) 및 CPU 2(110)를 가진 멀티프로세서 시스템의 일례를 도시한다. 프로세서들 CPU 1(105)과 CPU 2(110)는 버스를 통해서 서로 연결되어 있거나 캐시 115와 캐시 142로 보이듯이 하위 레벨의 캐시를 포함한다. 캐시 115와 캐시 142는 버스 인터페이스 유닛들 버스 IF(125) 및 버스 IF(144)에 연결되며 그것은 차례로 공통 시스템 버스(150)에 연결된다. 다른 프로세서의 캐시들은 프로세서 간 통신을 위한 부가 버스 인터페이스 유닛들을 통해 시스템 버스(150)에 연결될 수 있다. 'n'개의 프로세서 외에, 메모리 컨트롤러(memory controller, MEM CTL) (160)가 시스템 버스(150)에 연결되어 있다. 시스템 메모리(170)는 프로세서들 CPU 1(105)과 CPU 2(110)에 의해 공유되는 공통기억장치용 MEM CTL(160)에 연결되어 있으며, 이것은 여타 'n'개의 프로세서를 가진 시스템에서도 적용된다.
도 2는 도 1에서의 대표적인 캐시 142의 위치를 살펴보기 위한 시스템(100)의 확대도이다. 캐시 142는 데이터 기억장치와 제어 논리(control logic)를 위한 데이터 배열 회로(data array circuitry, CDA)(146)를 포함한다. 제어 논리는 디렉토리(directory, DIR)(147), 프로세서 코어로부터 캐시 가능 기억장치의 액세스(cacheable storage accesses)을 조정하는 '읽기 및 요구'의 유한 상태 기계('Read and Claim' finite state machine, RC)(143), 메모리로의 데이터 라이트 백을 조정하는 라이트 백 상태 기계(write back state machine, WB)(144), 및 스누프 상태 기계(Snoop state machine, Snoop)(145)를 포함한다. 디렉토리(147)는 캐시 데이터 태그와 캐시 데이터 상태를 유지한다.
RC 기계(143)는 캐시 가능 기억장치의 액세스 명령을 수행한다. 이것은 락 획득(lock acqusition) 또는 호출된 아토믹 명령들(atomic instructions), 로드(load)와 예비할당(reserve), 조건부 저장과 내부 프로세스 동기화 명령을 포함한다. 이 일련의 명령들의 목적은 멀티 프로세서 시스템 내에서 하나의 프로세서에 공통데이터에 대한 소유권을 줌으로써 규칙적으로 프로세서들 사이의 연산을 동기화하는 것이다. 일반적으로, 이 일련의 명령들의 목적은 멀티프로세서 시스템 내에서 동시에 하나의 프로세서의 데이터에 대한 소유권을 줌으로써 프로세서들 사이의 연산을 동기화하는 것이다.
WB 기계(144)는 상기 명령들 중 하나에 대하여 캐시 미스가 발생하는 경우와 캐시 142가 가득 차 있는 경우, RC 기계(143)에 대해 라이트 백을 조정하고, 빅팀 엔트리(victim entry)는 수정된 상태이다.
스누프 기계(Snoop)(145)는 시스템 전반에 걸쳐 메모리의 일관성을 유지하기 위해 시스템 버스(150)로부터 오는 스누프 연산을 조정한다.
도 3은 본 발명의 일 실시예에 따른 라이트 백 연산의 플로우 차트이다. 이 플로우 차트는 라이트 백이 필요한지 아닌지의 결정 과정을 도시한다. 일반적으로, 이러한 실시예는 캐시 142가 단지 하나의 라이트 백(WB, 144) 기계를 가지도록 하기 위함이다. 라이트 백 요청은 캐시 가능 기억장치 액세스 명령들이 DIR (directory, 147) 검색에서 RC(143) 미스로 수행되어 캐시 142에 빈자리가 없을 때 '읽기 및 요구'('read and claim', RC)(143) 기계에 의해 디스패치된다. RC(143)는 DIR(147)의 디렉토리 검색 단계(Directory Lookup)(301)와 캐시 데이터 어레이(Cache Data Array, 146)에 공간이 없다는 미스의 발견 단계(디렉토리 미스 단계(Directory Miss, 302)와 빈 엔트리 단계(Empty Entry, 303)) 직후 WB 기계(144)를 신속히 디스패치한다. 만약 지정된 최저 사용 빈도(least-recently-used)의 빅팀 엔트리(Victim Entry) 선택 단계(304)가 수정되면 WB(144)는 캐시 142 내에 빈자리를 만들기 위해 메모리에 엔트리 수정 라인 단계(Entry Modified Line, 305)를 라이트 백 하여야 한다.
다음으로, WB 상태기계(144)는 진행중인 스누프(306)를 체크한다. WB(144)는 라이트 백 레이트 캔슬(late cancel) 발생을 체크한다. 이러한 상태는 스누프 기계가 스누프 푸시 무효화 또는 스누프 킬 연산을 실행중인 경우에 일어난다. WB(144)에서 레이트 캔슬이 동작중일 경우, WB 기계(144)는 라이트 백이 외부 기능(extraneous function)이므로 유휴 상태(idle state)가 된다. 만약 WB(144)에서 레이트 캔슬이 동작중이 아니라면, WB 기계(144)는 단계 307에서 라이트 백 연산을 완료하기 위해 메모리에 빅팀 엔트리를 계속 저장한다.
도 4는 5개 라인의 캐시(400)가 도시되어 있다. 도 4는 캐시 미스 때문에 빅팀 라인(victim line)이 라이트 백하고 있는 라이트 백의 캐시관리를 나타낸다. 캐시 142의 첫 번째 연산은 캐시 400의 초기상태를 보여주는 칼럼 "A"에서 일어난다.
캐시 미스는 하위 기억장치 또는 수평적인 캐시로부터 데이터 리로드를 요청하는 프로그램을 요구하는 한편, 채워지지 않는 캐시로부터 읽어 들이기 위한 요청이다. 이러한 미스 때문에, 빅팀 엔트리(victim entry)는 만약 데이터 리로드를 위한 빈자리가 없고 빅팀 엔트리가 수정되었다면 라이트 백 명령에 의해 하위 기억장치로 밀려난다. 수정된 라인은 시스템 내 어디에도 복사본이 없는 데이터 수정의 결과이다. 즉, 현재의 캐시와 메인 메모리 위치에서 검색된 엔트리 사이의 무효한 매치(invalid match)이다.
LRU 알고리즘은 후속 로드 또는 저장 연산에 있어서 가장 액세스될 것 같지 않은 데이터인 빅팀 엔트리를 선택하는데 사용될 수 있다. 빅팀 포인터(victim pointer)는 캐시 가능 기억장치 액세스 명령에 미스가 있을 때 수정된 엔트리를 라이트 백 하기 위해 사용되지만, 아토믹 캐시(atomic cache)에 있는 모든 엔트리들이 아직은 유효하다.
단지 설명하기 위해서, 5개의 엔트리는 유효한 캐시 가능 기억장치 데이터로 채워진다는 가정을 한다. RC 기계(143)는 캐시 가능 기억장치 액세스 명령 실행에 있어서의 캐시 미스로 인하여 빅팀 라인을 라이트 백하기 위해 WB 기계(144)를 디스패치한다. 캐시 데이터 어레이(400)의 칼럼 "B"에서 LRU는 라이트 백을 요하는 수정된 빅팀 라인을 선택한다. 캐시 데이터 어레이(400)의 칼럼 "C"에서, 빅팀 라인은 시스템 메모리로 보내어 진다. 라이트 백 이후에 빅팀 라인은 무효가 되고 리로드를 할 수 있게 된다.
최저 사용 빈도 레지스터(LRU)는 하나의 빅팀 엔트리 403을 선택한다(LRU는 캐시 액세스 히스토리를 끊임없이 분석하고 어떤 라인이 최근 최소로 사용된 엔트리인지 결정하는 논리회로이다). 그리고 나서, WB 기계는 새로운 엔트리를 위해 그 라인을 비우기 위해 최소 사용 데이터 라인을 제거한다. 이 새로운 엔트리는 캐시 미스 리로드를 위해 사용된다. 그러므로 빅팀 라인 403이 공유 상태에 있지 않은 한, 라이트 백 기계는 각각의 빅팀 엔트리를 라이트 백하고 무효화하기 위해 작동한다. 마지막 연산에서 빅팀 라인 403은 다음 캐시 미스의 리로드를 위해 사용된다.
도 4에서, 당업자들은 캐시 데이터 어레이에서 유효한 엔트리와 무효인 엔트리의 출입의 차이를 이해할 것이다. 상기 실시예는 캐시 데이터 어레이(400)에서 빅팀 라인 403 위치의 일례일 뿐이다. 다른 실시예에서는 하나의 프로세서 내 또는 복수의 코프로세서(co-processor) 내 및 사이에서 병렬 또는 직렬로 작동하는 복수의 캐시를 포함할 수 있다.
더욱이, 이것은 단지 몇몇 조합적인 배열중 하나의 예이다. 캐시는 5개의 라인 캐시 시스템에 제한되지 않는다. 그러나 고정된 구성요소의 수가 증가하면 매트릭스의 크기가 증가하고 전체 조합 경우의 수가 증가하여, 결국 대기시간이 증가하게 된다.
도 5에서는 계속하여 일 실시예에 의한 캐시 데이터 어레이(400)의 개략도를 도시한다. 라이트 백과 스누프 푸시 또는 스누프 킬 연산이 캐시 데이터 어레이(Cache Data Array, CDA)(400)의 다른 엔트리에서 동시에 일어날 때 스누프 푸시 또는 스누프 킬이 무효 엔트리를 만들어 내므로 라이트 백은 불필요하다. 이것은 CDA(400)이 캐시 가능 기억장치 액세스 연산(도 4에서 논의됨)에 유용한 5개의 엔트리만 가지고 있기 때문에 CDA(400)에서 매우 중요하다. 만약, 라이트 백과 스누프 푸시가 동시에 발생할 수 있다면 5개 엔트리 중 2개가 무효화 되고 심각하게 성능을 저하할 것이다.
이러한 문제를 해결하기 위해, 만약 스누프 기계가 스누프 푸시 또는 스누프 킬을 수행하는 동안이라면 진행중인 라이트 백을 취소하기 위해 WB(144)에 레이트 캔슬 로직이 추가된다.
CDA(400)의 칼럼 "C"에서 보이듯이, 만약 라이트 백이 취소되지 않은 채 남아있다면 라이트 백 이후에는 2개의 무효 엔트리가 남게 된다. 그러므로 스누프 푸시 또는 스누프 킬의 제거 동작이 이미 라인을 제거했기 때문에 이러한 라이트 백이 불필요했던 것이다. 스누프 킬 또는 스누프 푸시를 접수하면 유효한 빅팀 403라인은 두 개의 무효 엔트리가 남은 캐시 미스용 메모리로 라이트 백된다. WB(144)는 프로세스 실행중에 동시발생의 스누프 푸시 또는 킬 연산을 발견하기 위한 메커니즘이 있다. 만약, 상태기계가 스누프 푸시 또는 킬을 발견한 경우 진행중인 라이트 백은 레이트 캔슬된다.
도 6은 마지막 캐시 142(이 실시예는 캐시 115 또는 여타의 "n"프로세서에서도 유사함)의 캐시 상태를 나타낸다. WB(144)의 레이트 캔슬 때문에, 라이트 백은 발생하지 않으며 캐시 데이터 어레이(400)에 4개의 유효한 라인이 남는다. 그리고 나서 라이트 백은 스누프 푸시 또는 스누프 킬 엔트리였던 데이터의 리로드를 위해서 대기한다. 명백하게 5개의 엔트리 중 4개는 WB 상태 기계(144)가 끝난 후 아직 유효하며, 그것은 예상됐던 바람직한 결과이다.
이와 같이 본 발명의 실시예를 들어 설명하였으나, 본 발명은 상기 실시예에 한정되지 않는다. 광범위한 변경, 수정, 치환, 대체가 상기 명세서에서 고려될 수 있으며, 일부 실시예에서는 본 발명의 몇 가지 특징들이 이에 대응하는 나머지 특징들을 사용하지 않고 도입될 수 있다. 많은 변경과 수정들이 상기 실시예의 재검토에 기초하여 이 분야의 기술자들에 의해 바람직한 방향으로 고려될 수도 있다. 따라서 첨부된 청구항들은 본 발명의 범위와 일치하게 넓게 해석되는 것이 적절하다.

Claims (14)

  1. 라인의 스누프 푸시(snoop push) 또는 스누프 킬(snoop kill)이 동시에 발생하는 동안 라이트 백(write back)의 레이트 캔슬(late cancel)을 일으키는 시스템에 있어서,
    시스템 버스에 연결된 라이트 백 캐시에 연결된 프로세서;
    상기 라이트 백 캐시 내에 첨부된 복수의 동일한 캐시 데이터 어레이; 및
    캐시 데이터 어레이(cache data array) 내의 각각의 엔트리에 상태 정보를 저장하는 디렉토리를 이용하는 캐시 관리(cache management)를 포함하는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서, 상기 라이트 백 연산 컨트롤러는 상기 레이트 캔슬 연산을 처리하는 것을 특징으로 하는 시스템.
  3. 제2항에 있어서, 상기 빅팀(victim) 선택 메커니즘은 상기 프로세서의 과거 액세스 히스토리에 기초하여 가능한 라이트 백 빅팀을 위치시키는 것을 특징으로 하는 시스템.
  4. 제2항에 있어서, 상기 스누프 푸시 또는 킬 연산의 검출 메커니즘은 상기 동시발생의 라이트 백을 취소시키는 것을 특징으로 하는 시스템.
  5. 제4항에 있어서, 상기 스누프 푸시 또는 스누프 킬은 라이트 백 레이트 캔슬을 보완하는 빈 슬롯을 형성하도록 계속 실행되는 것을 특징으로 하는 시스템.
  6. 제2항에 있어서, 상기 라이트 백 레이트 캔슬은 하위 계층의 기억장치에 수정된 빅팀 데이터의 전송을 정지하고 상기 빅팀 엔트리를 유효한 상태로 유지하는 것을 특징으로 하는 시스템.
  7. 캐시 시스템에서 라이트 백 연산의 레이트 캔슬을 수행하는 방법에 있어서,
    라이트 백 캐시를 버스에 연결하는 단계;
    프로세서의 캐시 가능 기억장치 액세스 히스토리(cacheable storage access history)를 분석하는 단계;
    상기 라이트 백 캐시 내에서 스누프 푸시 또는 스누프 킬의 진행 상태를 결정하는 단계;
    상기 라이트 백 캐시 내의 진전 상태 및 진행중인 라이트 백 사이클을 확인하는 단계; 및
    동시발생의 스누프 킬 또는 스누프 푸시와 상기 라이트 백 캐시 내의 라이트 백 연산에 반응하는 결과에 기초하여 상기 라이트 백 상태의 레이트 캔슬을 일으키는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 상기 레이트 캔슬 연산은 라이트 백 캐시 내의 상기 스누프 컨트롤러 및 레이트 캔슬 라이트 백용 상기 라이트 백 컨트롤러 사이에 결합 프로세스를 포함하는 것을 특징으로 하는 방법.
  9. 제7항에 있어서, 레이트 캔슬 라이트 백은 스누프 푸시 또는 킬 타입이 진행중이라면 활성화되는 것을 특징으로 하는 방법.
  10. 제9항에 있어서, 상기 레이트 캔슬 라이트 백은 라이트 백이 진행중이라면 활성화되는 것을 특징으로 하는 방법.
  11. 제9항에 있어서, 상기 라이트 백을 레이트 캔슬할지의 결정은 상기 스누프 푸시 또는 스누프 킬의 동시 진행 및 상기 라이트 백 캐시 내의 라이트 백 연산을 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제9항에 있어서, 상기 라이트 백을 레이트 캔슬하는 상기 프로세스는 상기 의도된 빅팀이 레이트 캔슬 라이트 백에 대하여 유효한 빅팀이라는 확인 코드를 전달하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 컴퓨터 시스템에서 코드를 인증하는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 컴퓨터 프로그램이 내장된 매체를 구비하고, 상기 컴퓨터 프로그램은
    라이트 백과 동시에 발생하는 스누프 푸시 또는 스누프 킬을 결정하는 컴퓨터 코드;
    유효한 빅팀 라인을 확인하는 컴퓨터 코드; 및
    라이트 백 캐시 데이터 어레이 공간으로부터 수정된 빅팀을 제거하는 컴퓨터 코드를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  14. 컴퓨터 시스템에서 레이트 캔슬 라이트 백을 제공하는 컴퓨터 프로그램에 있어서, 상기 레이트 캔슬 라이트 백은
    동시에 발생하는 스누프 푸시 또는 스누프 킬과 라이트 백을 결정하는 컴퓨터 코드; 및
    라이트 백 캐시 데이터 어레이로부터 수정되지 않은 빅팀을 플러시(flush)하는 컴퓨터 코드를 포함하는 컴퓨터 프로그램을 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020067013231A 2004-06-03 2005-06-01 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법 KR20060102565A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/860,426 US7353341B2 (en) 2004-06-03 2004-06-03 System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
US10/860,426 2004-06-03

Publications (1)

Publication Number Publication Date
KR20060102565A true KR20060102565A (ko) 2006-09-27

Family

ID=35094384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013231A KR20060102565A (ko) 2004-06-03 2005-06-01 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법

Country Status (7)

Country Link
US (1) US7353341B2 (ko)
EP (1) EP1725938A1 (ko)
JP (1) JP4577729B2 (ko)
KR (1) KR20060102565A (ko)
CN (1) CN1910560A (ko)
TW (1) TW200619938A (ko)
WO (1) WO2005121970A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214601B2 (en) * 2004-07-30 2012-07-03 Hewlett-Packard Development Company, L.P. Purging without write-back of cache lines containing spent data
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
KR100668326B1 (ko) * 2005-02-01 2007-01-12 삼성전자주식회사 3차원 그래픽스 데이터를 랜더링하는 방법 및 장치
GB2484088B (en) * 2010-09-28 2019-08-07 Advanced Risc Mach Ltd Coherency control with writeback ordering
JP2013069139A (ja) * 2011-09-22 2013-04-18 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
CN102902631B (zh) * 2012-09-18 2015-04-15 杭州中天微系统有限公司 一种避免读缺失时数据回写的多处理器核间传输方法
US9489305B2 (en) * 2014-12-16 2016-11-08 Qualcomm Incorporated System and method for managing bandwidth and power consumption through data filtering
US10073776B2 (en) * 2016-06-23 2018-09-11 Advanced Micro Device, Inc. Shadow tag memory to monitor state of cachelines at different cache level

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829027A (en) * 1994-05-04 1998-10-27 Compaq Computer Corporation Removable processor board having first, second and third level cache system for use in a multiprocessor computer system
US5684977A (en) * 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5829033A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Optimizing responses in a coherent distributed electronic system including a computer system
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US6349367B1 (en) * 1999-08-04 2002-02-19 International Business Machines Corporation Method and system for communication in which a castout operation is cancelled in response to snoop responses
US6502171B1 (en) * 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data

Also Published As

Publication number Publication date
US7353341B2 (en) 2008-04-01
CN1910560A (zh) 2007-02-07
JP4577729B2 (ja) 2010-11-10
EP1725938A1 (en) 2006-11-29
JP2007533014A (ja) 2007-11-15
WO2005121970A1 (en) 2005-12-22
US20050273563A1 (en) 2005-12-08
TW200619938A (en) 2006-06-16

Similar Documents

Publication Publication Date Title
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5148533A (en) Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units
US5996048A (en) Inclusion vector architecture for a level two cache
JP3067112B2 (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US5551005A (en) Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US6249846B1 (en) Distributed data dependency stall mechanism
JP2022534892A (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
US6519685B1 (en) Cache states for multiprocessor cache coherency protocols
JP3737834B2 (ja) 2重化キャッシュ・スヌープ機構
TWI432963B (zh) 加速器之低成本快取一致
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
JP3714617B2 (ja) キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
US20090106498A1 (en) Coherent dram prefetcher
JPH0619786A (ja) キャッシュコヒーレンスを維持する方法及び装置
KR20060102565A (ko) 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법
US6665767B1 (en) Programmer initiated cache block operations
KR20070040340A (ko) 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템
US6178484B1 (en) DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
WO1997004392A1 (en) Shared cache memory device
JP2001043133A (ja) マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application