KR20070040340A - 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템 - Google Patents

소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템 Download PDF

Info

Publication number
KR20070040340A
KR20070040340A KR1020067027236A KR20067027236A KR20070040340A KR 20070040340 A KR20070040340 A KR 20070040340A KR 1020067027236 A KR1020067027236 A KR 1020067027236A KR 20067027236 A KR20067027236 A KR 20067027236A KR 20070040340 A KR20070040340 A KR 20070040340A
Authority
KR
South Korea
Prior art keywords
writeback
cache
maintenance
atomic
selection
Prior art date
Application number
KR1020067027236A
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 KR20070040340A publication Critical patent/KR20070040340A/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
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 원자적 설비 라이트백 상태 기계를 관리하는 것을 제공한다. 제1 라이트백 선택이 수행된다. 원자적 설비 데이터 배열 내의 보전 라인을 지시하는 보전 포인터가 수립된다. 다음 차례의 라이트백 선택이 수행된다. 다음 차례의 라이트백을 위한 보전 포인트에 대한 엔트리가 제거되고, 이에 의해 유효한 보전 라인은 라이트백으로 선택되는 것이 방지된다. 이러한 구성은 변경된 명령이 무효화되는 것을 방지한다.

Description

소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는 것을 배제하는 방법 및 시스템{Disable write back on atomic reserved line in a small cache system}
본 발명은 컴퓨터 시스템에 관한 것으로, 보다 상세하게는 마이크로프로세서의 소형 캐시 시스템에 관한 것이다.
고성능 프로세싱 시스템은 처리해야할 데이터를 빠르게 얻기 위해 고속의 메모리 억세스(access)와 저속의 메모리 지연(memory latency)을 요구한다. 시스템 메모리는 데이터를 프로세서에 제공하는 것이 느려질 수 있기 때문에, 캐시가 테이터에 보다 빠르게 접근하면서 프로세서에 인접한 데이터를 유지하는 방법을 제공하도록 고안된다. 대용량 캐시는 전체적인 시스템 성능 개선을 제공할 수 있으나 소형 캐시에 비해 더 많은 지연과 설계의 복잡성을 유발할 수 있다. 일반적으로, 소형 캐시는 하나의 프로세서가 시스템 어플리케이션 레벨에서, 특히 네트워크나 그래픽 환경에서 다른 프로세서와 동기화하거나 통신할 수 있는 빠른 방법을 제공하도록 설계된다.
프로세서는 각각 로드 및 저장 명령을 통해 메모리에 데이터를 전송하고 메모리로부터 데이터를 취득한다. 시스템 메모리로부터의 데이터가 캐시를 채운다. 프로세서에 의해 억세스되는 대부분 또는 모든 데이터가 캐시 내에 있는 경우가 바람직한 조건이 된다. 이러한 조건은 어플리케이션 데이터의 크기가 캐시 크기와 같거나 그보다 작은 경우에 가능하게 된다. 일반적으로, 캐시 크기는 설계사항이나 기술 등에 의해 제한되며, 어플리케이션 데이터 전체를 담을 수는 없는 것이 일반적이다. 이러한 점은 캐시 내에 있는 것이 아닌 새로운 데이터에 프로세서가 접근하는 경우, 및 새로운 데이터를 두는데 사용될 수 있는 캐시 공간이 없는 경우에는 문제가 될 수 있다. 이에, 새로운 데이터가 메모리로부터 도달하는 경우 캐시 내부에 적당한 공간을 검색하기 위해 캐시 제어기가 필요하게 된다.
캐시 제어기는 이러한 상황을 처리하기 위해 최저 사용 빈도 방식(Least Recently Used, 이하 LRU로 표시함) 알고리즘을 사용한다. LRU 알고리즘은 데이터 억세스 히스토리 정보에 기초하여 새로운 데이터에 사용될 위치를 결정한다. LRU가 시스템 메모리에 들어맞는 라인을 선택하는 경우, 예를 들면 공유 상태(shared state)인 경우에는, 새로운 데이터는 그 위치에 덮어 써진다. LRU가 수정된 것으로 마크된 라인을 선택하는 경우, 즉 데이터가 시스템 메모리와 들어맞지 않고 고유한(unique)것 인 경우에는, 캐시 제어기가 이 위치의 수정 테이터가 시스템 메모리에 다시 되돌아가 기록되도록 강제한다. 이러한 동작을 라이트백(write back) 또는 캐스트아웃(castout)이라고 칭하며, 라이트백 데이터를 가지는 캐시 위치를 희생 캐시 라인(Victim Cache Line)이라고 한다.
버스 에이전트, 즉 캐시에 대한 버스 명령을 처리하는 버스 인터페이스 유닛은 버스 동작을 경유하여 시스템 메모리로 데이터를 전송함으로써 가능한 빨리 라이트백 동작을 완료하려고 한다. 데이터는 주메모리로 가고 있기 때문에 라이트백(WB) 또는 라이트백은 장기 지연 버스 동작이 된다.
캐시 제어 방식에는 2개의 서로 다른 종류가 있다. 일관성(coherent) 방식과 비일관성(non-coherent) 방식이다. 비일관성 방식에서는, 각 캐시는 데이터의 고유한 사본을 가지며, 동일한 데이터를 갖는 다른 캐시가 존재할 수 없다. 그러나, 이러한 방식은 멀티프로세서 시스템을 통해 데이터가 분산되어야 하는 경우에는 시간이 많이 소요된다는 점에서 비효율적이다. 따라서, 일관성 캐시 방식이 사용될 수 있는데, 이러한 방식은 가장 최근 데이터가 사용되고, 분산된다는 것이나, 유효한 것이라고 마킹된다는 점을 보장한다.
일관성을 실행시키는 종래 기술 중 하나는 변경(Modified), 배타(Exclusive), 공유(Shared), 및 무효(Invalid) 시스템(이하 'MESI'라 함)이다. MESI 시스템에서, 멀티프로세서 시스템의 캐시 내에 있는 데이터는 데이터 일관성을 확보하기 위해 상술한 상태 중 어느 하나인 것으로 마킹된다. 이러한 마킹은 메모리 플로우 제어기(memory flow controller)와 같은 하드웨어에 의해 수행된다.
스누핑(snooping)은 캐시 일관성을 유지하기 위해 보조 캐시(slave cache)가 캐시 디렉토리에 있는 주소들과 전송된 주소들을 비교하는 처리를 의미한다. 비교 결과 소정의 매칭이 발견되는 경우 추가적인 동작들이 수행된다. 버스 스누핑 또는 버스 감시(watching)는 동등한 의미를 갖는 용어이다.
스누프(snoop) 명령의 한 부분으로 사용되는 무효화 명령은 나머지 다른 캐시들에게 이들 캐시의 데이터가 더이상 유효하지 않고 그 라인을 무효한 것으로 마킹해야한다는 것을 통지하기 위해 발행된다. 즉, 무효 상태는 캐시 내의 라인이 캐시 내에서 무효하다는 것, 또는 그 라인이 더 이상 사용가능하지 않다는 것을 의미한다. 따라서, 캐시 내의 이러한 라인의 데이터는 다른 데이터 전송에 의해 자유롭게 덮어 써진다.
멀티 프로세서 시스템에서, 테스트&세트(set), 비교&교환(swap), 또는 인출(fetch)&증가(increment)(또는 감소(decrement))와 같은 일부 동작들은 불가분적으로 처리될 필요가 있다 (다시 말해, 이러한 동작들 사이에서는 동일한 주소에 다른 저장이 발생할 수 없다). 이러한 동작들을 소위 원자 동작들(atomic operations)이라 칭한다. 일반적으로, 이러한 동작들은 잠금 획득(lock acquisition)이나 세마포어(semaphore) 동작을 위해 사용된다. 그러나, 일부는 더 많은 기능적 동작을 세우기 위해 로드 잠금(Load-Locked, LL) 및 조건부 저장(Store-Conditional, SC)와 같은 소형 빌딩 블럭만을 제공하는데 사용된다. 일부 프로세서는 이러한 2개의 동작들을 원자적으로(atomically) 함께 묶기 위해(즉, LL은 잠금 변수를 위한 보전(Reservation)을 설정하고 SC는 이러한 보전이 남는 경우 성공적으로 저장할 수 있다. 동일한 주소로의 저장 동작은 보전 플래그를 리셋할 수 있다.) 보전 플랙(Reservation flag)을 도입한다.
일반적으로, 원자적-기능은 스눕 캐시와 같은 일관성 지점(coherency point)에서 다른 프로세서의 저장 동작을 스눕하고 잠금 라인을 캐싱함으로써 성능을 개선하기 위해 실행된다. 원자적 라인(atomic line) 데이터 요청을 수행할 때에는, 여러 개의 서로 다른 명령들이 존재한다. 첫번째로는 로드 및 보전 명령이 있다. 로드 및 보전은 소스 프로세서에 의해 발행되며 캐시가 요청된 데이터를 갖는지 여부를 결정하기 위해 관련되는 캐시를 감시한다. 목적 캐시가 데이터를 구비하면, "보전" 플래그가 그 캐시에 설정된다. 보전 플래그는 프로세서가 잠금 획득을 위해 그 라인을 보전하고 있다는 것을 의미한다. 달리 말하면, 주 메모리의 일 데이터 블럭의 잠금 획득(독점적인 소유권을 획득하는 것)은 우선 로드 및 보전을 사용한 보전을 하고, 이후 소유권을 지시하도록 조건부 저장 지시를 경유하여 보전된 라인을 변경함으로써 수행된다. 조건부 저장은 보전 플래그가 여전히 활성화되어 있는지 여부 조건에 따른다. 보전은 조건부 저장 지시를 수행하거나 동일한 라인에 다른 보전 킬(kill) 유형의 스눕 명령을 수행함으로써 동일한 잠금 획득을 요구하고 있는 다른 프로세서에 의해 상실될 수 있다. 이후 프로세서는 캐시로부터 프로세서로 보전된 정보를 복사하여 로드 및 보전 처리를 행한다. 잠금을 완료하기 위해 조건부 저장이 수행될 수 있도록 기본적으로 프로세서는 잠금되지 않은 데이터 패턴에 대한 보전 라인에 있는 지시를 찾는다.
그러나, 캐시가 정보를 갖고 있지 않은 경우에는, 정보를 획득하는 시도를 하기 위해 버스 명령이 발생된다. 어떠한 캐시도 정보를 갖고 있지 않은 경우에는, 데이터는 주 메모리로부터 획득된다. 데이터가 수신되면 보전 플래그가 설정된다.
보통의 프로그래밍에서는 동일한 잠금을 다시 사용할 가능성이 높고 타이트한 루프를 원자적으로 조작하는 특성을 가지고 있으므로, 제1 잠금 획득 루프로부터의 보전 라인은 다음의 잠금 획득을 위해 필요하게 된다. 이리하여, 로드 및 보전 지시로부터 보전된 이러한 데이터는 주메모리에 라이트백으로 다시 기록되어서는 안되는데, 이는 동일한 데이터의 소유권은 다음의 잠금 획득 루프를 위해 필요하기 때문이다. 주 메모리로부터 동일한 데이터를 릴로드하고 라이트백하는 보전 라인은 제거되므로, 이러한 점은 성능을 개선한다.
따라서, 종래 원자적 보전과 관련된 문제들을 적어도 일부를 해결하는 원자적 설비의 요청이 있는 것이다.
본 발명의 보다 나은 이해를 위해 이하에서 서술될 설명들은 다음과 같은 도면들을 참조하여 이루어진다.
도 1은 멀티 프로세싱 시스템을 개략적으로 도시한 도면이고,
도 2는 원자적 설비 캐시를 개략적으로 도시한 도면이고,
도 3은 잠금 획득 명령 예를 개략적으로 도시한 도면이고,
도 4는 라이트백 동작의 플로우챠트를 도시하며,
도 5는 원자적 설비 캐시의 일 실시예의 블럭 다이어그램을 도시한다.
본 발명은 원자적 설비 캐시 라이트백 제어기를 관리하는 구성을 제공한다. 원자적 설비 캐시 데이터 배열 내의 보전 라인을 가리키는 보전 포인터가 수립된다. 라이트백 선택에 대한 보전 지점의 엔트리를 제거하여 유효한 보전 라인이 라이트백으로 선택되는 것을 방지한다. 일 실시예에서는, 라이트백 선택은 최저 사용 빈도 방식(LRU) 알고리즘을 채용함으로써 수행된다. 다른 일 실시예에서는, 라이트백 선택은 보전 포인터에 따라 수행된다.
이하에서는 본 발명의 완전한 이해를 위해 상세하고 구체적인 설명이 제공된다. 그러나, 본 발명 기술분야의 당업자 수준에서 구체적인 설명이 필요없는 구성에 대한 구체적인 설명은 생략한다. 또한 본 발명을 불명확하게 하지 않도록 공지의 기술 내용도 구체적으로 도시되고 있다. 추가적으로, 네트워크 통신, 전자기 신호 기술, 등에 있어서의 구체적인 설명 내용들 중 본 발명의 완전한 이해를 위해 불필요하다고 판단되는 부분은 생략한다.
이하의 설명에서, 프로세싱 유닛(PU)은 하나의 장치에서의 단일한 하나의 연산 프로세서가 된다. 이러한 경우, PU는 일반적으로 주처리 유닛(main processing unit)이 된다. 또한 프로세싱 유닛은 소정의 연산 장치를 위해 개발되는 방법론 또는 알고리즘의 일부에 따라 연산 부하를 나누는 다수의 프로세싱 유닛 중 하나가 될 수도 있다. 이하에서, MPU가 장치 내의 단일한 연산 요소인지 다른 MPU와 연산 요소를 나누고 있는지 여부에 관계없이, 다른 내용의 지시가 없는 한, 프로세서에 대해서는 모든 경우 MPU라는 용어를 사용할 것이다.
또한, 다른 내용의 지시가 없는 한, 이하에서 기술되는 모든 기능들은 하드웨어 또는 소프트웨어, 또는 이들의 결합에 의해 수행될 수 있다. 그러나, 바람직한 실시예에서는 이러한 기능들은 컴퓨터나 전자 데이터 프로세서와 같은 프로세서에 의해 컴퓨터 프로그램 코드, 소프트웨어, 및/또는 이러한 기능들을 수행하도록 코딩된 집적회로와 같은 코드에 따라 수행된다.
도 1에는, 명령 유닛, 명령 캐시, 데이터 캐시, 고정 소수점(fixed point) 유닛, 부동 소수점(floating point), 로컬 스토리지 등을 포함하는 일반 중앙 프로세서 유닛(MPU1, 110), (MPU2, 111)을 구비하는 멀티 프로세서 시스템(100)이 개시되고 있다. 각 프로세서는 원자적 설비(Atomic Facility, AF)라고 불리는 낮은 레벨 캐시(lower level cache)에 연결된다. 원자적 설비(AF1 캐시, 120), (AF2 캐시, 121)은 버스 인터페이스 유닛(Bus IF, 130), (Bus IF, 131)에 연결되고 순서대로 시스템 버스(140)에 연결된다. 다른 프로세서들의 캐시는 프로세서간(inter-processor) 통신을 구비하는 버스 인터페이스 유닛을 경유하여 시스템 버스에 연결된다. 프로세서들에 추가하여, 메모리 제어기(Mem Ctrl, 150)가 멀티 프로세서에 의해 공유된는 공유 스토리지를 위한 메모리 제어기에 연결된다.
일반적으로, 시스템(100)은 잠금 획득 소프트웨어 루프의 로드 및 보전 명령으로부터 보전 라인에 라이트백 동작을 억제하는 메커니즘을 제공한다. 로드 및 보전 명령으로부터의 보전 라인은 이러한 잠금 획득 루프 내의 다음의 조건부 저장 조건 명령에 사용된다. 이리하여, 캐시 내의 보전 라인을 메모리에 라이트백하고 다시 가져오는 대신 유지함으로써 성능이 개선된다. 다양한 포인터들을 사용함으로써, 라이트백을 위한 희생 라인은 이러한 포인터들을 스킵함으로써 선택되지 않는다.
도 2는 원자적 설비(142, 이하에서는 "원자적 설비" 또는 "AF 142로 표시된다)를 보다 상세하게 도시한다. 원자적 설비는 데이터 배열을 위한 데이터 배열 회로(146) 및 그 제어 로직을 포함한다. 제어 로직은 디렉토리(147), 프로세서 코어로부터의 명령을 처리하는 RC(읽기 및 청구, Read and Claim) 유한 상태 기계(143), 라이트백을 처리하는 WB(라이트백) 상태 기계(144), 및 스눕 상태 기계(145)를 포함한다. 디렉토리(147)는 캐시 태그 및 캐시 태그의 상태를 홀딩한다.
RC 기계(143)는 로드 및 보전이라고 하는 원자적 명령과 프로세스 간(inter process) 동기화를 위한 조건부 저장 명령을 수행한다. 이들 일련의 명령들의 목적 중 하나는 멀티 프로세서 시스템에서 질서있게 프로세서에 공유 데이터의 소유권을 부여함으로써 프로세서 간의 동작을 동기화하려는데 있다.
일반적으로, 이들 일련의 명령들의 목적 중 하나는 멀티 프로세서 시스템에서 동시에 프로세서에 데이터의 소유권을 부여함으로써 프로세서 간의 동작을 동기화하는 데 있다. WB 기계(144)는 캐시 미스가 MPU에 의해 발행되는 로드 또는 저장 동작에 대해 발생하고 원자적 설비(AF) 캐시가 가득차 있고 희생 엔트리가 변경 상태인 경우에 RC 기계에 대한 라이트백을 처리한다. 스눕 기계(145)는 시스템 전체를 통해 메모리 일관성을 유지하기 위해 시스템 버스로부터 오는 스눕 동작을 처리한다.
도 3은 멀티 프로세서 시스템에서 2개의 프로세서 사이의 잠금 획득 시나리오의 일예를 도시하는 도면이다. 잠금 획득 동작은 2개의 주된 원자적 명령들, 즉 로드 및 보전 원자적 명령, 조건부 저장 원자적 명령을 수반한다.
MPU1에서의 잠금 획득 시나리오는 "A" 명령에서의 로드 및 보전에서 릴리스되는 잠금 데이터 패턴이 로드될 때까지, 쉽게 말해 "0"이 될 때까지, 제1 루프를 수행한다. 이 명령 동안, 보전 플래그는 RC 기계 내의 보전 주소와 함께 설정된다. 다른 프로세서에 의해 잠금이 릴리스되면, 잠금은 "A"에서 조건부 저장으로 칭하는 다음 명령으로 계속 진행된다. 이것은 주소 "A"에서 원자적 라인으로 잠금의 프로세서 아이디(ID)를 저장함으로써 잠금을 최종화(finalize)하는 단계이다. 그러나, 이러한 저장은 보전 플래그가 여전히 활성화되어 있는지 여부에 따른 조건부 저장이다. 다른 프로세서는 이러한 조건부 저장 명령 바로 전에 동일한 잠금을 획득하도록 저장 명령을 발행했을 수도 있다.
캐시 일관성 프로토콜은 원자적 설비 캐시와 관련되므로, 이러한 저장은 캐시-라인-킬(cache-line-kill) 또는 현재의 보전을 강제 중단하는 동일한 잠금 라인 주소에서의 읽기-배타 스눕 명령(read-exclusive snoop command)을 수신함에 따라 스눕될 수 있다.
잠금이 성공적인 조건부 저장에 의해 달성되면, 보전 플래그는 리셋된다. 잠금 획득이 실패하면, 로드 및 보전부터 다시 시작한다. 따라서, 프로세서는 자신의 작업을 수행하기 위해 공유 스토리지 영역의 완전한 소유권을 가진다. 이러한 동작 시간 동안, 다른 프로세서들의 공유 영역으로의 어떠한 접속들도 차단된다. 작업이 완료되면, 주소 "A"에 '0'을 저장함으로써 잠금을 릴리스한다. 이 때, 제2 프로세서가 제로 데이터 패턴을 보면서 로드 및 보전 명령을 위한 가장 최근의 "A" 데이터를 획득하는 경우, 제2 프로세서, MPU2는 잠금을 획득한다. 제2 프로세서는 상술한 제1 프로세서와 같이 조건부 저장 명령과 함께 잠금을 최종화하는 것을 계속한다.
많은 경우 잠금 획득은 루프 구조로 수행되기 때문에 , 소프트웨어는 동일한 잠금 라인은 다시 재사용하는 경향이 있다. 따라서, 종전의 보전 라인을 보전하는 것은 언제나 바람직한 아이디어가 된다. 이는 동기화 수행은 멀티 프로세서 통신에 있어서 매우 중요한 것이고, 잠금 라인이 로컬 캐시로부터 무효화되는 경우에는 언제나 원자적 명령의 심각한 성능 저하가 발생하기 때문이다.
도 4는 라이트백 동작 방법의 일 실시예를 도시한다. 도 4에 도시된 방법은 라이트백에 대해 판단, 즉 라이트백이 필요한지 여부에 대한 판단을 내리는 프로세서에 대한 것이다. 이 실시예는 원자적 설비(AF 142)가 하나의 라이드백(WB) 기계만을 구비하는 경우이다.
라이트백 요청은 로드 또는 저장 명령들과 디렉토리 검색(lookup)이 발생하면 '읽기 및 청구'에 의해 배정된다. 단계 402에서, 디렉토리(DIR) 검색에서 실행된 RC 미스가 있는지 여부와 AF에 공간이 없는지 여부를 판단한다. 없는 경우, 단계 407에서, 라이트백이 필요하지 않은 것으로 결정한 후 종료된다.
단계 403에서, RC는 DIR 검색(301) 바로 후에 WB 기계를 배정하고 데이터 배열(Data Array)에 빈 공간이 없는 미스(302 및 303)를 발견한다. 데이터 배열에 빈 공간이 있는 경우, 라이트백은 필요없다. 빈공간이 없는 경우 단계 404가 수행된다.
단계 404에서, 희생 엔트리가 최저 사용 빈도 알고리즘에 의해 선택된다. 지정된 최저 사용 빈도 희생 엔트리(404)가 변경되면, WB는 AF에 공간을 만들기 위해 메모리로 돌아가 변경 라인(405)을 기록해야 한다.
단계 405에서, 희생 엔트리가 변경되는지가 결정된다. 변경되지 않으면, 단계 407이 수행되고 라이드백은 필요하지 않은 것으로 간주된다. WB 기계는 최저 사용 빈도 알고리즘을 사용하여 희생 엔트리를 선택하고, 변경하고 보전 엔트리를 스킵한다. 라이트백 동작을 완료하는 단계(406)가 희생 엔트리를 메모리에 저장하는 것과 함께 진행된다.
도 5는 원자적 설비(120)을 관리하는 시스템(500)을 도시하는데, 보전이 종료되는 원자적 설비 데이터 캐시에 있는 캐시 라인을 가리키는 포인터가 있다. 희생 포인터는 원자적 명령으로부터의 미스가 있는 경우 변경된 엔트리를 라이트백하는데 사용된다. 희생 포인터는, 미스된 데이터가 릴로드되고 있을 때 어떤 정보가 원자적 캐시 밖으로 라이트백되어야 하는지를 표시한다. LRU 알고리즘은 희생 포인터로 보전 보이터를 선택하지 않기 때문에, 로드 및 보전 데이터는 다음의 조건부 저장 명령에 사용된 이후로는 메모리에 다시는 라이트백되지 않는다. 따라서, 이러한 능력은 원자적 설비 캐시에서의 원자적 동작의 모든 성능을 개선할 수 있다.
본 발명은 많은 다른 형태와 실시예를 가질 수 있는 것으로 이해된다. 따라서, 본 발명의 핵심 및 범위를 벗어나지 않는다면 앞서 설명된 실시예에 여러가지 변형들을 가할 수 있다. 여기에 기재된 내용들은 다양한 프로그래밍 모델의 가능성을 허용한다. 이상의 설명들은 특정한 프로그래밍 모델을 선호하는 것으로 이해되서는 안되며 이러한 프로그래밍 모델들이 수립될 수 있는 기초적인 메커니즘과 관련된 것이다.
이상에서는 본 발명을 특정한 실시예를 가지고 기술하였는데, 개시된 실시예들은 그 성질이 발명의 내용을 제한하는 것은 아니며 발명의 내용을 설명하는 것이며, 넓은 범위의 변경, 수정, 변화, 및 교체들이 상술한 개시 내용에 가해질 수 있을 것으로 보이며, 몇몇 경우에서는, 본 발명의 일부 특징들이 다른 특징들의 대응되는 사용 없이도 채택될 수 있다. 당업자들은 이상에 기술된 바람직한 실시예들로부터 이러한 여러가지 변화와 변경들을 수행할 수 있을 것으로 보인다. 따라서, 첨부되는 특허청구범위는 본 발명의 범위와 일치되는 방향에서 넓게 해석하는 것이 타당하다.

Claims (6)

  1. 원자적 설비 데이터 배열 내의 보전 라인(reservation line)을 지시하는 보전 포인터를 수립하는 단계;
    라이트백 선택을 하는 단계; 및
    상기 라이트백 선택에 대한 보전 지점(point)의 엔트리를 제거하여 상기 보전 라인이 상기 라이트백으로 선택되는 것을 방지하는 단계;를 포함하는 것을 특징으로 하는 원자적 설비 캐시(atomic facility cache) 라이트백(write back) 제어기를 관리하는 방법.
  2. 제1항에 있어서, 상기 라이트백 선택을 하는 단계는 희생 엔트리 선택 기능을 채용하는 단계를 더 포함하는 것을 특징으로 하는 원자적 설비 캐시 라이트백 제어기를 관리하는 방법.
  3. 제2항에 있어서, 상기 희생 엔트리 선택 기능은 최저 사용 빈도 알고리즘을 포함하는 것을 특징으로 하는 원자적 설비 캐시 라이트백 제어기를 관리하는 방법.
  4. 캐시에 라이트백을 수행하는 시스템으로,
    원자적 설비 캐시 데이터 배열을 갖는 원자적 설비 캐시;
    상기 원자적 설비 캐시 데이터 배열 내의 보전 라인을 지시하도록 구성되는 보전 포인터; 및
    다음 차례의 라이트백 선택을 수행하도록 구성되는 희생 엔트리 선택 메커니즘;을 포함하며,
    상기 희생 엔트리 선택 메커니즘은 유효한 라이트백 엔트리가 선택되는 경우 상기 보전 라인이 라이트백으로 선택되는 것을 방지하도록 구성되는 것을 특징으로 하는 시스템.
  5. 원자적 설비 캐시 라이트백 제어기를 관리하는 컴퓨터 프로그램 제품으로, 상기 컴퓨터 프로그램 제품은 컴퓨터 프로그램이 기록된 매체를 구비하며, 상기 컴퓨터 프로그램은,
    상기 원자적 설비 데이터 배열 내의 보전 라인을 지시하는 보전 포인터를 수립하는 컴퓨터 코드;
    라이트백 선택을 수행하는 컴퓨터 코드; 및
    상기 라이트백 선택에 대한 보전 포인트의 엔트리를 제거하여 유효한 보전 라인이 상기 라이트백으로 선택되는 것을 방지하는 컴퓨터 코드;를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  6. 원자적 설비 캐시 라이트백 제어기를 관리하는 프로세서로,
    원자적 설비 데이터 배열 내의 보전 라인을 지시하는 보전 포인터를 수립하는 컴퓨터 코드;
    라이트백 선택을 수행하는 컴퓨터 코드; 및
    상기 라이트백 선택에 대한 보전 포인트의 엔트리를 제거하여 유효한 보전 라인이 상기 라이트백으로 선택되는 것을 방지하는 컴퓨터 코드;를 포함하는 것을 특징으로 프로세서.
KR1020067027236A 2004-06-24 2005-06-09 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템 KR20070040340A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/875,953 2004-06-24
US10/875,953 US20050289300A1 (en) 2004-06-24 2004-06-24 Disable write back on atomic reserved line in a small cache system

Publications (1)

Publication Number Publication Date
KR20070040340A true KR20070040340A (ko) 2007-04-16

Family

ID=35507435

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067027236A KR20070040340A (ko) 2004-06-24 2005-06-09 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템

Country Status (6)

Country Link
US (1) US20050289300A1 (ko)
EP (1) EP1769365A2 (ko)
JP (1) JP2008503821A (ko)
KR (1) KR20070040340A (ko)
CN (1) CN1985245A (ko)
WO (1) WO2006085140A2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680989B2 (en) 2005-08-17 2010-03-16 Sun Microsystems, Inc. Instruction set architecture employing conditional multistore synchronization
US7480771B2 (en) * 2005-08-17 2009-01-20 Sun Microsystems, Inc. Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged
US7689771B2 (en) * 2006-09-19 2010-03-30 International Business Machines Corporation Coherency management of castouts
WO2009122694A1 (ja) * 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
JP2011028736A (ja) * 2009-07-02 2011-02-10 Fujitsu Ltd キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
WO2012098812A1 (ja) * 2011-01-18 2012-07-26 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
US20140181474A1 (en) * 2012-12-26 2014-06-26 Telefonaktiebolaget L M Ericsson (Publ) Atomic write and read microprocessor instructions
US20150012711A1 (en) * 2013-07-04 2015-01-08 Vakul Garg System and method for atomically updating shared memory in multiprocessor system
US20220197813A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Application programming interface for fine grained low latency decompression within processor core

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8802102D0 (en) * 1988-01-30 1988-02-24 Int Computers Ltd Cache memory
US6212605B1 (en) * 1997-03-31 2001-04-03 International Business Machines Corporation Eviction override for larx-reserved addresses
US6145057A (en) * 1997-04-14 2000-11-07 International Business Machines Corporation Precise method and system for selecting an alternative cache entry for replacement in response to a conflict between cache operation requests
US5958035A (en) * 1997-07-31 1999-09-28 Advanced Micro Devices, Inc. State machine based bus cycle completion checking in a bus bridge verification system

Also Published As

Publication number Publication date
WO2006085140A2 (en) 2006-08-17
EP1769365A2 (en) 2007-04-04
US20050289300A1 (en) 2005-12-29
JP2008503821A (ja) 2008-02-07
CN1985245A (zh) 2007-06-20
WO2006085140A3 (en) 2007-08-16

Similar Documents

Publication Publication Date Title
US11119923B2 (en) Locality-aware and sharing-aware cache coherence for collections of processors
JP4730742B2 (ja) 共有メモリの直接メモリ・アクセスのアトミック更新のための装置、及びその方法
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US8924653B2 (en) Transactional cache memory system
US5043886A (en) Load/store with write-intent for write-back caches
KR100704089B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
US9390026B2 (en) Synchronizing access to data in shared memory
US5802574A (en) Method and apparatus for quickly modifying cache state
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
KR20070040340A (ko) 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템
US7363435B1 (en) System and method for coherence prediction
US20020138698A1 (en) System and method for caching directory information in a shared memory multiprocessor system
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
WO2005086004A2 (en) Conditionally accessible cache memory
CN112005222A (zh) 鲁棒的事务性存储器
US20100217937A1 (en) Data processing apparatus and method
JP2007011580A (ja) 情報処理装置
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
US10983914B2 (en) Information processing apparatus, arithmetic processing device, and method for controlling information processing apparatus
US5737568A (en) Method and apparatus to control cache memory in multiprocessor system utilizing a shared memory
US7779205B2 (en) Coherent caching of local memory data
JPH04230549A (ja) 多重レベル・キャッシュ
US6839806B2 (en) Cache system with a cache tag memory and a cache tag buffer
US7543112B1 (en) Efficient on-chip instruction and data caching for chip multiprocessors
US6934810B1 (en) Delayed leaky write system and method for a cache memory

Legal Events

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