KR100318789B1 - 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법 - Google Patents

멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법 Download PDF

Info

Publication number
KR100318789B1
KR100318789B1 KR1020000010110A KR20000010110A KR100318789B1 KR 100318789 B1 KR100318789 B1 KR 100318789B1 KR 1020000010110 A KR1020000010110 A KR 1020000010110A KR 20000010110 A KR20000010110 A KR 20000010110A KR 100318789 B1 KR100318789 B1 KR 100318789B1
Authority
KR
South Korea
Prior art keywords
cache
data
lower level
memory
request
Prior art date
Application number
KR1020000010110A
Other languages
English (en)
Other versions
KR20000076752A (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 KR20000076752A publication Critical patent/KR20000076752A/ko
Application granted granted Critical
Publication of KR100318789B1 publication Critical patent/KR100318789B1/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/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

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

Abstract

메모리 캐쉬 시스템은 멀티프로세서 환경에서 사용된다. 제 1 프로세서는 제 1 레벨 1 캐쉬를 사용하여 데이타에 접근하고, 제 2 프로세서는 제 2 레벨 1 캐쉬를 사용하여 데이타에 접근한다. 기억 제어 회로는 제 1 및 제 2 레벨 1 캐쉬들, 레벨 2 캐쉬, 그리고 주 메모리 사이에 위치한다. 레벨 2 캐쉬는 주 기억장치의 데이타의 복사물들을 유지하고, 나아가 레벨 1 캐쉬들이 데이타의 복사물들을 갖는지와 복사물들이 변경되었는지의 표시를 유지한다. 프로세서가, 관련된 레벨 1 캐쉬 안에 상주하지 않는 데이타에 접근하면 요청이 이러한 데이타를 위하여 레벨 2 캐쉬에 전달된다. 그러면 레벨 2 캐쉬는 레벨 1 캐쉬로 데이타의 복사물을 반환할 수 있는지 또는 주 메모리로부터 데이타에 접근해야 하는지를 결정한다. 또한 레벨 2 캐쉬는 다른 레벨 1 캐쉬가 데이타의 변경된 복사물을 저장하고 있는 것으로 결정하면, 레벨 2 캐쉬는 기억 제어 회로 포인터를 데이타의 변경된 복사물을 갖고 있는 레벨 1 캐쉬로 반환한다. 그러면 기억 제어 회로는, 데이타의 변경된 복사물을 갖고 있는 레벨 1 캐쉬가 레벨 2 캐쉬나 주 메모리로의 데이타의 반환 없이 변경된 데이타를 레벨 1 캐쉬의 요청에 전달하는 결과가 된다. 이는 다중 프로세서들에 의한 동일한 데이타의 반복적인 쓰기(write)들의 결과를 개선시킨다.

Description

멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는 시스템과 방법{SYSTEM AND METHOD FOR MANAGING CACHE IN A MULTIPROCESSOR DATA PROCESSING SYSTEM}
본 발명은 캐쉬의 성능을 향상시키는 방법의 메모리 캐쉬 시스템의 관리에 관한 것이다.
데이타 처리 시스템에 있어서 명령들 및 관련된 데이타들은 메모리로부터 처리를 위한 하나 이상의 프로세서들로 전달되고, 프로세서에 의해 만들어진 결과 데이타들은 저장을 위해 메모리로 반환된다. 따라서 전형적인 처리 동작들은 메모리로부터의 빈번한 그리고 반복적인 읽기와 쓰기를 수반한다. 그에 따른 결과로서, 메모리 접근 지연들은 종종 데이타 처리 시스템의 성능의 주된 제한점이 된다. 따라서 성능을 최대화하기 위해서는 되도록이면 메모리 접근 속도가 최대화 되어져야 한다. 그러나 종종 비용과 다른 제한점들은 주 메모리가 비교적 긴 접근 시간 회로로 구성되어 있는 것을 요한다. 상기의 결과적인 성능 결점들을 극복하기 위하여 메모리 캐쉬들이 전형적으로 사용된다.
메모리 캐쉬는 전형적으로 비교적 작으나 고속인 메모리의 뱅크를 포함하여, 주 메모리보다 더 빨리 프로세서(들)에 의해 접근될 수 있다. 주 메모리의 메모리 위치들은 캐쉬에 복사되어진다. 프로세서에 의해 접근된 특정한 메모리 위치가 캐쉬에 복사되어지면 (캐쉬 '히트(hit)' 라 알려진 이벤트), 프로세서는 주 메모리로의 접근을 위하여 기다리는 대신에 캐쉬로 빨리 접근할 수 있다. 캐쉬는 캐쉬내에 히트된 접근들의 부분을 최대화하기 위한 목적으로 관리된다.
캐쉬들은 전형적으로 주 메모리내에서 발견되는 메모리 위치들의 비교적 긴 시퀀스들인 '라인들(lines)' 로 구성되어 있다. 전형적으로 프로세서에 의해 접근된 메모리 위치가 캐쉬에 복사되지 않으면 (캐쉬 '미스(miss)' 라 알려진 이벤트), 미스된 메모리 위치와 이웃하는 메모리 위치들을 포함하는 전체의 라인이 다른 캐쉬들 또는 주 메모리로부터 미스된 위치를 검색하기 위한 부분으로서 캐쉬 안으로 들어오게 된다. (캐쉬안으로의 '라인필(linefill)' 이라 알려진 이벤트)
전형적으로, 각 캐쉬 라인은 주 메모리내의 위치들의 다중 그룹들과 관련된다. 각 캐쉬 라인은 메모리 위치들의 관련된 그룹들의 복사물을 저장하고, 그외에 어떤 메모리 위치들의 그룹들이 현재 그 라인에 저장되었는지의 표시를 저장한다. 따라서 프로세서가 특정한 메모리 위치로의 접근을 요청할때, 메모리 위치에 대응하는 캐쉬 라인은, 캐쉬라인이 요청된 위치를 포함하는 메모리 위치들의 그룹을 저장하고 있는지를 결정하기 위해서, 접근되어진다. 만약 그렇다면, 요청된 메모리 위치는 캐쉬내에서 접근 되어진다. 만약 그렇지 않다면, 요청된 위치를 포함하는 메모리 위치들의 그룹이 캐쉬내로 '라인필' 된다.
전형적으로, n-웨이 연관 캐쉬는 한번에 캐쉬내의 캐쉬 라인에 대응하는 위치의 여러 그룹들 중 n개를 저장한다. 메모리 위치들의 그룹이 캐쉬안으로 라인필될때, 동일한 캐쉬 위치내의 메모리 내용들은 대체될 필요가 있을 수 있다. 만약 대체된 캐쉬 라인의 내용들이 변경되었다면 라인은 주 메모리내의 위치들의 대응하는 그룹안으로 다시 저장되어야 한다. (캐쉬로부터의 '캐스트백(castback)' 또는 '라이트백(writeback) 이라 알려진 이벤트)
고성능 데이타 처리 시스템들에서는, 종종 프로세서가 처음의 시도에 의해 메모리 위치에 접근하여 '레벨 1' 또는 L1 캐쉬안에 상기 위치의 복사물을 위치시키기 위하여 구성된 둘 이상의 캐쉬들이 있다. 만약 L1 캐쉬내에 미스가 있다면, '레벨 2' 또는 L2 캐쉬내에 소망의 메모리 위치의 복사물을 위치시키고자하는 시도가 이루어진다. 만약 L2 캐쉬내에 미스가 있다면, 각 하위 레벨 캐쉬는 같은 방법으로 연속적으로 체크된다. 만약 캐쉬들 중 하나에 히트가 있으면, 소망의 메모리 위치들은 그 캐쉬로부터 얻어지고, 전형적으로, 접근된 메모리 위치들은 캐쉬 라인을 경쟁하는 이웃하는 위치들과 더불어 적어도 L1 캐쉬의 적절한 위치로 복사되고, 어떠한 경우에는 접근이 '캐쉬-인히비티드(cache-inhibited)' 될 수도 있으며 이 경우에서 데이타는 검색 후에 L1 캐쉬내에 저장되지 않는다. 만약 모든 캐쉬들에 미스가 있으면, 미스된 위치는 캐쉬라인을 경쟁하는 이웃하는 위치들과 더불어 주 메모리로부터 검색되어지고, 접근이 캐쉬-인히비티드 되지 않는다면 미스된 위치는 하나 이상의 캐쉬들로 채워진다. 유사하게, 만약 라인이 캐쉬로부터 캐스트백된다면 라인은 상위 레벨 캐쉬, 주 메모리, 또는 양자에 씌어 질 수도 있다.
전형적으로, 명령들과 데이타들의 라인들은 버퍼들을 이용하여 캐쉬들과 프로세서들로부터 다른 캐쉬들과 프로세서들로 전달된다. 예를들어, 두개의 버퍼들이 각각 레벨 1 캐쉬와 레벨 2 캐쉬에 연결되어 있는 하나의 아키텍처를 고려해보자. 버퍼들은 또한 시스템 버스에 의하여 주 메모리, 호스트 프로세서, 및 가능한 다른 프로세서들에 연결되어 있다. 버퍼들은 상이한 전송률을 가진 구성요소들 사이에서 데이타들 또는 명령들의 순조로운 천이를 가능하게 해준다.
멀티프로세서 시스템들에서, 종종 하나 이상의 하위 레벨 캐쉬들 또는 주 메모리는 다중 프로세서들에 의하여 공유되어진다. 상기의 환경에서, 데이타가프로세서에 의하여 변경될때, 다른 프로세서가 데이타에 접근하기 전에 변경들이 공유된 캐쉬 또는 메모리로 반환될 수 있게 주의가 기울어져야 하는데, 이는 프로세서들이 업데이트되지 않은 데이타에 동작들을 수행하지 않게 하기 위해서이다. 전형적으로, 상기의 환경에서는 프로세서가 데이타를 변경하기 전에 프로세서는 데이타의 소유권을 요청해야한다. 일단 데이타의 소유권이 프로세서에 주어지면, 프로세서는 데이타로의 배타적인 접근을 갖게 되고, 다른 프로세서들은 데이타가 공유된 캐쉬 또는 메모리로 라이트백 될때까지는 데이타로의 접근 또는 변경을 할 수 없게 된다. 만약 제 1 프로세서가 제 2 프로세서에 의해 배타적으로 유지된 데이타에 접근하려고 한다면, 제 1 프로세서는 데이타의 소유권을 요청하고, 그 결과로서 제 2 프로세서는 데이타를 공유된 캐쉬 또는 데이타에 라이트백 하게 되고, 그러면 데이타는 제 1 프로세서로 이송된다.
상기의 전형적인 구조는, 예를 들어 두 프로세서들이 동시에 동일한 데이타에 쓰기를 하는것과 같은 특별한 상황에서는 비효율적일 수 있다. 상기의 상황에서, 제 1 프로세서는 데이타에 쓰기 위한 데이타의 소유권을 얻을 것이다. 그러면 제 2 프로세서는, 데이타에 쓰기 위하여 소유권을 요청할 것이고, 데이타가 배타적인 상태로 제 2 프로세서로 이송될 수 있게 하기 위하여 제 1 프로세서가 공유된 캐쉬 또는 메모리에 데이타를 라이트백할 것이다. 그러면 제 1 프로세서는, 데이타에 쓰기 위해서 소유권을 요청할 것이고, 데이타가 배타적인 상태로 제 1 프로세서에 이송될 수 있게 하기 위하여 제 2 프로세서가 공유된 캐쉬 또는 메모리에 데이타를 라이트백 하게 할 것이다. 이러한 교환은 두 프로세서들이 데이타의 쓰기를 시도하는 한 계속될 것이고, 공유된 캐쉬 또는 메모리에의 과도한 양의 라이트백들과 성능 감소를 초래할 것이다.
따라서, 특히 멀티프로세서 환경에서, 캐쉬의 성능을 향상시키는 방법으로서 관리되는 캐쉬를 위한 요구사항이 있다.
본 발명의 원리들에 따라, 메모리 캐쉬 시스템은 제 1 및 제 2 프로세서들을 갖는 멀티프로세서 환경에서 사용된다. 제 1 프로세서는 제 1 캐쉬와 공유된 하위 레벨 기억장치를 사용하여 데이타에 접근하고, 제 2 프로세서는 제 2 캐쉬와 공유된 하위 레벨 기억장치를 사용하여 데이타에 접근한다. 기억 제어 회로는 제 1 및 제 2 캐쉬들, 그리고 하위 레벨 기억장치 사이에 위치한다. 제 1 또는 제 2 프로세서가 각 제 1 또는 제 2 캐쉬에 상주하고 있지 않은 데이타에 접근할때, 요청이 상기 데이타를 위한 기억 제어 회로에 이송된다. 제 1 및 제 2 프로세서들에 의한 동일한 데이타의 반복되는 쓰기의 효과를 개선하기 위해, 기억 제어 회로가 제 1 캐쉬로부터 데이타의 요청을 받고 데이타가 제 2 프로세서에 의해 변경되었고 제 2 캐쉬내에 변경된 형태로 저장되었다면, 기억 제어 회로는 제 2 캐쉬가, 공유된 하위레벨 기억장치로의 데이타의 반환없이 변경된 데이타를 제 1 캐쉬에 전달하도록한다.
이하에 기술할 구체적인 실시예에서, 공유된 하위 레벨 기억 시스템은, 레벨 1 캐쉬들인 제 1 및 제 2 캐쉬들과 비교하여, 하위 레벨 또는 레벨 2 캐쉬를 포함한다. 레벨 2 캐쉬는 주 기억장치의 데이타의 복사물들을 유지하고, 나아가 레벨 1 캐쉬들이 데이타의 복사물들을 갖는지와 복사물들이 변경되었는지의 표시를 유지한다. 레벨 1 캐쉬로부터의 데이타 요청이 기억 제어 회로에 의하여 수령될때, 이 요청은 다른 레벨 1 캐쉬가 데이타의 변경된 복사물을 저장하고 있는지를 결정하는 레벨 2 캐쉬로 이송되고, 만약 그렇다면, 레벨 2 캐쉬는 기억 제어 회로 포인터를 데이타의 변경된 복사물을 갖고 있는 레벨 1 캐쉬로 반환한다.
레벨 2 캐쉬는 최소-최근-사용 (least recently used) 으로부터 최대-최근-사용 (most recently used) 의 순으로 큐 (queue) 에 데이타를 유지한다. 레벨 1 캐쉬로부터의 데이타 요청이 포인터를 다른 레벨 1 캐쉬로 반환함으로써 만족되면, 레벨 2 큐는 레벨 2 캐쉬내의 데이타의 복사물을 식별하기 위하여 최대-최근-사용으로 업데이트된다.
각 레벨 1 캐쉬는 레벨 1 캐쉬내의 데이타가 공유되었는지 또는 변경되었는지의 표시를 유지한다. 만약 공유된 데이타에 쓰기가 시도되면, 소유권을 위한 요청이 데이타로의 쓰기에 앞서 레벨 2 캐쉬로 이송된다. 레벨 2 캐쉬는 레벨 2 캐쉬내의 데이타가 공유되었는지, 배타적인지 또는 변경되었는지의 표시를 유지한다. 레벨 2 캐쉬내의 데이타의 소유권의 요청이 레벨 1 캐쉬로부터 보내질때, 만약 그 데이타가 공유된 것으로 인식되어진다면, 레벨 2 캐쉬는 레벨 1 캐쉬로 소유권을 주기에 앞서 시스템 버스로부터 데이타의 소유권을 요청한다. 게다가, 레벨 1 캐쉬로 데이타의 소유권을 주는 부분으로서 및 변경을-위한-읽기에 응답하여 레벨 1 캐쉬로 데이타를 이송하는 부분으로서, 레벨 2 캐쉬는 데이타의 복사물들을 가진 모든 레벨 1 캐쉬들이 데이타를 플러쉬 (flush) 하게 지시한다.또한 레벨 2 캐쉬는, 소유권이 레벨 1 캐쉬에 주어질때 또는 데이타가 변경을-위한-읽기에 응답하여 레벨 1 캐쉬로 이송될 때마다, 변경된 것으로 데이타를 표시한다.
레벨 2 캐쉬가 에이징에 기인하여 또는 다른 프로세서 컴플렉스로의 소유권의 상실에 기인하여 데이타를 제거할때, 레벨 2 캐쉬는, 데이타의 변경되지 않은 복사물을 가지고 있는 임의의 레벨 1 캐쉬로 하여금 레벨 1 캐쉬로부터 데이타를 플러쉬하게 지시하거나, 데이타의 변경된 복사물을 갖고 있는 레벨 1 캐쉬로 하여금 레벨 1 캐쉬로부터 데이타를 플러쉬하게 함은 물론 변경된 데이타를 주 기억장치로 라이트백하게 하도록 지시한다. 레벨 2 캐쉬가 다른 프로세서 컴플렉스로부터 데이타의 읽기를 요청받을때, 레벨 2 캐쉬는, 데이타의 변경된 복사물을 가지고 있는 임의의 레벨 1 캐쉬로 하여금 데이타를 주 기억장치 및 레벨 2 캐쉬로 라이트백하게 하고, '공유' 의 형태로 데이타를 표시한다.
본 발명을 특징짓는 상기한 및 다른 특색들과 장점들은 여기에 첨부된 청구항들에 의해 설명되어지고 더 발전된 부분을 이루게 된다. 그러나 본 발명 및 그 실시를 통해 얻어지는 장점들과 목적들의 보다 나은 설명을 위해서는, 본 발명의 바람직한 실시예로서 기술된, 첨부 도면과 발명의 구성이 참조되어야한다.
도 1 은 주 기억장치에 접근하는데 있어서의 본 발명의 원리들을 구현하는, 프로세서(들)과 캐쉬 시스템, 주 기억장치, 및 주변장치들을 포함하는 시스템 처리 유닛의 블록도이다.
도 2 는 본 발명의 원리들에 따르는, 캐쉬 시스템과 연결되어 사용되는 다수의 단일 및 다중 장착된 프로세서들의 블록도이다.
도 3 은 도 2 에 도시된 L2 캐쉬의 내용들의 블록도이다.
도 4 는 도 2 에 도시된 L1 캐쉬들의 내용들의 블록도이다.
도 5a 는 관련 프로세서로부터의 읽기(READ) 동작의 수령에 응답하여, 도 2 에 도시된 L1 캐쉬들에 의해 수행되는 동작들의 흐름도이다.
도 5b 는 관련 프로세서로부터의 쓰기(WRITE) 동작의 수령에 응답하여, 도 2 에 도시된 L1 캐쉬들에 의해 수행되는 동작들의 흐름도이다.
도 5c 는 하위 레벨 기억장치로부터 받은 셰어링 라이트백 (SHARING WRITEBACK), 플러시 라이트백 (FLUSH WRITEBACK) 또는 플러시 (FLUSH) 명령의 수령에 응답하여, 도 2 에 도시된 L1 캐쉬들에 의해 수행되는 동작들의 흐름도이다.
도 5d는 새로운 데이타를 저장하기 위하여 캐쉬 라인 (CL) 을 L1 캐쉬에 추가하는 부분으로서, 도 2 에 도시된 L1 캐쉬들에 의해 수행되는 동작들의 흐름도이다.
도 6a 는 L1 캐쉬로부터 받은 읽기 또는 변경을-위한-읽기 (READ_WITH_INTENT_TO_MODIFY) 요청에 응답하는 부분으로서, 도 2 에 도시된 기억 제어 유닛안의 천이 캐쉬 (캐쉬 버퍼) 에 의해 수행되는 동작들의 흐름도이다.
도 6b 는 L2 캐쉬로부터 받은 플러쉬 라이트백 또는 셰어링 라이트백 명령에 응답하는 부분으로서, 도 2 에 도시된 기억 제어 유닛안의 천이 캐쉬 (캐쉬 버퍼) 에 의해 수행되는 동작들의 흐름도이다.
도 6c 는 L1 캐쉬로부터의 에이징 캐스트백 (AGING CASTBACK) 에 응답하는 부분으로서, 도 2 에 도시된 기억 제어 유닛안의 천이 캐쉬 (캐쉬 버퍼) 에 의해 수행되는 동작들의 흐름도이다.
도 6d 는 L1 캐쉬로부터의 노 롱거 프리젠트 캐스트백 (NO LONGER PRESENT CASTBACK) 에 응답하는 부분으로서, 도 2 에 도시된 기억 제어 유닛안의 천이 캐쉬 (캐쉬 버퍼) 에 의해 수행될 수 있는 선택적인 동작들의 흐름도이다.
도 7a 는 천이 캐쉬 (캐쉬 버퍼) 로부터의 읽기 또는 변경을-위한-읽기 요청에 응답하는 부분으로서, 도 2 에 도시된 L2 캐쉬에 의해 수행되는 동작들의 흐름도이다.
도 7b 는 L1 캐쉬로부터 받은 소유권을 위한 요청에 응답하는 부분으로서, 도 2 에 도시된 L2 캐쉬에 의해 수행되는 동작들의 흐름도이다.
도 7c 는 천이 캐쉬 (캐쉬 버퍼) 로부터 받은 셰어링 라이트백, 에이징 캐스트백, 선택적인 노 롱거 프리젠트 캐스트백, 그리고 플러쉬 라이트백 명령들에 응답하는 부분으로서, 도 2 에 도시된 L2 캐쉬에 의해 수행되는 동작들의 흐름도이다.
도 7d 는 새로운 데이타를 위하여 캐쉬 라인 (CL) 을 L2 캐쉬에 추가하는 부분으로서, 도 2 에 도시된 L2 캐쉬에 의해 수행되는 동작들의 흐름도이다.
도 7e 는 시스템 버스위의 또다른 L2 캐쉬로부터 받은 소유권을 위한 요청에 응답하는 부분으로서, 도 2 에 도시된 L2 캐쉬에 의해 수행되는 동작들의 흐름도이다.
도 7f 는 시스템 버스에서 찾아지는 또다른 L2 캐쉬로부터의 읽기 또는 변경을-위한-읽기 요청에 응답하는 부분으로서, 도 2 에 도시된 L2 캐쉬에 의해 수행되는 동작들의 흐름도이다.
*도면의 주요부분에 대한 부호의 설명*
14 : 주 기억장치 22 : 기억 제어 유닛
23 : 시스템 버스 24 : 프로세서
26 : L2 캐쉬 28 : L1 캐쉬 및 제어
30 : 캐쉬 버퍼 32' : 프로세서 컴플렉스
도 1 에 도시 되었듯이, 본 발명의 원리들을 활용하는 전형적인 컴퓨터 시스템은 하나 이상의 시스템 프로세서들과 캐쉬 시스템들 (12), 주 기억 유닛 (14), 입력/출력 확장 유닛들로 이끌려진 광섬유 케이블들의 연결을 위한 모듈들을 포함하는 로컬 버스 장착 카드 (16), 기억저장 장치 (18') 를 갖는 기억 제어기 (18), 및 워크스태이션 (20') 을 갖는 워크스태이션 제어기 (20) 를 포함하는 시스템 처리 유닛 (10) 으로 이루어져 있다.
도 2 는 본 발명의 원리들에 따르는 프로세서와 캐쉬 시스템 (12) 을 예시한다. 이하에 보다 자세히 기술할 본 발명의 원리들에 따르면, 제 1 프로세서 컴플렉스 (32) 내에서, 기억 제어 유닛 (22) 은 메모리의 성능을 향상시키는 방법으로 프로세서들에 의해 사용되어지는 데이타를 관리한다.
컴퓨터 시스템의 각 프로세서 (24) 는 필요로 되는 데이타를 획득하고 저장하기 위하여 L1 캐쉬 및 제어 회로 (28) 와 상호작용한다. 각 L1 캐쉬 (28) 는 비교적 적은 수의, 예를 들어 512개나 1024개의 캐쉬 라인들을 가진다. 각 캐쉬 라인은 주 기억장치 (14) 의 순차식 메모리 위치들, 예를 들어 128개의 순차식 메모리 위치들의 한 그룹의 복사물을 저장한다. 주 기억장치 (14) 내의 모든 어드레스 (address) 들은 독자적으로 L1 캐쉬 (28) 내의 라인과 관련되어있고, 특정한 어드레스를 위한 L1 캐쉬 (28) 내의 관련 라인은 어드레스의 비트들의 부분집합으로부터 결정될 수 있다. 상기의 것과 동일한 관련을 통하여, L1 캐쉬 (28) 내의 각 캐쉬 라인은 상기 캐쉬 라인에 저장될 수도 있는 순차적인 어드레스들의 여러 그룹들과 관련되어있다. 어느때나, L1 캐쉬 (28) 내의 캐쉬 라인은 그 캐쉬 라인과 관련된 어드레스 영역들중 적은 수, 예를 들어 2개의 어드레스 영역을 위한 순차적 메모리 위치들의 복사물을 저장할 수 있다.
각 L1 캐쉬 (28) 는 어떤 순차식 메모리 위치들이 L1 캐쉬내에 저장되어있는지를 식별하는 디렉토리를 합체시킨다. 구체적으로, L1 캐쉬 디렉토리는, 어떤 복사물들이 현재 L1 캐쉬 (28) 의 라인에 상주하고 있는지의, 주 기억장치 (14) 내의 메모리 위치들의 어드레스들의 영역들의 표시를 저장한다. 상술한 바와 같이, 주 기억장치 (14) 내의 순차식 메모리 위치들의 다수의 상이한 그룹들은 L1 캐쉬 (28) 내의 동일한 라인들에 사상할 수 있고, 따라서, L1 캐쉬 디렉토리는 어떤 주 기억장치 (14) 내의 메모리 위치들의 다수의 상이한 그룹들이 L1 캐쉬 (28) 내에 상주하고 있는지를 식별한다.
L1 캐쉬 (28) 는 컴퓨터 프로그램을 실행하는 데이타들과 명령들을 획득하기 위하여 기억 제어 유닛 (22) 과 상호작용한다. 프로세서들 (24a 및 24b) 이 각각의 L1 캐쉬 및 제어 회로들 (28a 및 28b) 을 경유하여 메모리 위치에 각각 접근할때, 만약 L1 캐쉬 및 제어 회로가 요청된 데이타를 저장하고 있지 않다면, 접근 요청이 기억 제어 유닛 (22) 으로 이송된다. 기억 제어 유닛 (22) 은, 이하에 기술할 회로와 기능을 사용하여, 요청된 데이타를 획득하고 데이타를 요청한 L1 캐쉬 및 제어 회로 (28a 또는 28b) 로 이송함으로써 응답한다.
본 발명의 원리들을 구체화시키는 기억 제어 유닛 (22) 은, 캐쉬들, 버퍼들, 및 주 메모리를 포함하는 다양한 기억 유닛들을 사용하여, 프로세서들 (24a 및 24b) 과 L1 캐쉬들 (28a 및 28b) 로부터/로의 데이타의 입력 및 출력을 제어한다. 기억 제어 유닛 (22) 은 그외에 프로세서들 (24a 및 24b) 로의 명령들의 이송과 입력을 관리한다.
도 2 에 도시 되었듯이, 기억 제어 유닛 (22) 은 주 기억장치 (14) 와 인터페이스로 접속되어 있다. 주 기억장치 (14) 는 전형적으로 하나 이상의 DRAM 칩들과 같이 비교적 큰 부피이고 보통의 속도를 갖는 메모리들의 뱅크로 구성되어있다. 주 기억장치 (14) 는 페이징(paging) 메모리 관리 설계를 수행 하고, 구체적으로, 보통의 속도의 메모리는 대규모의 기억장치 (도 1 의 18') 의 뱅크로부터의 교환을 담당하는 메모리 위치들의 페이지들을 저장하고, 메모리 위치들로의 보다 빠른 접근을 돕는다.
주 기억장치 (14) 의 각 기억 위치는, 주 기억장치 (14) 내의 모든 메모리 위치들 중 상기 메모리 위치를 독자적으로 식별하는 어드레스와 관련되어 있다. 메모리 위치에 접근하기 위하여, 어드레스는 주 기억장치 (14) 로 이송되고, 이에 응답하여 주 기억장치 (14) 는 식별된 메모리 위치의 내용들을 이송한다. 이러한 접근의 일부로서, 주소와 접근의 유형을 포함하는 상기 접근의 표현은 시스템 버스 (23) 로 공급되어진다. 그 결과로서, 다른 프로세서 컴플렉스들이 주 메모리 (14) 로의 접근을 할때, 기억 제어 유닛 (22) 은 접근의 유형을 식별하고 이하에 기술될 적절한 동작을 하기 위해서 시스템 버스 (23) 를 모니터한다.
빈번히 사용되는 메모리 위치들로의 고속의 접근을 제공하기 위하여, 기억 제어 유닛 (22) 은 또한 레벨 2 또는 L2 캐쉬 (26) 와 인터페이스로 접속되어 있다. L2 캐쉬 (26) 는 L1 캐쉬 (28) 와 유사하다. L2 캐쉬 (26) 내의 각 라인들은 순차식 메모리 어드레스들의 많은 그룹들과 관련되어 있고, 이 그룹들은 한번에 관련된 L2 캐쉬 라인내에 저장될 수 있다. 나아가, L2 캐쉬 (26) 는 L2 캐쉬 디렉토리와 관련되어 있다. L2 캐쉬 디렉토리내의 각 엔트리들은 L2 캐쉬(26) 내에 저장된 메모리 위치들의 주소들의 영역들을 식별한다. 소망의 어드레스가 L2 캐쉬 (26) 내에 상주하고 있는지를 식별하기 위하여, 어드레스로부터 선택된 비트들이 L2 캐쉬 디렉토리내의 엔트리들중 독자적으로 관련된 하나를 선택하는데 사용되고, 선택된 L2 캐쉬 디렉토리 엔트리 내에 저장된 어드레스 영역들은 소망의 어드레스와 비교된다.
대부분의 접근들은 L1 캐쉬 (28) 로의 이송 전에 기억 제어 유닛 (22) 내에서 버퍼링을 필요로 한다. 특히, 기억 제어 유닛 (22) 은, L1 캐쉬 (28) 로부터/로, L2 캐쉬 (26) 및/또는 주 기억장치 (14) 로/로부터의 데이타의 이송을 관리하기 위하여, 중간 또는 천이 캐쉬라고도 알려진 캐쉬 버퍼 (30) 를 포함한다. 캐쉬 버퍼 (30) 는 데이타 기억장치의 적은 수의 라인들, 예를 들어 8개의 라인들 을 포함하고, 각 라인들은 L1 캐쉬 (28) 와 L2 캐쉬 (26) 의 라인으로서 동일한 양의 데이타를 저장할 수 있다. 캐쉬 버퍼 (30) 내의 8개의 라인들은,데이타가 캐쉬들 (28 및 26) 과 주 기억장치 (14) 사이에서 전달될때, L1 캐쉬 (28) 및 L2 캐쉬 (26) 내에 저장된 라인들 또는 주 기억 장치 (14) 내의 상응하는 메모리 위치들의 그룹들을 버퍼링하는데 사용된다.
캐쉬 버퍼 (30) 내의 각 라인들은 현재의 사용과 캐쉬 버퍼 라인의 상태, 특히 다른 정보들은 물론 라인이 사용중인지 그리고 만약 그렇다면 라인이 사용되는 접근의 유형과 접근을 수행하는 상태 및 접근의 주소를 식별하는 데이타를 저장한다. L1 캐쉬 (28) 내에 미스가 있었고 데이타는 L2 캐쉬 (26) 또는 주 기억장치 (14) 로부터 획득되어져야 할 때마다, 캐쉬 버퍼 (30) 의 라인이 미스에 할당되어, 데이타가 L2 캐쉬 (26) 또는 주 메모리로부터 반환될때 데이타는 캐쉬 버퍼 (30) 의 할당된 라인에 저장되어 이 라인으로부터 L1 캐쉬 (28) 및/또는 L2 캐쉬 (26) 로 전달된다. 유사하게, L1 캐쉬 (28) 또는 L2 캐쉬 (26) 로의 라인의 검색 또는 다른 조건들이 라인으로부터 L2 캐쉬 (26) 또는 주 기억장치 (14) 로의 캐스트백을 요청할 때마다, 캐쉬 버퍼 (30) 의 라인은 캐스트백에 할당되어, 데이타는 L1 캐쉬 (28) 또는 L2 캐쉬 (26) 로부터 캐쉬 버퍼 (30) 의 할당된 라인으로의 캐스트백되어 이 라인으로부터 L2 캐쉬 (26) 또는 주 기억장치 (14) 로 전달된다.
특정한 접근들 및 캐스트백들로의 캐쉬 라인들의 할당, 그리고 캐쉬 버퍼 (30) 로의 접근들과 캐스트백들을 위한 데이타의 획득 및 캐쉬 버퍼 (30) 로부터의 데이타의 이송의 과정들은 그 안에 저장된 데이타를 사용하는 기억 제어 유닛 (22) 내의 로직에 의해 관리된다. 그들 자신의 프로세서들과 캐쉬 시스템들 (도 2 에 도시되지 않음) 을 갖고 있는 추가적인 프로세서 컴플렉스 (32') 들이 데이타의 로드와 저장을 위해 주 기억장치 (14) 와 시스템 버스 (23) 에 연결될 수 있다는 것이 이해될 수 있다.
도 3 에서, L2 캐쉬 (26) 의 세부사항이 설명될 수 있다. L2 캐쉬 (26) 는 기억 제어 유닛 (22) 과의 통신을 위한 인터페이스 로직 회로 (34) 및 캐쉬된 데이타를 각각 저장하기 위한 다수의 캐쉬 라인들 (36) 을 포함한다. 라인들 (36) 은 많은 수의 제어 필드들 및 캐쉬된 데이타를 저장하기 위한 필드 (38) 를 포함한다. 본 발명의 원리들을 수행하기 위해 필요한 제어 필드들은, 캐쉬 라인에 의해 관리되는 데이타의 복사물을 갖는 L1 캐쉬들을 식별하기 위한 L1 존재비트 필드 (40), 라인의 상태 (배타, 공유 또는 변경) 를 식별하기 위한 상태 필드 (42), 및 필드 (38) 내의 데이타에 상응하는 주 기억장치 (14) 내의 어드레스를 식별하기 위한 태그 필드 (44) 를 포함한다. L2 캐쉬 (26) 는, 이하에 상세하게 설명될 것과 같이, 라인들 (36) 로부터 데이타를 저장 또는 검색하기 위해, 기억 제어 유닛 (22) 으로부터 받은 명령들과 데이타들에 응답한다. L2 캐쉬 (26) 는 또한, 최소-최근-사용으로부터 최대-최근-사용의 순으로 라인들을 정렬하기 위해서, 라인들 (36) 의 큐를 유지하여 라인들 (36) 의 대체를 관리한다.
도 4 에서, L1 캐쉬들의 세부사항이 설명될 수 있다. 각 L1 캐쉬들 (28) 은 기억 제어 유닛 (22) 과의 통신을 위한 인터페이스 로직 회로 (46) 및 캐쉬된 데이타를 각각 저장하기위한 다수의 캐쉬 라인들 (52) 을 포함한다. 라인들 (52) 는 많은 수의 제어 필드들 및 캐쉬된 데이타를 저장하기 위한 필드 (54) 를 포함한다. 본 발명의 원리들을 수행하기 위해 필요한 제어 필드들은, 캐쉬 라인내의 데이타가 유효한지를 식별하기 위한 유효 필드, 필드 (54) 내의 데이타에 상응하는 주 기억장치 (14) 내의 어드레스를 식별하기 위한 태그 필드 (58), 및 캐쉬 라인 (52) 내의 데이타의 라인의 상태 (공유 또는 변경) 를 식별하기 위한 상태 필드 (60) 를 포함한다. L1 캐쉬 (28) 는, 이하에 상세하게 설명될 것과 같이, 라인들 (52) 로부터 데이타를 저장 또는 검색하기 위해 기억 제어 유닛 (22) 으로부터 받은 명령들과 데이타들에 응답한다. L1 캐쉬 (28) 는 또한, 라인들을 최소-최근-사용으로부터 최대-최근-사용의 순으로 정렬하기 위해서, 라인들 (52) 의 큐를 유지하여 라인들 (52) 의 대체를 관리한다.
도 5a 에서, 관련 프로세서로부터의 읽기 동작의 수령에 응답하여, L1 캐쉬들에 의해 수행되는 동작들이 설명된다. 읽기 동작 제 100 단계에 응답하여, L1 캐쉬는 상기 캐쉬가 요청된 데이타를 위한 유효한 CL을 갖는지를 결정한다. (제 102 단계) 만약 그렇다면, 제 104 단계에서, 위치된 CL은 캐쉬내에서 최대-최근-사용의 위치로 이동되고, 제 106 단계에서 소망의 데이타는 위치된 CL로부터 읽혀지고 프로세서로 반환된다. 그러나 만약 요청된 데이타를 위한 유효한 CL이 없다면, 도 5d 와 관련되어 이하에 더 상세히 기술하는 제 108 단계에서, 캐쉬 라인은 요청된 데이타를 갖는 L1 캐쉬에 추가되고, 제 106 단계에서 소망의 데이타가 위치된 CL로부터 읽혀지고 프로세서로 반환된다.
도 5b 에서, 관련 프로세서로부터의 쓰기 동작의 수령에 응답하여, L1 캐쉬들에 의해 수행되는 동작들이 설명된다. 제 1의 110 단계에서 L1 캐쉬는 요청된 데이타를 위한 유효한 CL이 상기 캐쉬내에 존재하는지를 결정한다. 만약 그렇다면, 과정은, 위치된 CL이 최대-최근-사용으로 만들어지는, 제 112 단계로 계속된다. 그리고 난 후 제 114 단계에서, 위치된 CL은 상기 CL이 '변경' 이라 표시된지를 결정하기 위하여 평가된다.
상술한 바와 같이, L1 캐쉬내의 각 CL 은 '공유' 또는 '변경' 의 상태를 가질수 있다. '공유' 상태는, L1 캐쉬내의 데이타가 L2 캐쉬 또는 주 메모리로부터 L1 캐쉬로 읽혀진 이래로 L1 캐쉬가 변경되지 않았으며, 그리고 데이타의 유사한 변경되지 않은 복사물들을 저장하고있는 하나 이상의 다른 캐쉬들이 존재할 수 있다는 것을 의미한다. '변경' 상태는, L1 캐쉬내의 데이타가 L2 캐쉬 또는 주메모리로부터 L1 캐쉬로 읽혀진 이래로 L1 캐쉬가 변경되었다는 것을 의미한다. 이하에 기술되겠듯이, L1 캐쉬는, 만약 L1 캐쉬가 데이타의 배타적인 소유권을 요청하고 받았다면, CL을 '변경' 상태로 놓고, 따라서, CL이 '변경' 상태에 놓여 있다면, 이는 데이타의 복사물들을 저장한 다른 캐쉬들이 없다는 것을 의미한다.
따라서, 만약 제 114 단계에서 위치된 CL이 '변경' 으로 표시되지 않았다면, 그것은 위치된 CL내의 데이타가 변경되지 않았고 데이타의 복사물을 갖는 또다른 캐쉬가 있을 수 있다는 것으로 결정될 수 있다. 따라서, 위치된 CL로의 쓰기에 앞서, 제 116 단계에서 소유권을 위한 요청이 L2 캐쉬로 보내진다. 이하에 기술되겠듯이, 이러한 요청은 L2 캐쉬에 의하여 수락 또는 거절될 것이다. 제 118 단계에서 소유권을 위한 요청이 수락되었는지가 결정되고, 만약 그렇지 않다면, 요청은 제 116 단계에서 재시도된다. 제 118 및 116 단계의 루프는 소유권을 위한 요청이 수락될 때까지 반복된다. 그 시점에서, 제 120 단계에서 L1 캐쉬는 위치된 CL이 요청을 위한 유효한 데이타를 계속 갖는지를 결정한다. 상기 단계는, 제 116 및 제 118 단계의 루프가 소유권을 획득하기 위한 시도를 반복하는 동안, (이하에 기술되는) L1 캐쉬내의 다른 요청들의 처리가 발생할 수 있는 가능성 때문에 수행되는 것이다.
만약 제 120 단계에서 위치된 L1 CL이 요청을 위한 유효한 데이타를 계속하여 갖고 있다면, 제 122 단계에서 L1 CL은 CL내의 데이타가 변화된다는 것을 표시하기 위해 '변경' 이라 표시되고, 제 124 단계에서 상기 프로세서에 의해 씌어질 데이타가 L1 CL로 씌어진다.
만약 제 120 단계에서 위치된 L1 CL이 더이상 요청을 위한 유효한 데이타를 갖지 않거나 또는 만약 제 110 단계에서 캐쉬내에 요청을 위한 데이타를 갖는 유효한 CL이 없다면, 과정은, 도 5d 에서 설명되는 바와 같이 CL이 새로운 데이타를 갖는 L1 캐쉬에 추가되는 제 126 단계에 도달한다. 상기 단계 후에, 제 124 단계에서 요청을 위한 데이타가 새롭게 추가된 CL로 씌어진다.
도 5c 에서, 셰어링 라이트백, 플러쉬 라이트백, 또는 플러쉬 명령의 수령에 응답하여 L1 캐쉬들에 의하여 수행되는 동작들이 설명된다.
이하에 상세히 설명될 것과 같이, 동일한 프로세서 컴플렉스내의 L2 캐쉬가, 다른 프로세서 컴플렉스가 셰어링 라이트백 명령을 받은 데이타의 읽기를 시도한다고 결정하고 또한 데이타의 변경된 버전이 L1 캐쉬내에 있다고 결정할 때, L1 캐쉬는 셰어링 라이트백 명령을 받는다. 셰어링 라이트백 명령에 응답하여, L1 캐쉬내의 변경된 데이타는 L2 캐쉬 및 주 메모리로 라이트백되고, L1 캐쉬내의 변경된 데이타의 상태는 '변경' 에서 '공유' 로 변화된다.
이하에 또한 상세히 설명될 것과 같이, 동일한 프로세서 컴플렉스로부터의 L2 캐쉬가, 다른 프로세서 컴플렉스가 플러쉬 라이트백 명령을 받은 데이타의 읽기를 시도한다고 결정하고 또한 데이타의 변경된 버전이 L1 캐쉬내에 있다고 결정할 때, L1 캐쉬는 플러쉬 라이트백 명령을 받는다. 플러쉬 라이트백 명령은 또한, L2 캐쉬가 에이징에 기인하여 L2 캐쉬내의 상응하는 데이타를 위한 캐쉬라인을 제거하고 L1 캐쉬내에 L2 캐쉬 라인을 위한 데이타의 변경된 버전이 있을 때, 발생될 수 있다. 플러쉬 라이트백 명령은 또한, L2 캐쉬가 천이 캐쉬로하여금 변경된데이타를 하나의 L1 캐쉬에서 또다른 L1 캐쉬로 전달하게 할때, 발생될 수 있다. 플러쉬 라이트백 명령에 응답하여, L1 캐쉬내의 변경된 데이타는 천이 캐쉬로 라이트백되고, 데이타는 L1 캐쉬내에서 무효로 된다. 그 후 천이 캐쉬는, 적절히, 데이타를 L2 캐쉬 및 주 메모리로 전달하거나 또는 데이타를 또다른 L1 캐쉬로 전달한다.
마지막으로, 아래에서 보여지겠듯이, 동일한 프로세서 컴플렉스로부터의 L2 캐쉬가, 데이타가 상기 L1 캐쉬로부터 제거되어야한다고 결정하고, 동시에 데이타가 L1 캐쉬내에서 변경되지 않았을 때, L1 캐쉬는 플러쉬 명령을 받는다. 플러쉬 명령은, L2 캐쉬가 동일한 프로세서 컴플렉스내의 또는 다른 프로세서 컴플렉스내의 또다른 프로세서가 데이타의 소유권을 획득하기를 시도할때, 또는 L2 캐쉬가 에이징에 기인하여 L2 캐쉬내에서 동일한 데이타를 위한 캐쉬 라인을 제거할때, 발생할 수 있다. 플러쉬 명령에 응답하여, L1 캐쉬는 L1 캐쉬내에서 데이타를 무효로 만든다.
따라서, L1 캐쉬에 의한 플러쉬 또는 셰어링 라이트백 둘중 하나의 수령이 있을때, 데이타는 천이 캐쉬 버퍼를 통하여 L2 캐쉬 또는 주 메모리, 또는 양자로 반환되어져야 한다. 따라서, 플러쉬 또는 셰어링 라이트백 명령을 받은후 제 1 의 130 단계에서, L1 캐쉬는 데이타가 씌어져야하는 천이 캐쉬 라인 번호를 받는다. 다음의 제 132 단계에서 L1 캐쉬는, 플러쉬 또는 셰어링 라이트백 명령으로 식별되는 데이타를 포함하는 L1 캐쉬내의 CL을 식별한다. 통상적으로, 식별된 데이타를 위한 L1 캐쉬내의 CL이 존재할 것이나, (도 5d 에 도시되는) 동시발생하는 에이징 동작에 의해 초래되는 어떤 레이스 (race) 상태에서, 데이타를 위한 CL 은, 데이타를 위한 플러쉬 또는 셰어링 라이트백이 받아졌을때, 무효로 될 수도 있다. (만약 플러쉬 또는 셰어링 라이트백 명령에 의해 식별된 데이타를 위한 CL이 존재하지 않는다면, 에이징 동작들이 플러쉬 라이트백 명령과 동일한 목적을 성취하므로, 플러쉬 또는 셰어링 라이트백 명령은 중지된다.)
플러쉬 또는 셰어링 라이트백 명령을 위한 CL을 식별한 후에, 제 134 단계에서 CL내의 데이타는 제 130 단계에서 식별된 천이 캐쉬 버퍼로 씌어진다. 이 시점에서, 상이한 동작들이 플러쉬 또는 셰어링 라이트백 명령들을 위해 수행된다. 만약 셰어링 라이트백 명령이라면 (제 136 단계), 제 138 단계에서 식별된 CL이, 또다른 캐쉬나 프로세서 컴플렉스가 데이타의 복사물을 가질것이라는 것을 표시하기 위하여, '공유' 라 표시되어, 셰어링 라이트백 명령의 처리는 종료된다. 만약 플러쉬 라이트백 명령이라면 (제 140 단계), 제 142 단계에서 식별된 CL이 '무효 (invalid)' 라 표시되고 L1 캐쉬에 의하여 유지되는 큐내의 최소-최근-사용 (LRU) 의 위치로 이동되어, CL은 곧 다시 사용될 것이며, 상기 명령의 처리는 종료된다.
플러쉬 명령의 수령에 응답하는 동작들은, 데이타를 천이 캐쉬 버퍼로 라이트백할 필요가 없으므로, 비교적 간단하다. 따라서, 플러쉬 명령에 응답하여, L1 캐쉬는 플러쉬 명령내의 식별된 데이타를 포함하는 L1 캐쉬내의 CL을 식별한다. 보통의 조건들에서 식별된 데이타를 위한 L1 캐쉬내의 CL이 존재할 수도 있고 안 할수도 있다. 만약 선택적인 노 롱거 프리젠트 캐스트백이 실행되어진다면 (도5d, 6d, 7c 참조) 대부분의 상황들에서는, L2 캐쉬는, L1 캐쉬가 더이상 특정한 데이타를 갖지 않을때 상기 명령이 보고되어질 것이고 L1 캐쉬로 불필요한 플러쉬 명령들을 보내지 않을 것이다. 그러나, 노 롱거 프리젠트 명령이 실행되어지더라도, 동시 발생적인 에이징 동작 (도 5d 참조) 에 의하여 초래되는 일정한 레이스 조건들에서는, 데이타 CL은 플러쉬 명령이 받아들여질때 무효로 될 수도 있다. (만약 플러쉬 명령에 의하여 식별된 데이타를 위한 CL이 없다면, 에이징 동작이 플러쉬 명령과 동일한 목적들을 성취하므로, 플러쉬 명령은 중지된다.) 플러쉬 명령에서 식별된 데이타를 위한 CL이 식별된 후에, 제 142 단계에서 상기 식별된 CL은, 곧 다시 사용되기 위하여, '무효' 라 표시되고 L1 캐쉬에 의해 유지되는 큐내의 최소-최근-사용 (LRU) 위치로 이동되어, CL은 곧 다시 사용될 것이며, 상기 명령의 처리는 종료된다.
도 5d 에서, 캐쉬 라인 (CL) 을 추가하는 부분으로서 L1 캐쉬들에 의하여 수행되는 동작들이 설명된다. 데이타의 읽기 요청 (제 108 단계) 에의 응답의 결과로서 또는 데이타의 쓰기 요청 (제 126 단계) 에의 응답의 결과로서, CL이 L1 캐쉬에 추가되어질 필요가 있을 수 있다는 것은 상술한 것으로부터 알 수 있다. 둘중 어느 상황에서든지, 데이타는 L2 캐쉬 또는 주 메모리로부터 획득된다. 데이타가 데이타의 쓰기 요청 (제 126 단계) 을 만족시키기 위하여 획득되어지는 경우는, 데이타는, 이하에 상술된 바와 같이, 변경을-위한-읽기 동작의 방법으로 획득되어진다.
L1 캐쉬에 CL을 추가하기 위해서, 제 150 단계에서 L1 캐쉬내의 CL은 대체를위해 선택되어진다. 이 과정은 L1 캐쉬내의 어떤 CL이 최소-최근-사용의 것인지의 결정을 수반할 수도 있고, L1 캐쉬들의 사용의 통계와 관련된 추가적인 보다 복잡한 동작들을 수반할 수도 있다. 어떤 경우이든, 일단 CL이 대체를 위해 선택되어지면, 제 152 단계에서 선택된 CL은 그것이 '유효' 그리고 '변경' 으로 표시되는지 결정하기 위하여 평가된다. 만약 그렇다면, 선택된 CL의 데이타는 변경되어지고 L2 캐쉬 및/또는 주 메모리로 라이트백되어져야 한다. 따라서, 상기의 상황에서는, 제 154 단계에서 에이징 캐스트백 명령이, 대체를 위해 선택되어진 CL내의 과거의 데이타를 위하여 천이 캐쉬 버퍼로 이송된다. 천이 캐쉬는, 천이 캐쉬 버퍼 라인 번호를 에이징 캐스트백에 할당하고 제 156 단계에서 수신된 라인 번호를 L1 캐쉬로 반환함으로써 응답한다. 그러면 제 158 단계에서, 대체를 위해 선택된 CL로부터의 과거의 데이타는, L1 캐쉬내의 식별된 라인 번호에 씌어진다.
만약 제 152 단계에서 선택된 CL이 무효이거나 유효이지만 변경된 데이타를 포함하고 있지 않다고 결정되면, 데이타를 선택된 CL로부터 L2 캐쉬 또는 주 메모리로 라이트백할 필요가 없게된다. 만약 선택된 CL 이 무효라면, CL이 새로운 데이타를 저장하게 준비시키는 다른 단계들은 필요없게된다. 그러나, 만약 CL이 유효이나 데이타가 변경되지 않았다면, 선택적인 제 160 단계는, L2 캐쉬에게 L1 캐쉬가 더이상 데이타의 복사물을 저장하고 있지 않다는 것을 알리기위해 수행될 수 있다. 상기의 과정은 노 롱거 프리젠트 캐스트백 명령을 대체를 위해 선택된 CL내의 과거의 데이타를 식별하는 천이 캐쉬로 이송함으로써 수행되어진다.이하에 보다 상세히 설명될 것과 같이, 이 단계는, 선택적인 것이나 만약 수행된다면, L2 캐쉬가 불필요한 플러쉬 명령들을 피하게 해줌으로써 이후의 처리를 능률적으로 만들어준다.
제 158 단계 또는 선택적인 제 160 단계 이후, 제 162 단계에서 새로운 데이타를 저장하기 위한 CL을 셋업한다. 특히, CL내의 태그는 새로운 데이타의 어드레스를 적절하게 식별하기위해 설정되고, 임의의 다른 필드들 또는 관리적인 변화들은 CL을 새로운 데이타에 관련시키도록 이루어진다.
다음으로, 데이타를 획득하기 위하여, 제 164 단계에서 읽기 또는 변경을-위한-읽기 요청이 CL을 위한 새로운 데이타를 획득하기 위하여 천이 캐쉬로 이송된다. 이에 응답하여, 천이 캐쉬 버퍼는 라인 번호를 요청에 할당하고 제 166 단계에서 수신된 상기 라인 번호를 상기 L1 캐쉬로 반환할 것이다. 제 168 단계에서, 새로운 데이타는, 데이타가 제 166 단계에서 식별된 천이 캐쉬 라인 번호로 씌어질때, L1 캐쉬에 수령된다. 동시에, 공유된 또는 변경된 상기 데이타의 상태가 수령된다. 이하에 설명될 것과 같이, 만약 데이타가 L2 캐쉬, 주 메모리, 또는 다른 L1 캐쉬로부터 천이 캐쉬로 이송되면, 데이타는 데이타가 주 메모리의 데이타와 같지 않은 변경된 것인지 또는 이와 택일적으로 주 메모리에 저장된 것과 같고 다른 캐쉬들에 데이타의 다른 복사물들이 존재할수 있는 공유된 것인지를 표시하는 상태와 더불어 이송된다.
제 170 단계에서, 새롭게 수령된 데이타는 선택된 CL에 저장된다. 그러면 제 172 단계에서 선택된 CL은, 미정의 요청을 만족시키도록 사용될 수 있게하기위하여, '유효' 로 표시된다. 마지막으로, 단계들은, 데이타의 검색를 개시하는 요청의 유형에 기초하여, 공유된 또는 변경된 상태의 CL을 적절히 설정하는것에 따른다. 구체적으로, 만약 상기 새로운 데이타가 상기 L1 캐쉬와 관련된 프로세서로부터의 읽기 요청을 만족시키기 위하여 검색되고 제 174 단계에서 데이타가 '공유' 로 표시되어 반환된다면, 제 176 단계에서 선택된 CL은 '공유' 로 표시되고, 제 177 단계에서 선택된 CL은 L1 캐쉬내에서 최대-최근-사용의 CL로 만들어져, CL을 추가하는 과정은 종료된다. 택일적으로, 만약 새로운 데이타가 제 178 단계에서 '변경' 으로 표시되어 반환된다면, 데이타의 검색을 개시하는 접근들의 유형에 관계없이, 제 180 단계에서 CL은 '변경' 으로 표시되고, 제 177 단계에서 L1 캐쉬내에 최대-최근-사용의 CL로 만들어지고, 과정은 종료된다. 마지막으로, 만약 새로운 데이타가 L1 캐쉬와 관련된 프로세서로부터의 쓰기 요청을 만족시키기 위해 검색되고 제 182 단계에서 데이타가 '공유' 로 표시되어 반환된다면, 동작들은 데이타의 소유권을 획득하기위해 이루어진다. 구체적으로, 상기의 상황에서는, 제 184 단계에서 소유권을 위한 요청이 L2 캐쉬로 보내어진다. 제 186 단계에서, 만약 요청이 거절된다면, 과정은 제 184 단계로 복귀하여 요청이 다시 생성된다. 궁극적으로, 소유권을 위한 요청이 수락될 것이고, 과정은 제 186 단계로부터, CL내의 데이타가 프로세서에 의해 씌어지는것을 반영하기 위하여 선택된 CL이 '변경' 으로 표시되는 제 180 단계로 진행되고, 제 177 단계에서 선택된 CL은 L1 캐쉬내에서 최대-최근-사용의 CL로 만들어지고, 과정은 종료된다.
도 6a 에서, L1 캐쉬로부터 수령한 읽기 또는 변경을-위한-읽기 요청에 응답하는 부분으로서, 천이 캐쉬 버퍼에 의해 수행되는 동작들이 설명된다. 상술한 바와 같이, 두 요청중 임의의 하나의 요청에 대한 최초의 응답으로서, 제 190 단계에서 천이 캐쉬 라인은 요청에 할당되고, 제 192 단계에서 캐쉬 라인은 L1 캐쉬로 반환된다. 그러면, 제 194 단계에서, 읽기 또는 변경을-위한-읽기 요청은 적절히, 제 192 단계에서 할당된 라인 번호와 더불어, L2 캐쉬로 이송된다. 그러면 L2 캐쉬는 제 196 단계에서 세가지 방법중 하나로 응답한다.
첫째로, L2 캐쉬는, 읽기 또는 변경을 위한 읽기 요청에 의해 찾아지는 데이타의 변경된 버전을 가지고 있는 다른 L1 캐쉬를 식별함으로써 응답할 수 있다. (제 198 단계) 만약 상기의 상황이 발생한다면, 제 200 단계에서, 데이타가 요청하는 L1 캐쉬로 이동되기 위하여, 다른 L1 캐쉬로 하여금 데이타를 천이 캐쉬 버퍼로 플러쉬백하게 하는, 플러쉬 라이트백 명령이 다른 L1캐쉬로 보내어진다. 그러면, 제 202 단계에서, 제 192 단계에서 할당된 천이 캐쉬 버퍼 라인 번호는, 다른 L1 캐쉬가 변경된 데이타를 요청하는 L1 캐쉬에 의해 모니터되는 동일한 천이 캐쉬 버퍼 라인으로 반환하게 하기 위하여, 다른 L1 캐쉬로 이송된다. 제 204 단계에서, 다른 L1 캐쉬의 데이타는 할당된 천이 캐쉬 라인으로 반환되고, 제 206 단계에서 데이타는, 그것이 천이 캐쉬 라인으로 씌어질때, 요청하는 L1 캐쉬로 전달된다. 하나의 구체화로서, 데이타가 요청하는 L1 캐쉬에 의해 가능한한 빨리 획득되게 하기 위하여, 요청하는 L1 캐쉬는 천이 캐쉬로의 쓰기들을 모니터하거나 데이타가 다른 L1 캐쉬로부터 천이 캐쉬로 씌어질때 데이타를 직접적으로 수령할 수 있다. 데이타가 반환될때, 데이타는, 데이타가 L2 캐쉬 및/또는 주 메모리내의 데이타와 동일하지 않다는 것을 나타내기 위하여, '변경' 으로 표시된다. 그러면 요청하는 L1 캐쉬는 상술한 바와 같이 데이타에 적절한 작용을 할 것이다.
데이타가, L2 캐쉬 또는 주 메모리에 라이트백됨이 없이, 하나의 L1 캐쉬로부터 다른 L1 캐쉬로 직접 전달될 수 있으므로, 상기 기능은 실질적인 시간의 절약을 제공한다는 것에 주목하여야 한다. 특히 두 프로세서들이 반복적으로 동일한 데이타를 겹쳐쓰는 상황에서, 본 발명의 상기 특징은, 변경된 데이타가 L1 캐쉬들 사이에 직접적으로 전달되어짐을 허용함으로써, 캐쉬 오버헤드의 실질적인 절약을 제공한다.
만약 제 208 단계에서, 요청하는 L1 캐쉬에 의해 찾아지는 데이타가 L2 캐쉬내에 있고 변경되었으나 (변경된 데이타는 다른 L1 캐쉬로부터 플러쉬되거나 에이징되었기 때문에) 다른 L1 캐쉬내에 존재하지 않는다면, L2 캐쉬는 데이타를 '변경' 으로 표시하여 천이 캐쉬로 반환함으로써 응답할 것이다. 유사하게, 만약 L1 캐쉬가 변경을 위한 목적으로 데이타를 읽고 데이타가 L2 캐쉬내에 '배타' 로 표시된다면, L2 캐쉬는 데이타를 '배타' 로 표시하여 천이 캐쉬로 반환함으로써 응답할 것이다. 둘중 어느 경우에나, 제 206 단계에서 데이타는, 데이타가 천이 캐쉬 라인에 씌어질때, '변경' 으로 표시되어 요청하는 L1 캐쉬로 다시 보내진다. 구체적으로, 데이타가 요청하는 L1 캐쉬에 의해 가능한한 빨리 획득되게 하기 위하여, 요청하는 L1 캐쉬는 천이 캐쉬로의 쓰기들을 모니터하거나 데이타가 L2 캐쉬로부터 천이 캐쉬로 씌어질때 데이타를 직접 수령할 수 있다. 그러면 요청하는 L1 캐쉬는 상술한 바와 같이 데이타에 적절한 작용을 할 것이다.
만약 요청하는 L1 캐쉬에 의해 찾아지는 데이타가 L2 캐쉬내에 있고 변경되지 않았거나, 또는 데이타가 L2 캐쉬내에 있지 않고 주 메모리로부터 L2 캐쉬로 가져와져야 된다면, 제 210 단계에서 L2 캐쉬는 데이타를 '공유' 또는 '배타' 둘중 하나로 표시하여 천이 캐쉬 버퍼로 반환할 것이다. 만약 데이타가 '공유' 로 표시되어 반환된다면, 제 212 단계에서 데이타는 '공유' 로 표시되어 L1 캐쉬로 반환된다. 만약 데이타가 '배타' 로 표시되어 반환되고 L1 캐쉬가 변경을 위한 목적없이 데이타를 읽는다면, 제 212 단계에서 데이타는 '공유' 로 표시되어 L1 캐쉬로 반환된다. 그러면 L1 캐쉬는 적절하게 응답하고, 상술한 것과 같이 소유권을 위한 요청을 만들어낼수 있다.
도 6b 에서, L2 캐쉬로부터 수령한 플러쉬 라이트백 또는 셰어링 라이트백 명령에 응답하는 부분으로서, 천이 캐쉬에 의해 수행되는 동작들이 이해될 수 있다. 상술되었으며 이하에 기술되는 바와 같이, L2 캐쉬가 상응하는 L2 캐쉬 라인의 에이징 또는 다른 프로세서 컴플렉스에 의한 데이타의 접근 및/또는 소유권의 요청에 기인하여, L1 캐쉬내의 데이타가 플러쉬 되어야한다고 결정할때, 상기 명령들은 천이 캐쉬에 의해 수령된다.
후자의 상황에서는, 이하에 기술될 것과 같이, L2 캐쉬는 요청된 라이트백의 완결을 기다리는 동안에, 또한 다른 프로세서 컴플렉스의 읽기 또는 소유권을 위한 요청을 차단하고/거절할 것이다. 그러면 다른 프로세서 컴플렉스는 읽기 또는 소유권을 위한 요청의 재시도를 낼 것이다.
만약 천이 캐쉬 라인이 미리 할당되지 않았다면, 제 222 단계에서 라인이 할당된다. 그러면 제 224 단계에서 플러쉬 라이트백 또는 셰어링 라이트백 명령이 변경된 데이타를 갖고 있는 L1 캐쉬로 이송되고, 제 226 단계에서, 제 224 단계에서 할당된 천이 캐쉬 라인은 L1 캐쉬로 이송된다. 그 후, 제 228 단계에서 L1 캐쉬는 데이타를 식별된 라인으로 이송함으로써 응답한다.
이 시점에서, 상이한 과정이 L2 캐쉬에 의해 생긴 라이트백 명령에 기초하여 수행된다. 만약 명령이 플러쉬 라이트백이었다면 (제 230 단계), 제 232 단계 에서, L1 캐쉬로부터 받은 데이타는 주 메모리로 직접적으로 이송되고, 제 234 단계에서 플러쉬 라이트백 확인 (confirmation) 이 L2 캐쉬로 이송된다. 데이타는, L2 캐쉬가 이미 상기 데이타가 전체의 프로세서 컴플렉스로부터 플러쉬 되어야 한다고 결정했기 때문에, L2 캐쉬내에 저장되지 않는다. 만약 명령이 셰어링 라이트백이었다면 (제 236 단계), 제 238 단계에서 데이타는 주 메모리로 이송되고, 이에 부가하여, 제 240 단계에서 셰어링 라이트백 명령은 L2 캐쉬로 이송되고 제 242 단계에서 데이타는 또한 L2 캐쉬로 이송되고 L2 캐쉬내에 저장된다.
도 6c 에서, L1 캐쉬로부터의 에이징 캐스트백에 응답하여 천이 캐쉬에 의해 수행되는 동작들이 설명된다. 상술한 바와 같이, 에이징 캐스트백은 변경된 데이타가 L1 캐쉬로부터 에이징되었을때 발생한다. 다른 프로세서 컴플렉스가 변경된 데이타의 필요가 있는지의 표시가 없기 때문에, 천이 캐쉬는 데이타를 단지 L2 캐쉬로 이송한다. 따라서, 제 1의 250 단계에서, 천이 캐쉬 라인은 명령에 할당되고, 제 252 단계에서 라인 번호는 L1 캐쉬로 이송된다. 제 254 단계에서, 데이타는 L1 캐쉬로부터 수령된다. 그러면, 제 256 단계, 에이징 캐스트백명령이 L2 캐쉬로 이송되고, 제 258 단계에서, 수령된 데이타는 L2 캐쉬로 이송된다.
도 6d 에서, L1 캐쉬로부터의 노 롱거 프리젠트 캐스트백에 응답하는 부분으로서, 천이 캐쉬에 의해 수행될 수 있는 선택적인 동작들이 설명될 수 있다. 상술한 바와 같이, 노 롱거 프리젠트 캐스트백은 L2 캐쉬에게 캐스트백을 일으키는 L1 캐쉬가 더이상 식별된 데이타의 복사물을 갖고 있지 않다는 것을 알린다. 데이타 그 자체는 변화하지 않았고, 따라서 L1 캐쉬로부터 반환되지 않는다. 따라서, 노 롱거 프리젠트 캐스트백이 수령된 (제 260 단계) 후에, 제 262 단계에서 동일한 데이타를 위한 노 롱거 프리젠트 캐스트백은 L2 캐쉬로 이송된다.
도 7a 에서, 천이 캐쉬로부터의 읽기 또는 변경을-위한-읽기 요청에 응답하는 부분으로서, L2 캐쉬에 의해 수행되는 동작들이 설명될 수 있다. 제 1의 270 단계에서, 상기 동작을 위한 천이 캐쉬 라인 번호는 천이 캐쉬로부터 수령된다. 그러면 제 272 단계에서, L2 캐쉬는 요청된 데이타를 위한 유효한 CL을 찾는 방법으로 요청된 데이타가 L2 캐쉬내에 있는지를 결정한다. 만약 L2 캐쉬내에 상기 데이타를 위한 CL이 있다면, 제 274 단계에서, 식별된 CL은 최대-최근-사용의 것으로 만들어진다. 다음으로 제 276 단계에서, CL은 그것이 '변경' 으로 표시되었는지 결정하기 위하여 조사된다. 만약 그렇다면, 제 277 단계에서, L2 캐쉬는, 식별된 CL내에 설정된 존재 비트가 있는지 결정하는 방법으로, 변경된 데이타를 갖고 있는 L1 캐쉬가 존재하는지를 결정한다.
만약 제 277 단계에서 설정된 존재 비트가 존재한다면, L1 캐쉬가 다른 L1캐쉬에 의해 필요로되는 변경된 데이타를 가지고 있는, 상술한 상황이 발생한다. 상기 상황에서는, 제 278 단계에서, 설정된 존재 비트를 갖고 있는 L1 캐쉬로의 포인터가 천이 캐쉬로 이송되고, 천이 캐쉬로 하여금 변경된 데이타를 현재 데이타를 갖고 있는 L1 캐쉬로부터 데이타를 필요로하는 L1 캐쉬로 전송하게 한다. 상술한 바와 같이, 상기 직접적인 L1 에서 동급 L1 으로의 데이타 전송은, 특히 두 프로세서들이 반복적으로 동일한 데이타를 겹쳐쓰는 상황에서, 캐쉬된 데이타를 관리하는 것과 관련된 오버헤드를 실질적으로 감소시킬 수 있다. 제 278 단계 이후, 제 280 단계에서, 현재 변경된 데이타를 갖고 있는 L1 캐쉬를 위한 존재 비트가 제거되고, 변경된 데이타가 현재 요청하는 L1 캐쉬내에 존재한다는 것을 반영하기 위하여, 데이타를 요청하는 L1 캐쉬를 위한 존재 비트가 설정된다. 그후 상기 요청의 과정은 종료된다.
만약 제 276 단계에서, 위치된 CL이 '변경' 으로 표시되지 않거나, 또는 만약 제 277 단계에서 CL내에 어떠한 존재 비트들도 설정되지 않았다면, 요청된 데이타는 L2 캐쉬로부터 반환된다. 상기의 경우에 있어서, 제 282 단계에서, 천이 캐쉬로부터 수령된 읽기 요청의 종류에 기초하여 상이한 동작들이 발생된다. 만약 요청이 읽기라면 (제 284 단계), 제 286 단계에서 요청하는 L1 캐쉬를 위한 존재 비트가 설정되고, 제 288 단계에서 L2 캐쉬 CL내의 데이타는, '변경', '공유' 또는 '배타' 의 L2 캐쉬 CL의 상태와 더불어, 제 270 단계에서 식별된 천이 캐쉬 라인으로 이송된다. 만약 요청이 변경을-위한-읽기 라면 (제 290 단계), 제 292 단계에서 L2 캐쉬 CL은 그것이 '배타' 의 상태에 있는지 결정하기 위하여 조사되며, 만약 그렇다면, 제 294 단계에서 CL은, 다른 프로세서 컴플렉스들이 데이타의 복사물을 갖고 있지 않기 때문에, '변경' 의 상태로 변화된다. 만약 제 292 단계에서 CL이 '배타' 의 상태에 있지 않거나, 또는 제 294 단계에서 CL이 '변경' 의 상태로 설정된 후에는, 제 296 단계에서 상응하는 데이타를 위한 플러쉬 명령이, 위치된 L2 CL내의 설정된 존재 비트들을 갖는 임의의 L1 캐쉬들로 보내진다. 상기 과정은, 데이타가 요청하는 CL에 의해 소유되기 위하여, 다른 L1 캐쉬들내의 모든 상기 데이타의 복사물들을 삭제하는 것으로 이루어진다. 그러면, 제 298 단계에서, L1 캐쉬들을 위한 모든 설정된 존재 비트들이 플러쉬된 L1 캐쉬들을 표시하기 위하여 제거된다. 그러면, 과정은, 요청하는 L1 캐쉬를 위한 존재 비트를 설정하고, 데이타를 L2 캐쉬 CL 로부터 '공유', '변경' 또는 '배타' 의 L2 캐쉬 CL 의 상태와 더불어 천이 캐쉬로 반환하기 위하여, 제 286 및 제 288 단계로 진행한다.
만약 제 272 단계에서, L2 캐쉬내에 요청된 데이타를 위한 CL이 없다면, 과정은, 도 7d 에 참조로서 기술된 바와 같이, CL이 새로운 데이타를 위하여 L2 캐쉬로 추가되는 제 300 단계로 진행한다. 그후에, 과정은, 요청하는 L1 캐쉬를 위한 존재 비트를 추가된 CL 에 설정하고, 데이타를 추가된 L2 캐쉬 CL 로부터 '공유', '변경' 또는 '배타' 의 추가된 L2 캐쉬 CL 의 상태와 더불어 천이 캐쉬로 반환하기 위하여, 제 286 및 288 단계로 진행한다.
도 7b 에서, L1 캐쉬로부터 받은 소유권을 위한 요청에 응답하는 부분으로서, L2 캐쉬에 의해 수행되는 동작들이 설명될 수 있다. 상술한 바와 같이, L1캐쉬가 쓰기 요청을 받고 L1 캐쉬내에 '공유' 로 표시된 상응하는 데이타를 가질때, 소유권을 위한 요청이 L1 캐쉬에 의해 발생한다. 소유권을 위한 요청에 응답하기 위하여, L2 캐쉬는, 다른 어떤 L1 캐쉬도 데이타의 복사물을 갖지 않는다는 것을 보장하고, 다른 어떤 프로세서 컴플렉스도 데이타의 복사물을 갖지 않는다는 것을 보장하며, 데이타를 L2 캐쉬내에 '변경' 의 형태로 표시하여야 한다.
따라서, 소유권을 위한 요청에 응답하여, 제 1의 310 단계에서 L2 캐쉬는, 소유권을 위한 요청의 식별된 데이타를 위하여 L2 캐쉬내에 CL 을 위치시킨다. 임의의 L1 캐쉬내에 있는 모든 데이타는 또한 L2 캐쉬내에 있다고 인식될 것이고, 그래서 소유권을 위한 요청이 L2 캐쉬에 의하여 수령될때, L2 캐쉬내에 데이타를 위한 CL이 존재하여야만 한다.
L2 캐쉬 CL을 식별한 후, 제 312 단계에서, 위치된 CL은 그것이 '공유' 로 표시되는지 결정하기 위하여 평가된다. 만약 L2 캐쉬 CL이 '공유' 로 표시된다면, 동일한 데이타의 복사물을 갖는 다른 프로세서 컴플렉스가 존재하는 것이다. 따라서, 만약 L2 캐쉬 CL 이 '공유' 로 표시된다면, 제 314 단계에서 L2 캐쉬는 소유권을 위한 요청을 시스템 버스로 이송하고, 다른 프로세서 컴플렉스들로 하여금 데이타의 소유권을 양보하게 하는것을 시도한다. 상기 요청은 수락될 수도 있고 거절될 수도 있다. 요청이, 예를 들어 다른 프로세서 컴플렉스가 데이타의 변경된 데이타를 갖고 있기 때문에, 거절된다면 (제 316 단계), 제 318 단계에서 L2 캐쉬는 L1 캐쉬로부터의 소유권을 위한 요청을 거절하고, 소유권을 위한 요청의 과정은 종료된다. 상기한 L1 캐쉬의 동작들로부터, L1 캐쉬에 의한 소유권을위한 요청이 거절된다면, L1 캐쉬는 요청이 수락될 때까지 요청을 재시도할 것으로 인식되어진다. 따라서, 소유권을 위한 요청이 거절된 후, L2 캐쉬는 곧 반복되는 요청을 받을 것이고, 도 7b 의 과정은 다시 시작될 것이다. 이하의 기술로부터, 다른 프로세서 컴플렉스가 소유권을 위한 요청을 거절한다면, 그것이 재시도되었을때 소유권을 위한 요청을 수락하기 위하여, 주 메모리로의 변경된 데이타의 라이트백의 과정이 시작될 것이라 또한 인식될 수 있다.
따라서, 궁극적으로 상기 시스템 버스로 이송된 소유권을 위한 요청이 수락되면 (제 320 단계), 제 322 단계에서 소유권을 위한 상기 L1 캐쉬로부터의 요청은 수락된다. 더나아가, 만약 제 312 단계에서 상기 L2 CL이 '공유' 로 표시되지 않는다면, 과정은 바로 제 322 단계로 진행되고 L1 캐쉬로부터의 소유권을 위한 요청은 즉시 수락된다. 소유권을 위한 요청의 수락 후에, 제 324 단계에서 플러쉬 명령이, 소유권을 요청하는 L1 캐쉬를 제외한, L2 CL내에 설정된 존재 비트들을 갖고 있는 모든 L1 캐쉬들에게로 보내진다. 상기 단계는 다른 어떤 L1 캐쉬들도 데이타의 복사물을 갖고 있지 않다는 것을 보장한다. 그러면 제 326 단계에서, 소유권을 요청하는 L1 캐쉬를 제외한 모든 L1 캐쉬들을 위한 상기 존재 비트들이 제거된다. 마지막으로, 제 328 단계에서, 위치된 L2 캐쉬 CL은, CL과 관련된 데이타가 소유권을 요청한 L1 캐쉬내에 변경되었다는 것을 표시하기 위하여, '변경' 으로 표시된다.
도 7c 에서, 셰어링 라이트백, 에이징 캐스트백, 노 롱거 프리젠트 캐스트백, 및 플러쉬 라이트백 명령들에 응답하는 부분으로서, L2 캐쉬에 의해 수행되는동작들이 설명될 수 있다. 셰어링 라이트백 명령은, 다른 프로세서 컴플렉스의 데이타를 읽으려는 시도의 결과로서 L1 캐쉬가 변경된 데이타를 주 메모리 및 L2 캐쉬로 라이트백 할때, 제 330 단계에서 L2 캐쉬에 의해 수령된다. 따라서, 셰어링 라이트백 명령이 수령되면, 제 332 단계에서, 상응하는 L2 캐쉬 CL이 식별되고, 다른 프로세서 컴플렉스가 데이타의 복사물을 검색하는 것을 반영하기 위하여, L2 캐쉬 CL은 '공유' 로 설정된다. 그러면, 제 334 단계에서, 셰어링 라이트백을 위한 변경된 데이타는 천이 캐쉬로부터 L2 캐쉬에 의해 수령되고, 식별된 L2 캐쉬내에 저장된다.
에이징 캐스트백은, 변경된 데이타를 가진 L1 캐쉬가 데이타를 에이지 아웃 (age out) 하고 데이타를 L2 캐쉬로 반환할때, 제 336 단계에서 L2 캐쉬에 의해 수령된다. 따라서, 에이징 라이트백 명령이 수령되면, 제 338 단계에서, 상응하는 L2 캐쉬 CL이 식별되고, 상기 명령을 위한 데이타가 더이상 L1 캐쉬내에 존재하지 않는다는 것을 반영하기 위하여, 캐스트백 명령을 발생시키는 L1 캐쉬를 위한 CL 내의 존재 비트는 제거된다. 그러면, 제 334 단계에서 에이징 캐스트백을 위한 변경된 데이타는 식별된 L2 캐쉬 CL로 씌어진다.
선택적인 노 롱거 프리젠트 캐스트백 명령은, L1 캐쉬가 변경되지 않은 데이타를 에이지 아웃할때, 제 340 단계에서 L2 캐쉬에 의해 수령된다. 따라서, 노 롱거 프리젠트 캐스트백 명령이 수령되면, 제 342 단계에서, 상응하는 L2 캐쉬 CL이 식별되고, 상기 명령을 위한 데이타가 더이상 L1 캐쉬내에 존재하지 않는다는 것을 반영하기 위하여, 상기 명령을 발생시키는 L1 캐쉬를 위한 CL 내의 존재 비트는 제거된다.
플러쉬 라이트백 확인 명령은, 변경된 데이타를 가진 L1 캐쉬가 데이타를 주 메모리로 반환할때, 제 344 단계에서 L2 캐쉬에 의해 수령된다. 상기 명령은, 다른 프로세서 컴플렉스가 데이타에 쓰려는 시도를 할때 또는 L2 캐쉬가 L2 캐쉬로부터 관련된 CL을 에이징할때 발생한다. 따라서, 플러쉬 라이트백 확인 명령이 수령될때, L2 캐쉬는 관련된 데이타를 위한 CL을 가질 수도 있고 가지지 않을 수도 있다. 따라서, 제 1 의 346 단계에서, 관련된 데이타를 위한 CL이 L2 캐쉬내에 존재하는지가 결정된다. 만약 존재하지 않는다면, 더이상의 과정은 요구되지 않는다. 그러나, 만약 L2 캐쉬내에 플러쉬 라이트백 확인에 의해 식별된 데이타를 위한 CL이 존재한다면, 제 348 단계에서, CL은 '무효' 로 표시되고 L2 캐쉬에 의해 유지되는 CL 엔트리들의 큐내에 최소-최근-사용의 위치로 이동된다.
도 7d 에서, 새로운 데이타를 위해 캐쉬 라인 (CL) 을 L2 캐쉬에 추가하는 부분으로서, L2 캐쉬에 의해 수행되는 동작들이 설명될 수 있다. 제 1 의 350 단계에서, L2 캐쉬내에 CL이 대체를 위해 선택된다. 이는 최소-최근-사용의 CL을 선택하는 것, 또는 약간의 보다 복잡한 동작들을 수반할 수 있다. 그러면 제 352 단계에서, 선택된 CL은 CL이 '변경' 으로 표시되는지를 결정하기 위하여 평가된다. 만약 그렇다면, 특별한 과정이 변경된 데이타를 주 메모리로 다시 이동시키는 것으로 수행되어져야한다. 따라서, 제 354 단계에서, 선택된 CL 은 CL내에 조금이라도 존재 비트들이 설정되었는지 결정하기 위하여 평가된다. 만약 그렇지 않다면, 변경된 데이타는 L2 캐쉬 CL내에 있는 것이고, 제 356 단계에서데이타는 L2 캐쉬 CL로부터 주 메모리로 이송되며, 제 358 단계에서 CL은, 새로운 데이타를 위한 어드레스를 식별하는 CL의 태그를 설정하는 것을 포함하여 새로운 데이타를 관리하기 위하여 셋업된다.
만약 제 354 단계에서, 선택된 CL이 설정된 존재 비트를 갖는다면, 설정된 존재 비트에 의해 식별된 L1 캐쉬 CL은 변경된 데이타를 저장하고 있는 것이다. 이 경우에는, 제 360 단계에서 L2 캐쉬 CL은, L1 캐쉬로 하여금 변경된 데이타를 플러쉬하고 데이타를 주 메모리로 반환하게 하기 위하여, 설정된 존재 비트를 가진 L1 캐쉬로 플러쉬 라이트백 명령을 보낸다. 상기 플러쉬 라이트백 명령은, 상술한 바와 같이, 천이 캐쉬가 데이타의 반환을 관리하게 하기 위하여, 천이 캐쉬를 경유하여 보내진다. 그러면 과정은 새로운 데이타를 받는 선택된 CL을 셋업하는 제 358 단계로 진행된다.
만약 제 352 단계에서, 선택된 CL이 '변경' 으로 표시되지 않았다면, 데이타의 모든 복사물들이 모든 L1 캐쉬들로부터 플러쉬되어야한다. 따라서, 상기 경우에서는 제 362 단계에서, 과거의 데이타를 위한 플러쉬 명령이 설정된 존재 비트들을 갖는 모든 L1 캐쉬들로 보내지어, L1 캐쉬들로하여금 데이타를 플러쉬하게 한다. 그러면 과정은 새로운 데이타를 받는 상기 선택된 CL을 설정하는 제 358 단계로 진행된다.
제 358 단계이후, 새로운 데이타는 선택된 CL내에 저장을 위해 획득된다. 제 1 단계는 새로운 데이타를 위해 시스템 버스로 읽기 또는 변경을-위한-읽기 둘중 하나의 요청을 보내는 것이다. 만약 L2 캐쉬가 천이 캐쉬로부터의 읽기 요청에 응답하기 위해 새로운 CL을 설정하였다면 읽기 요청이 보내지고, 만약 L2 캐쉬가 천이 캐쉬로부터의 변경을-위한-읽기 요청에 응답하기 위해 새로운 CL을 설정하였다면 변경을-위한-읽기 요청이 보내진다.
상기 요청이 시스템 버스로 이송된후, 상이한 동작들이 시스템 버스 및 주 메모리로부터의 응답에 기초하여 수행된다. 만약 데이타가 읽기 명령으로 요청되었고 데이타가 '공유' 로 표시되어 반환되면 (제 366 단계), 제 368 단계에서 선택된 L2 캐쉬 CL은, 다른 프로세서 컴플렉스들이 데이타의 복사물을 가진다는 것을 표시하기 위해, '공유' 로 표시되며, 제 370 단계에서 선택된 L2 캐쉬 CL은 최대-최근-사용의 것으로 만들어져, L2 캐쉬에 데이타를 추가하기위한 상기 과정은 종료된다. 택일적으로, 만약 데이타가 읽기 명령으로 요청되었고 데이타가 '배타' 로 표시되어 반환되면 (제 372 단계), 제 374 단계에서 선택된 L2 캐쉬 CL은, 다른 어떤 프로세서 컴플렉스들도 데이타의 복사물을 갖지 않는다는 것을 표시하기 위해, '배타' 로 표시되며, 제 370 단계에서 선택된 L2 캐쉬 CL은 최대-최근-사용의 것으로 만들어져, L2 캐쉬에 데이타를 추가하는 상기 과정은 종료된다.
만약 데이타가 변경을-위한-읽기 명령으로 요청되었고 데이타가 '배타' 로 표시되어 반환되면 (제 376 단계), 제 378 단계에서 선택된 L2 캐쉬 CL은, 데이타가 상기 프로세서 컴플렉스 내에서 변경될 것이라는 것을 표시하기 위해, '변경' 으로 표시되며, 제 370 단계에서 선택된 L2 캐쉬 CL은 최대-최근-사용의 것으로 만들어져, L2 캐쉬에 데이타를 추가하는 상기 과정은 종료된다. 택일적으로, 만약 '재시도' 가 읽기 요청에 응답하여 상기 시스템 버스로부터 수령된다면 (제 380단계), 이는 다른 프로세서 컴플렉스가 데이타의 변경된 복사물을 가지고 변경된 데이타를 주 메모리로 반환하는 과정에 있다는 것을 의미한다. 상기의 상황에서는, 상기 요청은 재시도되어야 하며, 따라서 과정은 상기 요청을 재시도하기 위해 제 364 단계로 돌아간다.
도 7e 에서, 다른 프로세서 컴플렉스로부터 수령된 소유권을 위한 요청에 응답하는 부분으로서, L2 캐쉬에 의해 수행되는 동작들이 설명될 수 있다. 제 1 의 390 단계에서, L2 캐쉬는 L2 캐쉬가 요청된 데이타를 위한 CL을 L2 캐쉬내에 갖고 있는지 결정한다. 만약 그렇다면, CL은 소유권을 위한 요청을 어떻게 처리할 것인지를 결정하기 위하여 평가된다. 상기 상황에서는, 제 392 단계에서, CL은 CL이 '변경' 으로 표시되었는지 결정하기 위하여 조사된다. 만약 그렇다면, 주 메모리로 반환되지 않은 데이타의 변경된 복사물이 이 프로세서 컴플렉스내에 존재한다는 것이다. 그러면 문제는 변경된 데이타가 L2 캐쉬내에 있는지 또는 L1 캐쉬들중 하나로부터 플러쉬되었는지가 된다. 따라서, 제 394 단계에서, L2 캐쉬 CL내의 존재 비트들이 모두 제거되었는지 결정하기 위하여 조사된다. 만약 그렇다면, L2 캐쉬는 변경된 데이타의 가장 최근의 복사물을 갖는 것이고, 제 396 단계에서 선택된 L2 캐쉬 CL내의 데이타는 주 메모리로 반환되며, 제 398 단계에서 선택된 L2 캐쉬 CL은 '무효' 로 표시되고 L2 캐쉬에 의해 유지되는 CL들의 큐내의 최소-최근-사용의 위치로 이동된다. 이 시점에서, 소유권을 위한 요청은 제 400 단계에서 수락될 수 있고, 다른 프로세서 컴플렉스는 주 메모리로부터 변경된 데이타를 읽는다.
만약 제 390 단계에서, L2 캐쉬가 식별된 데이타를 위한 CL을 갖지 않는다고 결정하면, L2 캐쉬는 즉시 제 400 단계로 진행하고 소유권을 위한 요청을 수락한다.
만약 제 392 단계에서, L2 캐쉬가 데이타를 위한 CL을 가지나 데이타가 변경되지 않았다면, 데이타는 단지 이 프로세서 컴플렉스로부터 플러쉬되어서, 제 402 단계에서 L2 캐쉬는 상기 데이타를 위한 플러쉬 명령을 설정된 존재 비트를 갖는 모든 L1 캐쉬들로 보내고, L2 캐쉬는 CL을 '무효' 로 표시하고 제 400 단계에서 소유권을 위한 요청을 수락한다.
만약 제 394 단계에서, L2 캐쉬가 설정된 존재 비트가 있다고 결정하면, 변경된 데이타는 L1 캐쉬내에 있는 것이고, 플러쉬 되어야한다. 상기의 상황에서는, 제 404 단계에서 소유권을 위한 요청은, L1 캐쉬가 데이타를 주 메모리로 플러쉬하기위한 시간을 주기 위해 거절된다. 그러면 제 406 단계에서, L2 캐쉬는, L1 캐쉬로하여금 데이타를 주 메모리로 플러쉬백하게 하기 위하여 설정된 존재 비트를 갖는 L1 캐쉬로 플러쉬 라이트백 명령을 보낸다. 다른 프로세서 컴플렉스가 소유권을 위한 상기 요청을 반복할 것이라고 인식될 수있고, L1 캐쉬가 성공적으로 데이타를 주 메모리로 반환하였다는 것을 표시하는 플러쉬 라이트백 확인이 수령될때까지는, L2 캐쉬는 데이타를 위한 CL 엔트리를 가질것이고 상기한 것과 동일한 경로를 따라 소유권을 위한 요청을 거절한다. 일단 L1 캐쉬들이 성공적으로 데이타를 주 메모리로 반환하면, L2 캐쉬는 자신의 CL 엔트리를 무효로 할 것이고 (상기한 도 7c 참조), 그러면 다른 프로세서 컴플렉스로부터의 소유권을 위한다음의 요청은 수락될 것이다.
도 7f 에서, L2 캐쉬가 다른 프로세서 컴플렉스로부터 읽기 또는 변경을-위한-읽기 요청을 스누프 (snoop) 할때, L2 캐쉬에 의해 수행되는 동작들이 설명될 수 있다. L2 캐쉬가 시스템 버스위의 읽기 또는 변경을-위한-읽기를 감지하였다면, L2 캐쉬는 그것이 데이타의 변경된 버전을 가지며 '재시도' 명령을 가진 접근을 차단해야 하는지 및/또는 L2 캐쉬가 데이타의 변경되지 않은 복사물을 가지며 데이타로 하여금 '공유' 로 표시된 다른 프로세서 컴플렉스로 반환되게 하여야 하는지를 결정해야만 한다. 상기의 결정들은 도 7f 에서 수행된다.
제 1 의 410 단계에서, L2 캐쉬는 L2 캐쉬가 요청된 데이타를 위한 CL을 갖는지를 결정한다. 만약 그렇지 않다면, 더이상의 다른 동작들이 필요로 되지 않는다. 그러나, 만약 요청된 데이타를 위한 CL이 L2 캐쉬내에 존재한다면, 제 412 단계에서 CL은 CL이 '변경' 으로 표시되었는지 결정하기 위하여 평가된다. 만약 그렇다면, 다른 프로세서 컴플렉스로부터의 요청은 차단되야하고, 제 414 단계에서 '재시도' 표시가, 데이타를 주 메모리로 보내기 위한 시간을 주기 위해, 시스템 버스로 보내진다.
일단 다른 프로세서 컴플렉스로부터의 접근이 이 프로세서 컴플렉스내의 변경된 데이타의 존재에 기인하여 차단되었다면, 제 416 단계에서, L2 캐쉬는, CL내에 설정된 존재 비트들이 있는지 결정하기 위하여 평가되어 변경된 데이타가 어디에 있는지를 결정한다. 만약 그렇다면, 상이한 동작들이 상기 접근의 유형에 기초하여 이루어진다. (제 418 단계) 만약 상기 접근이 읽기 접근이라면 (제420 단계), 제 422 단계에서, L1 캐쉬내의 데이타로 하여금 주 메모리 및 L2 캐쉬로 라이트백되고 '공유' 라고 표시되게 하기 위하여, 데이타를 위한 셰어링 라이트백 명령이 설정된 존재 비트를 갖는 L1 캐쉬로 보내진다. 상기의 것이 발생하기까지, 상술한 것과 동일한 경로를 통한 '재시도' 를 지닌 읽기 요청의 어떠한 재시도도 차단될 것이다. 일단 L1 이 데이타를 주 메모리 및 상기 L2 캐쉬로 라이트백하고 L2 캐쉬가 '공유' 로 표시되어지면 (도 7c 참조), 상기 접근은 하기하는 바와 같이 허락된다. 유사하게, 만약 다른 프로세서 컴플렉스로부터의 접근이 변경을-위한-읽기 접근이라면 (제 424 단계), 제 426 단계에서 상기 데이타를 위한 플러쉬 라이트백 명령이, L1 캐쉬내의 데이타로 하여금 주 메모리로 라이트백되게하고 L2 캐쉬 CL이 무효화되게 하기 위하여, 설정된 존재 비트를 갖는 L1 캐쉬로 보내진다. 상기한 것이 발생하기까지, 상술한 것과 동일한 경로를 통한 읽기 요청의 어떠한 재시도도 차단될 것이다.
만약 제 416 단계에서 L2 캐쉬가 설정된 존재 비트들이 없다고 결정하면, 변경된 데이타의 가장 최신의 버전이 L2 캐쉬 CL내에 있는 것이다. 상기의 경우에는, 제 428 단계에서 변경된 데이타는, 읽기 요청이 재시도될때 이용할 수 있도록 하기 위해, L2 캐쉬 CL로부터 주 메모리로 이송된다. 그러면, 접근의 유형에 기초하여 (제 430 단계), 상이한 동작들이 수행된다. 만약 접근이 읽기 접근이었다면 (제 432 단계), L2 캐쉬 CL은, L2 캐쉬 데이타가 주 메모리와 비교하여 변경되지 않는다는 것을 나타내기 위해, '배타' 로 표시되고, 당분간 L2 캐쉬는 단지 상기 데이타의 복사물을 갖는다. 그 후, 접근이 다른 프로세서 컴플렉스에의해 검색되면, L2 캐쉬 CL은 하기할 것과 같이, '공유' 로 표시된다. 만약 상기 접근이 변경을-위한-읽기 접근이었다면 (제 436 단계), 데이타는 L2 캐쉬로부터 플러쉬되어야 한다. 따라서, 상기의 상황에서는 제 438 단계에서 L2 캐쉬 CL은 '무효' 로 표시되고 최소-최근-사용의 것으로 만들어진다.
만약 제 412 단계에서, L2 캐쉬가 읽기 또는 변경을-위한-읽기 요청을 조건으로하는 데이타를 위한 CL이 '변경' 으로 표시되지 않았다고 결론지으면, 상이한 동작들이 상기 요청의 유형에 기초하여 이루어진다. (제 440 단계) 만약 요청이 변경을-위한-읽기 요청이라면 (제 442 단계), 데이타는 이 프로세서 컴플렉스로부터 완전히 플러쉬되어야 한다. 따라서, 제 444 단계에서 CL 데이타를 위한 플러쉬 명령이 설정된 존재 비트를 갖는 임의의 L1 캐쉬로 보내지고, 과정은 즉시, L2 캐쉬 CL이 '무효' 로 표시되고 최소-최근-사용의 것으로 만들어지는 제 438 단계로 진행된다. 만약 상기 요청이 읽기 요청이라면 (제 446 단계), 상기 접근들은 수락되어져야하나 데이타는 '공유' 로 돌려져야되고, 이 프로세서 컴플렉스의 데이타는 또한 다른 프로세서 컴플렉스가 데이타의 복사물을 갖고 있다는 것을 반영하기 위해 '공유' 로 표시되어져야 한다. 따라서, 제 448 단계에서 '공유' 라는 표시는, 다른 프로세서 컴플렉스가 공유된 데이타를 수령할 수 있게하기 위해, 시스템 버스로 보내져야한다. 그러면, 제 450 단계에서 위치된 L2 캐쉬 CL은, 다른 프로세서 컴플렉스가 데이타의 복사물을 갖고 있다는 것을 반영하기 위해, '공유' 로 표시된다.
상술한 것은 본 발명의 바람직한 실시예이다. 따라서 보다 넓은 모습으로서의 본 발명은 상술한 구체적인 세부사항들, 대표적인 장치와 방법들, 및 설명을 위한 사례들에 제한되는 것이 아니다. 따라서, 본 출원의 일반적인 발명의 착상의 정신 또는 범위에서 벗어남이 없이, 상기 세부사항으로부터의 변형이 있을 수 있다.
상술한 바와 같이, 본 발명은 기억 제어 회로가 제 1 캐쉬로부터 데이타의 요청을 받았고, 데이타가 제 2 프로세서에 의해 변경되었고 제 2 캐쉬내에 변경된 형태로 저장되었다면, 기억 제어 회로는 제 2 캐쉬로 하여금 공유된 하위레벨 기억 시스템으로의 변경된 데이타의 반환없이 직접 변경된 데이타를 제 1 캐쉬에 전달하게 함으로써, 제 1 및 제 2 의 프로세서들에 의한 동일한 데이타의 반복적인 쓰기의 결과를 개선시키는 효과가 있다.

Claims (24)

  1. 메모리 접근들이 제 1 및 제 2 프로세서들에 의하여 생성되는 멀티프로세서 환경에서의 사용을 위한 메모리 캐쉬 시스템에 있어서,
    공유된 하위 레벨 기억 시스템,
    상기 하위 레벨 기억 시스템 및 상기 제 1 프로세서와 연결되어 구성되고, 상기 하위 레벨 기억 시스템내에 저장될 데이타 또는 상기 하위 레벨 기억 시스템으로부터 로드될 데이타를 식별하는 상기 제 1 프로세서 메모리 접근 명령들을 받으며, 상기 메모리 접근 명령들에 응답하여 상기 하위 레벨 기억 시스템으로부터 데이타를 로드 및 상기 하위 레벨 기억시스템으로 데이타를 저장하는 제 1 캐쉬,
    상기 하위 레벨 기억 시스템 및 상기 제 2 프로세서와 연결되어 구성되고, 상기 하위 레벨 기억 시스템내에 저장될 데이타 또는 상기 하위 레벨 기억 시스템으로부터 로드될 데이타를 식별하는 상기 제 2 프로세서 메모리 접근 명령들을 받으며, 상기 메모리 접근 명령들에 응답하여 상기 하위 레벨 기억 시스템으로부터 데이타를 로드 및 상기 하위 레벨 기억시스템으로 데이타를 저장하는 제 2 캐쉬, 및
    상기 하위 레벨 기억 시스템으로부터 상기 캐쉬들로의 데이타의 로드 또는 상기 캐쉬들로부터 상기 하위 레벨 기억 시스템으로의 데이타의 저장을 관리하는 캐쉬 기억 제어 회로를 포함하며,
    상기 제 2 프로세서에 의해 변경되었고 상기 제 2 캐쉬에 변경된 형태로 저장된 데이타를 위한 요청을 상기 제 1 캐쉬로부터 받으면, 상기 기억 제어 회로는, 상기 데이타를 상기 공유된 하위 레벨 기억 시스템으로 반환함이 없이, 상기 제 2 캐쉬로 하여금 상기 데이타를 상기 제 1 캐쉬로 전송하게 함으로써,
    제 1 및 제 2 프로세서들에 의한 동일한 데이타의 반복적인 쓰기들의 효과를 개선시키는 메모리 캐쉬 시스템.
  2. 제 1 항에 있어서, 상기 공유된 하위 레벨 기억 시스템은 하위 레벨 캐쉬 및 주 기억장치를 포함하고, 상기 하위 레벨 캐쉬는 주 기억장치의 데이타의 복사물들을 유지하며, 또한 제 1 또는 제 2 캐쉬들이 데이타의 복사물들을 저장하고 있는지 그리고 상기 복사물들이 변경되었는지의 표시를 유지하는 메모리 캐쉬 시스템.
  3. 제 2 항에 있어서,
    상기 기억 제어 회로는, 상기 제 1 또는 제 2 캐쉬로부터 특정한 데이타를 위한 요청을 받으면, 상기 요청을 상기 하위 레벨 캐쉬로 전달하고,
    상기 하위 레벨 캐쉬는, 상기 제 1 또는 제 2 캐쉬들중 하나가 상기 특정한 데이타의 변경된 복사물을 저장하고 있는지를 결정함으로써, 상기 특정한 데이타를 위한 상기 제 1 또는 제 2 캐쉬로부터의 요청에 응답하며, 만약 그렇다면, 상기 하위 레벨 캐쉬는 상기 기억 제어 회로 포인터를 상기 특정한 데이타의 변경된 복사물을 갖고 있는 상기 제 1 또는 상기 제 2 캐쉬로 반환하며,
    상기 기억 제어 유닛은, 만약 상기 제 2 캐쉬로부터의 특정한 데이타를 위한요청에 응답하여 상기 제 1 캐쉬로 포인터를 받는다면, 상기 제 1 캐쉬로 하여금 상기 특정한 데이타를, 상기 데이타를 상기 하위 레벨 캐쉬 또는 상기 주 기억자치로의 쓰지 않고, 상기 제 2 캐쉬로 전송하게 하는 메모리 캐쉬 시스템.
  4. 제 3 항에 있어서, 상기 하위 레벨 캐쉬는 데이타를 최소-최근-사용으로부터 최대-최근-사용의 순으로 큐내에 유지시키고, 포인터를 특정한 데이타의 변경된 복사물을 갖는 캐쉬로 반환할때, 상기 큐는 상기 하위 레벨 캐쉬내에서 상기 특정한 데이타의 복사물을 최대-최근-사용으로서 식별하기 위해서 업데이트되는 메모리 캐쉬 시스템.
  5. 제 2 항에 있어서, 상기 제 1 및 제 2 캐쉬들은 상기 제 1 또는 제 2 캐쉬에 저장된 데이타가 공유된 것인지 또는 변경된 것인지의 표시를 유지하고, 공유된 데이타를 다시 쓰기 전에, 상기 제 1 및 제 2 캐쉬는 소유권을 위한 요청을 상기 하위 레벨 캐쉬로 이송하는 메모리 캐쉬 시스템.
  6. 제 5 항에 있어서, 상기 하위 레벨 캐쉬는 상기 하위 레벨 캐쉬에 저장된 데이타가 공유된, 배타적인 또는 변경된 것인지의 표시를 유지하고, 만약 상기 특정한 데이타가 공유되었다면, 상기 하위 레벨 캐쉬는, 상기 제 1 또는 제 2 캐쉬로부터의 상기 특정한 데이타의 소유권을 위한 요청들을 부여하기 전에, 상기 주 기억장치에 연결된 시스템 버스로부터 특정한 데이타의 소유권을 요청하는 메모리 캐쉬시스템.
  7. 제 6 항에 있어서, 상기 하위 레벨 캐쉬는, 상기 제 1 또는 제 2 캐쉬로부터의 변경을 위해 데이타를 읽는 요청에 응답하기 전에, 상기 주 기억장치에 연결된 시스템 버스로부터 특정한 데이타의 소유권을 요청하는 메모리 캐쉬 시스템.
  8. 제 6 항에 있어서, 상기 제 1 또는 제 2 캐쉬로부터의 특정한 데이타의 소유권을 위한 요청을 부여하는 부분으로서, 그리고 변경을 위해 특정한 데이타를 읽는 요청에 응답하여 제 1 또는 제 2 캐쉬로 데이타를 전달하는 부분으로서, 상기 하위 레벨 캐쉬는 상기 특정한 데이타의 변경되지 않은 복사물들을 갖고 있는 다른 모든 캐쉬들로 하여금 상기 특정한 데이타를 플러쉬하게 하는 메모리 캐쉬 시스템.
  9. 제 6 항에 있어서, 상기 하위 레벨 캐쉬는, 특정한 데이타의 소유권을 위한 요청이 상기 제 1 또는 제 2 캐쉬로 부여될 때 또는 변경을 위해 특정한 데이타를 읽는 요청에 응답하여 상기 특정한 데이타가 상기 제 1 또는 제 2 캐쉬로 이송될 때마다, 상기 특정한 데이타를 '변경' 으로 표시하는 메모리 캐쉬 시스템.
  10. 제 2 항에 있어서, 상기 하위 레벨 캐쉬는, 에이징 또는 다른 프로세서 컴플렉스로의 특정한 데이타의 소유권의 상실에 기인하여 상기 특정한 데이타를 제거하는 부분으로서, 상기 특정한 데이타의 변경되지 않은 복사물을 갖는 임의의 캐쉬로하여금 상기 특정한 데이타의 변경되지 않은 복사물을 플러쉬하게하는 메모리 캐쉬 시스템.
  11. 제 2 항에 있어서, 상기 하위 레벨 캐쉬는, 에이징 또는 다른 프로세서 컴플렉스로의 특정한 데이타의 소유권의 상실에 기인하여 상기 특정한 데이타를 제거하는 부분으로서, 상기 특정한 데이타의 변경된 복사물을 갖는 상기 제 1 및 제 2 캐쉬들중 임의의 것으로 하여금 상기 특정한 데이타의 변경된 복사물을 주 기억장치에 쓰고 상기 특정한 데이타를 플러쉬하게 하는 메모리 캐쉬 시스템.
  12. 제 2 항에 있어서, 상기 하위 레벨 캐쉬는, 다른 프로세서 컴플렉스로부터의 특정한 데이타를 읽는 요청에 응답하여, 상기 특정한 데이타의 변경된 복사물을 갖는 임의의 캐쉬로 하여금 상기 특정한 데이타의 변경된 복사물을 주 기억장치 및 상기 하위 레벨 캐쉬에 쓰게하는 메모리 캐쉬 시스템.
  13. 공유된 하위 레벨 기억 시스템 및 상기 제 1 및 제 2 프로세서들에 각각 연결되고, 상기 하위 레벨 기억 시스템내에 저장될 데이타 또는 상기 하위 레벨 기억 시스템으로부터 로드될 데이타를 식별하는 상기 관련 프로세서 메모리 접근 명령들을 받는, 제 1 및 제 2 캐쉬들을 포함하는 캐쉬 시스템을 관리하는 방법으로서,
    상기 메모리 접근 명령들에 응답하여, 상기 하위 레벨 기억 시스템으로부터 데이타를 로드 및 상기 하위 레벨 기억시스템으로 데이타를 저장하는 단계, 및
    만약 상기 제 2 프로세서에 의해 변경되고 상기 제 2 캐쉬에 변경된 형태로 저장된 데이타를 위한 요청을 상기 제 1 캐쉬로부터 받으면, 상기 데이타를 상기 공유된 하위 레벨 기억 시스템에 반환함이 없이, 상기 제 2 캐쉬로하여금 상기 데이타를 상기 제 1 캐쉬로 전송하게 하는 단계를 구비함으로써,
    제 1 및 제 2 프로세서들에 의한 동일한 데이타의 반복적인 쓰기들의 효과를 개선시키는 단계를 포함하는 캐쉬 시스템을 관리하는 방법.
  14. 제 13 항에 있어서, 상기 공유된 하위 레벨 기억 시스템은 하위 레벨 캐쉬 및 주 기억장치를 포함하며, 상기 하위 레벨 캐쉬에 주 기억장치의 데이타의 복사물들을 유지하고, 제 1 또는 제 2 캐쉬들이 데이타의 복사물들을 저장하고 있는지 그리고 상기 복사물들이 변경되었는지의 표시를 유지하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  15. 제 14 항에 있어서, 만약 상기 제 1 또는 제 2 캐쉬로부터 특정한 데이타를 위한 요청을 받는다면, 상기 제 1 또는 제 2 캐쉬들중 하나가 상기 특정한 데이타의 변경된 복사물을 저장하고 있는지를 결정함으로써, 상기 하위 레벨 캐쉬내에서의 요청에 응답하는 단계를 포함하는 캐쉬 시스템을 관리하는 방법.
  16. 제 15 항에 있어서, 상기 하위 레벨 캐쉬는 데이타를 최소-최근-사용으로부터 최대-최근-사용의 순으로 큐내에 유지시키고, 만약 상기 제 1 또는 제 2 캐쉬들이 상기 특정한 데이타의 변경된 복사물을 저장하고 있다고 결정하면, 상기 큐는 상기 하위 레벨 캐쉬내에서 상기 특정한 데이타의 복사물을 최대-최근-사용으로서 식별하기 위해서 업데이트되는 단계를 포함하는 캐쉬 시스템을 관리하는 방법.
  17. 제 14 항에 있어서, 상기 제 1 및 제 2 캐쉬들은 상기 제 1 또는 제 2 캐쉬에 저장된 데이타가 공유된 것인지 또는 변경된 것인지의 표시를 유지하고, 공유된 데이타를 다시 쓰기 전에, 소유권을 위한 요청을 상기 하위 레벨 캐쉬로 이송하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  18. 제 17 항에 있어서, 상기 하위 레벨 캐쉬는 상기 하위 레벨 캐쉬에 저장된 데이타가 공유된, 배타적인 또는 변경된 것인지의 표시를 유지하고, 만약 상기 특정한 데이타가 공유되었다면, 상기 제 1 또는 제 2 캐쉬로부터의 특정한 데이타의 소유권을 위한 요청들을 부여하기 전에, 상기 주 기억장치에 연결된 시스템 버스로부터 특정한 데이타의 소유권을 요청하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  19. 제 18 항에 있어서, 상기 제 1 또는 제 2 캐쉬로부터의 변경을 위해 데이타를 읽는 요청에 응답하기 전에, 상기 주 기억장치에 연결된 시스템 버스로부터 상기 특정한 데이타의 소유권을 요청하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  20. 제 18 항에 있어서, 상기 제 1 또는 제 2 캐쉬로부터의 특정한 데이타의 소유권을 위한 요청을 부여하는 부분으로서, 그리고 변경을 위해 특정한 데이타를 읽는 요청에 응답하여 제 1 또는 제 2 캐쉬로 데이타를 이송하는 부분으로서, 상기 특정한 데이타의 변경되지 않은 복사물들을 갖고 있는 다른 모든 캐쉬들로 하여금 상기 특정한 데이타를 플러쉬하게 하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  21. 제 18 항에 있어서, 상기 특정한 데이타의 소유권을 위한 요청이 상기 제 1 또는 제 2 캐쉬에 부여될 때 또는 변경을 위해 특정한 데이타를 읽는 요청에 응답하여 상기 특정한 데이타가 상기 제 1 또는 제 2 캐쉬로 이송될 때마다, 상기 특정한 데이타를 상기 하위 레벨 캐쉬내에서 '변경' 으로 표시하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  22. 제 14 항에 있어서, 에이징 또는 다른 프로세서 컴플렉스로의 특정한 데이타의 소유권의 상실에 기인하여 상기 하위 레벨 캐쉬로부터 상기 특정한 데이타를 제거하는 부분으로서, 상기 특정한 데이타의 변경되지 않은 복사물을 갖는 임의의 캐쉬로 하여금 상기 특정한 데이타의 변경되지 않은 복사물을 플러쉬하게하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  23. 제 14 항에 있어서, 에이징 또는 다른 프로세서 컴플렉스로의 특정한 데이타의 소유권의 상실에 기인하여 상기 하위 레벨 캐쉬로부터 상기 특정한 데이타를 제거하는 부분으로서, 상기 특정한 데이타의 변경된 복사물을 갖는 임의의 캐쉬로 하여금 상기 특정한 데이타의 변경된 복사물을 주 기억장치에 쓰고 상기 특정한 데이타를 플러쉬하게 하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
  24. 제 14 항에 있어서, 다른 프로세서 컴플렉스로부터의 특정한 데이타를 읽는 요청에 응답하여, 상기 특정한 데이타의 변경된 복사물을 갖는 임의의 캐쉬로 하여금 상기 특정한 데이타의 변경된 복사물을 주 기억장치 및 상기 하위 레벨 캐쉬에 쓰게하는 단계를 더 포함하는 캐쉬 시스템을 관리하는 방법.
KR1020000010110A 1999-03-01 2000-02-29 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법 KR100318789B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/259,950 1999-03-01
US09/259,950 1999-03-01
US09/259,950 US6314491B1 (en) 1999-03-01 1999-03-01 Peer-to-peer cache moves in a multiprocessor data processing system

Publications (2)

Publication Number Publication Date
KR20000076752A KR20000076752A (ko) 2000-12-26
KR100318789B1 true KR100318789B1 (ko) 2001-12-29

Family

ID=22987147

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000010110A KR100318789B1 (ko) 1999-03-01 2000-02-29 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법

Country Status (4)

Country Link
US (1) US6314491B1 (ko)
JP (1) JP3533355B2 (ko)
KR (1) KR100318789B1 (ko)
CN (1) CN1142503C (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162699B1 (en) 1999-04-02 2007-01-09 Massachusetts Institute Of Technology Mechanisms and artifacts to manage heterogeneous platform interfaces in a collaboration system
US6408348B1 (en) * 1999-08-20 2002-06-18 International Business Machines Corporation System, method, and program for managing I/O requests to a storage device
US6374332B1 (en) * 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests
US6629268B1 (en) * 2000-01-25 2003-09-30 International Business Machines Corporation Method and apparatus for servicing a processing system through a test port
US6681293B1 (en) * 2000-08-25 2004-01-20 Silicon Graphics, Inc. Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries
US6751705B1 (en) * 2000-08-25 2004-06-15 Silicon Graphics, Inc. Cache line converter
US6857049B1 (en) * 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
US6631449B1 (en) 2000-10-05 2003-10-07 Veritas Operating Corporation Dynamic distributed data system and method
US7725748B1 (en) 2000-12-29 2010-05-25 Intel Corporation Low power subsystem for portable computers
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US7219122B1 (en) 2001-04-23 2007-05-15 Massachusetts Institute Of Technology Software service handoff mechanism with a performance reliability improvement mechanism (PRIM) for a collaborative client-server system
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
WO2003048955A1 (fr) * 2001-12-03 2003-06-12 Hitachi, Ltd. Systeme multiprocesseur
US7058829B2 (en) * 2002-08-14 2006-06-06 Intel Corporation Method and apparatus for a computing system having an active sleep mode CPU that uses the cache of a normal active mode CPU
US6965962B2 (en) * 2002-12-17 2005-11-15 Intel Corporation Method and system to overlap pointer load cache misses
US8275864B1 (en) 2002-12-20 2012-09-25 Symantec Operating Corporation Peer-to-peer network with recovery capability
US8370523B1 (en) 2002-12-20 2013-02-05 Symantec Operating Corporation Managing routing information for a computer network
US7406535B2 (en) * 2002-12-20 2008-07-29 Symantec Operating Corporation Role-based message addressing for a computer network
US7292585B1 (en) 2002-12-20 2007-11-06 Symantec Operating Corporation System and method for storing and utilizing routing information in a computer network
US7327741B1 (en) 2002-12-20 2008-02-05 Symantec Operating Corporation Detecting and breaking cycles in a computer network
US7467194B1 (en) 2002-12-20 2008-12-16 Symantec Operating Corporation Re-mapping a location-independent address in a computer network
US7404006B1 (en) 2002-12-20 2008-07-22 Symantec Operating Corporation Publishing a network address in a computer network
US7653059B1 (en) 2002-12-20 2010-01-26 Symantec Operating Corporation Communication sessions for a computer network
US8886705B1 (en) 2003-06-30 2014-11-11 Symantec Operating Corporation Goal-oriented storage management for a distributed data storage network
JP2005115603A (ja) * 2003-10-07 2005-04-28 Hitachi Ltd 記憶デバイス制御装置及びその制御方法
US7555527B1 (en) 2003-11-07 2009-06-30 Symantec Operating Corporation Efficiently linking storage object replicas in a computer network
US8060619B1 (en) 2003-11-07 2011-11-15 Symantec Operating Corporation Direct connections to a plurality of storage object replicas in a computer network
US7680950B1 (en) 2003-11-07 2010-03-16 Symantec Operating Corporation Efficient search for storage objects in a network
US7570600B1 (en) 2003-12-17 2009-08-04 Symantec Operating Corporation Overlay network with efficient routing and recovery
US9727468B2 (en) 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7689778B2 (en) * 2004-11-30 2010-03-30 Intel Corporation Preventing system snoop and cross-snoop conflicts
US7386687B2 (en) * 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
US7496712B1 (en) 2005-06-17 2009-02-24 Sun Microsystems, Inc. Proximity communication-based off-chip cache memory architectures
US7562190B1 (en) * 2005-06-17 2009-07-14 Sun Microsystems, Inc. Cache protocol enhancements in a proximity communication-based off-chip cache memory architecture
US7444473B1 (en) 2005-06-17 2008-10-28 Sun Microsystems, Inc. Speculative memory accesses in a proximity communication-based off-chip cache memory architecture
US7941604B2 (en) * 2006-02-01 2011-05-10 Infineon Technologies Ag Distributed memory usage for a system having multiple integrated circuits each including processors
JP2007265271A (ja) 2006-03-29 2007-10-11 Nec Corp ストレージ装置、データ配置方法およびプログラム
US10741034B2 (en) 2006-05-19 2020-08-11 Apdn (B.V.I.) Inc. Security system and method of marking an inventory item and/or person in the vicinity
US20070274230A1 (en) * 2006-05-23 2007-11-29 Werber Ryan A System and method for modifying router firmware
JP2008118184A (ja) * 2006-10-31 2008-05-22 Fujitsu Ltd 処理装置及び処理モジュール
US20080104333A1 (en) * 2006-10-31 2008-05-01 Veazey Judson E Tracking of higher-level cache contents in a lower-level cache
ITMI20070787A1 (it) 2007-04-17 2008-10-18 St Microelectronics Srl Memoria non volatile
CN101546282B (zh) * 2008-03-28 2011-05-18 国际商业机器公司 用于在处理器中执行写拷贝的方法和设备
US20100057984A1 (en) * 2008-08-26 2010-03-04 Seagate Technology Llc Memory hierarchy containing only non-volatile cache
TW201015321A (en) * 2008-09-25 2010-04-16 Panasonic Corp Buffer memory device, memory system and data trnsfer method
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) * 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US8380931B2 (en) * 2010-03-12 2013-02-19 Microsoft Corporation Memory cache data center
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
JP5643903B2 (ja) * 2011-12-23 2014-12-17 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
CA2940655C (en) 2014-03-18 2020-07-07 Apdn (B.V.I.) Inc. Encrypted optical markers for security applications
JP6055456B2 (ja) * 2014-10-31 2016-12-27 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
KR101629411B1 (ko) * 2015-02-03 2016-06-10 한국전자통신연구원 레벨0 캐시 제어 장치 및 방법
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
CN110710139A (zh) 2017-03-29 2020-01-17 芬基波尔有限责任公司 具有光置换器的无阻塞全网状数据中心网络
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
US10637685B2 (en) 2017-03-29 2020-04-28 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
WO2018191257A1 (en) 2017-04-10 2018-10-18 Fungible, Inc. Relay consistent memory management in a multiple processor system
US10725825B2 (en) 2017-07-10 2020-07-28 Fungible, Inc. Data processing unit for stream processing
US11303472B2 (en) 2017-07-10 2022-04-12 Fungible, Inc. Data processing unit for compute nodes and storage nodes
CN111164938A (zh) 2017-09-29 2020-05-15 芬基波尔有限责任公司 使用选择性多路径分组流喷射的弹性网络通信
WO2019068013A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. FABRIC CONTROL PROTOCOL FOR DATA CENTER NETWORKS WITH PACKAGING OF PACKETS ON MULTIPLE ALTERNATIVE DATA PATHWAYS
US10769068B2 (en) * 2017-11-10 2020-09-08 International Business Machines Corporation Concurrent modification of shared cache line by multiple processors
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0389151A3 (en) 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
US5307477A (en) 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5649154A (en) 1992-02-27 1997-07-15 Hewlett-Packard Company Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits
US5394555A (en) 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
US5590310A (en) 1993-01-14 1996-12-31 Integrated Device Technology, Inc. Method and structure for data integrity in a multiple level cache system
EP0608622A1 (en) 1993-01-29 1994-08-03 International Business Machines Corporation Multiprocessor system with multilevel caches
US5522069A (en) * 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
US5535116A (en) 1993-05-18 1996-07-09 Stanford University Flat cache-only multi-processor architectures
US5604882A (en) 1993-08-27 1997-02-18 International Business Machines Corporation System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system
US5510934A (en) 1993-12-15 1996-04-23 Silicon Graphics, Inc. Memory system including local and global caches for storing floating point and integer data
US5671391A (en) 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
US5680572A (en) 1994-02-28 1997-10-21 Intel Corporation Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US5644752A (en) 1994-06-29 1997-07-01 Exponential Technology, Inc. Combined store queue for a master-slave cache system
US5666514A (en) 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5617557A (en) 1994-11-14 1997-04-01 Compaq Computer Corporation Using an address pin as a snoop invalidate signal during snoop cycles
US5584013A (en) 1994-12-09 1996-12-10 International Business Machines Corporation Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
US5651137A (en) 1995-04-12 1997-07-22 Intel Corporation Scalable cache attributes for an input/output bus
US5713004A (en) * 1995-05-18 1998-01-27 Data General Corporation Cache control for use in a multiprocessor to prevent data from ping-ponging between caches
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5815648A (en) * 1995-11-14 1998-09-29 Eccs, Inc. Apparatus and method for changing the cache mode dynamically in a storage array system
JP3269967B2 (ja) * 1996-04-24 2002-04-02 株式会社日立製作所 キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6128677A (en) * 1997-10-15 2000-10-03 Intel Corporation System and method for improved transfer of data between multiple processors and I/O bridges

Also Published As

Publication number Publication date
JP3533355B2 (ja) 2004-05-31
US6314491B1 (en) 2001-11-06
CN1267023A (zh) 2000-09-20
KR20000076752A (ko) 2000-12-26
JP2000250812A (ja) 2000-09-14
CN1142503C (zh) 2004-03-17

Similar Documents

Publication Publication Date Title
KR100318789B1 (ko) 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
US7827354B2 (en) Victim cache using direct intervention
US7305523B2 (en) Cache memory direct intervention
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US6304945B1 (en) Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
US6460114B1 (en) Storing a flushed cache line in a memory buffer of a controller
US7076613B2 (en) Cache line pre-load and pre-own based on cache coherence speculation
US7698508B2 (en) System and method for reducing unnecessary cache operations
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
JP3888769B2 (ja) データ供給方法及びコンピュータ・システム
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
KR100274771B1 (ko) Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법
US7281092B2 (en) System and method of managing cache hierarchies with adaptive mechanisms
KR100273039B1 (ko) 멀티프로세서 데이터 처리 시스템의 캐쉬 일관성을 유지하기위한 캐쉬 일관성 프로토콜 제공 방법 및시스템
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
KR19980079663A (ko) Smp 버스의 최근 판독 상태에서의 캐시 라인들의 공유 개입 방법
US20020169935A1 (en) System of and method for memory arbitration using multiple queues
US6560681B1 (en) Split sparse directory for a distributed shared memory multiprocessor system
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
US6336169B1 (en) Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US6385702B1 (en) High performance multiprocessor system with exclusive-deallocate cache state
US6658536B1 (en) Cache-coherency protocol with recently read state for extending cache horizontally
US6374333B1 (en) Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US6484241B2 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20061122

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee