KR980010821A - 다중프로세서의 코히어런스 오버헤드 감소를 위한 자기-무효화 장치 및 방법 - Google Patents

다중프로세서의 코히어런스 오버헤드 감소를 위한 자기-무효화 장치 및 방법 Download PDF

Info

Publication number
KR980010821A
KR980010821A KR1019970030880A KR19970030880A KR980010821A KR 980010821 A KR980010821 A KR 980010821A KR 1019970030880 A KR1019970030880 A KR 1019970030880A KR 19970030880 A KR19970030880 A KR 19970030880A KR 980010821 A KR980010821 A KR 980010821A
Authority
KR
South Korea
Prior art keywords
self
cache
invalidation
bus
shared
Prior art date
Application number
KR1019970030880A
Other languages
English (en)
Other versions
KR100266314B1 (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 KR980010821A publication Critical patent/KR980010821A/ko
Application granted granted Critical
Publication of KR100266314B1 publication Critical patent/KR100266314B1/ko

Links

Classifications

    • 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
    • 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
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means

Abstract

본 발명은 공유버스 다중프로세서 장치에서 캐시 일관성 오버헤드를 감소시키는 장치 및 방법에 관한 것으로서, 그 장치는 개별 프로세서 노드에 대해 공유버스 상의 무효화 트래픽을 감소시키기 위해, 겉으로 드러나는 공유버스 무효화 트랜잭션을 요구하지 않고 국부적으로 캐시블록들을 무효화시키는 자기­무효화 수단을 포함함을 특징으로 하고, 그 방법은 로컬 프로세서 노드에 적용할 수 있는 쓰기­무효화 제어 수단의 확장으로서, 로컬 프로세서 노드에서 캐시된 데이터에 대한 하드웨어 중심적인(hardware­oriented) 자기­무효화 수단을 제공하는 단계;및 자기­무효화 수단에 의한 자기­무효화의 부정확한 예측으로 인한 캐시 읽기 및 쓰기 미스를 감소시켜, 공유버스 다중프로세서 장치의 일관성 트래픽을 줄이는 보수적인 읽기­스나핑 수단을 제공하는 단계를 포함함을 특징으로 한다.
본 발명에 의하면, 공유버스 상의 무효화 트래픽을 감소시키고, 캐시블록들은 명시된 무효화 공유버스 트랜잭션을 요구하지 않고서 국부적으로 무효화된다.

Description

다중프로세서의 코히어런스 오버헤드 감소를 위한 자기­무효화 장치 및 방법
본 발명은 데이터 처리 기술에 관한 것으로서, 특히 공유메모리 캐시 및 각 프로세서 노드의 개별 캐시를 이용한 공유버스 멀티프로세서 데이터처리에서 캐시 일관성 오버헤드를 감소시키는 장치 및 방법에 관한 것이다.
일반적으로, 공유 버스 멀티프로세서 컴퓨터 구조는 각 노드가 적어도 하나 이상의, 통상적으로는 복수의, 중앙처리유니트(CPU)와 로컬 메모리와, 입출력(I/O) 유니트 등을 구비하는, 복수의 노드를 포함한다. 물리적인 메모리 주소 공간은 종종 두 영역으로 나누어진다. 즉 최상위 비트가 "0"으로 표시되는 아래쪽 반은 로컬메모리영역으로서, 로컬노드의 프로세서(드)만 상기 로컬 메모리 영역을 억세스할 수 있으며, 반면 최상위 비트가 "1"로 표시되는 위쪽 반은 공유메모리 영역으로서, 모든 노드가 상기 공유메모리영역을 억세스할 수 있다. 그런데 종종 상기와 같은 구조하에서 복수의 노드에 저장되어 있는 고융데이터 블록 간에는 코히어런시(coherency:이하 '일관성'이라 함) 유지를 지원하는 하드웨어가 없다. 그러한 경우, 상기 코히어런시는 전적으로 소프트웨어 몫이었다.
Bull HN 공유버퍼구조(SBA)는, 모든 노드에 접근할 수 있도록 특정 노드의 공유메모리에서 발생되었지만 그 외의 노드에서의 캐시메모리에도 동일하게 저장되어 있는 복사데이터 간의 코히어런시를 유지하는 하드웨어 메카니즘을 도입함으로써 이러한 구조를 확장한다. 이것은 다른 노드들이 병렬로 그리고 빠른 억세스 시간으로 공유데이터에 동작을 수행하게 함으로써 구조의 성능을 향상시킨다.
SBA의 변형된 형태의 하나인 Bull HN 분산공유버퍼구조(DBSA)는 중앙집중식 공유메모리 대신 분산식 공유메모리를 사용하는데, 상기 DBSA는 기존 컴퓨터와의 호환성 뿐만이 아니라 성능과 가용성(availablity) 면에서 많은 장점을 갖는 구성이다. 사적(private) 및 공유(shared) 메모리 간의 주소 분할은 동일하다. 그러나 공유메모리블록들은 각 노드에서 모사(replicate)되고, 따라서 공유메모리는 모든 노드에 의해 동시에 읽기 엑세스가 허용된다. 하드웨어 코히어런시 메카니즘은 공유메모리에 있는 데이터의 동일성을 유지한다.
공유버스는 공유메모리 다중프로세서 구조를 구현함에 있어서 널리 선택되어 왔다. 그러한 시스템에 있어서, 캐시메모리는 프로세서에게 낮은 대기시간을 갖는 주메모리의 이미지를 심어주고 주메모리로의 프로세서 요구를 필터링하고, 따라서 버스의 대역폭을 줄여준다는 점에서 매우 중요한 역할을 한다. "스누핑 프로토콜(snooping protocol)"은 대개 공유버스 다중프로세서에 사용되어 프로세서의 캐시 일관성을 유지하게 하며, 이것은 일반적인 캐시 일관성 다중프로세서에 비해 시스템 설계를 상당히 단순화시킨다. 스누핑 프로토콜을 구현함에 있어서 많이 사용되고 있는 "쓰기­무효화" 정책은 다수의 프로세서들이 엑세스 가능한 데이터 블록을 서로 공유하는 것을 허용하지만, 상기 공유데이터를 수정하기 전에는 반드시 배타적인 복사(exclusive copy)를 획득하기를 요구한다.
공유버스 다중프로세서 시스템에서 쓰기­무효화 스누핑 프로토콜을 사용하여 캐시 일관성을 유지하기 위해서는 적어도 세 가지 오버헤드가 있다. 첫 번째로, 버스 대역폭이 소요된다. 즉 프로세서가 공유블록에 데이터를 기록하면, 버스에 의해 전송되는 무효화 트랜잭션(transaction)이 발생된다. 일관성을 유지하기 위한 트랙픽은 버스에서의 경쟁을 증가시키며, 이는 또한 프로세서 측면에서 볼 때 메모리 대기시간(latency)을 증가시킨다. 둘째로, 시스템으로 하여금 "일관성 미스(coherence miss)"를 경험하게 한다. 원격(remote) 프로세서에 의해 바로 전에 무효화된 로컬 캐시의 데이터를 읽기동작을 수행하면 읽기 미스가 되고, 이 때 "일관성 미스"가 발생한다. 캐시블록 크기(size)가 크면 잘못된 공유가 발생한 가능성이 커지며, 따라서 상기 일관성 미스는 전체 캐시 미스 중 상당한 부분을 차지하게 될 수도 있다. 셋째로, 일관성 행동은 캐시상태와 태그메모리를 외부와 차단시키는 것을 필요로 하며, 이 상태에서 상기 캐시상태와 태그메모리를 갱신하게 한다. 이것은 로컬 프로세서와의 경쟁을 증가시킬 수 있다. 복사된 캐시 상태와 태그메모리는 어떤 특정 경우에는 경쟁을 최소화시킬 수도 있다.
현대 공유버스 다중프로세서 시스템에서 버스트래픽 제어는 매우 중요하다. 예를 들어, 16개의 프로세서, 64바이트의 블록크기, 64KB 데이터 캐시를 가진 시스템에서, 프로세서가 매 5ns 마다 데이터 참조를 해야 한다면, 어떤 병렬 벤치마크 프로그램에 대한 전체 대역폭은 거의 500MB/sec(SPLASH­2의 Barnes의 경우)에서 9400 MB/sec 이상(Ocean의 경우)에 걸쳐 있다. 비교컨대, 가장 큰 대역폭을 가진 다중프로세서 중 하나인 실리콘 그래픽스 챌린지(Silicon Graphics Challenge)의 POWERpath­2 버스는 1200MB의 대역폭을 제공한다. 마이크로프로세서가 점점 더 빨라지고 더 큰 대역폭을 요구함에 따라, 공유버스 구조에서의 기존의 제한된 확장성은 훨씬 더 감소된다. 따라서, 버스 대역폭의 사용에 대한 요구를 감소시킬 수 있는 새로운 방법을 모색하는 것은 공유버스 구조의 더 큰 확장성을 위해서도 매우 중요하다.
공유버스 공유메모리에서 캐시블록(캐시 "상태")에 대한 전형적인 상태 표시를 이애하는 것은 상기 구조에서 메모리 일관성을 위해 캐시블록 상태를 갱신하는 데 필요한 버스 트래픽의 양을 이해하는 데 필수적이다. 만일 한 프로세서가 "dirty" 상태(데이터 블록이 기록되어 바뀔때의 상태)의 블록을 가지고 있고, 다른 프로세서가 그것을 읽고나서 기록을 하면, 상기 캐시블록은 "migratory"로 구분이 된다. migratory 데이터에 대한 최적화된 적응 일관성 프로토콜은 런타임(runtime)에서 migratory 데이터 블록을 동적으로 구분하며, 그런 블록을 위한 무효화 메시지를 제거하려고 한다. 그것들은 읽기 요구에 응답할 때 동일한 프로세서에 의해 장래 무효화를 추측한다. "만일, 공유상태의 블록에 대해 쓰기­히트의 시간에서 (i) 전체 구조에 정확하게 두 개의 캐시된 복사 블록이 있고, (ii) 현재 무효화 동작을 요구하고 있는 프로세서가 바로 전에 무효화 동작을 요구한 프로세서가 아닐 경우에는", 캐시블록은 migratory한 것으로 나타난다.
일단 캐시 블록이 migratory한 것으로 간주되면, 더 이상의 읽기 요구는 배타상태(exclusive state)의 블록을 획득할 것이다. migratory 공유패턴을 구분하고 최적화하는 컴파일러 알고리즘은 이전에 연구되어 왔다. (예를 들어, Proc. 6th Intl.conf.Arch.Sup.Prog.Lang.Oper.Sys.,pp.286­296(1994년 10월)) 그러한 알고리즘은 데이터 흐름 분석을 사용하여 동일한 어드레스에 인터럽트되지 않는 "read­modify­write" 시퀀스를 인식한다. 특별한 명령인 "load­exclusive"는 런타임에서 배타상태에 있는 프로세서에 대한 캐시블록을 획득하기 위한 시퀀스로 로드 명령을 대체한다.
"동적 자기­무효화(Dynamic Self­Invalidation)" 기술은 디렉토리­기반 캐시 일관성 프로토콜의 콘텍스트(context)에서 연구되고 있다. 그것에 의해, 블록들이 캐시로 들어갈 때 상기 블록은 추리적으로 무효화로 구분된다. 그러나 무효화는 캐시에 블록의 초기 필(Fill) 다음의 일정시간 뒤로 지연된다. (예:Proc. 22nd. Intl. Sym. Comp. Arch., pp. 48­59(1995년 6월)) 그러한 프로토콜은 버전(version) 넘버와 캐시 내의 각 캐시블록을 연관시키고 나서 버전넘버와 디렉토리의 각 엔트리를 연관킴으로써 대개 자기­무효화를 위한 블록을 구별한다. 읽기 요구에 응답하여, 디렉토리는 엔트리의 버전 넘버와 캐시블록의 버전넘버를 비교하고, 두 넘버가 매칭이 되지 않으면 블록에게 자기­무효화 마킹을 제공한다. 따라서 마킹된 블록은 구조의 동기시점에서 각 캐시에서 무효화된다. 어드레스 재생 기술과 부가적인 메모리는 그러한 동기 무효화 요구에 응답하여 승인(acknowledgement) 메시지를 생성할 필요가 있다.
"읽기 스나핑(read snarfing)" (혹은 "읽기 브로드캐시팅(read broadcasting)"은 본래 버스의 브로드캐스팅 성질을 이용하여 캐시 일관성 프로토콜의 스누핑에 대한 향상으로서 토의되고 평가되어 왔다. 일부 실험은 읽기 스나핑이 어떤 응용에 대해 일관성 미스와 버스 이용도 감소를 가져옴을 나타낸다. 그러나 사용된 단일 포트(single­ported)를 가진 상태 및 태그메모리 가장(assumption)으로 인해, 그러한 시험에서의 스누핑 오버헤드는 읽기 스나핑의 장점을 상쇄시킨다. 읽기 스나핑을 이용한 공유버스 마이크로프로세서 구조에 대한 다른 모델은 일관성 미스를 줄이는 반면, 성능 개선측면에서는 부분적으로만 효과가 있다.
본 발명의 목적은 공유버스 고유메모리 다중프로세서 구조를 갖는 개선된 데이터 처리 장치를 제공하는 것이다. 특히, 상기 구조에서 각 프로세서 노드에 자기­무효화 수단을 제공하여 상기 장치의 공유버스 상의 무효화 트래픽을 감소시키는 것이 본 발명의 목적이다. 이렇게 함으로써 캐시블록들은 명시된 무효화 공유 버스 트랜잭션을 요구하지 않고서 국부적으로 무효화된다.
본 발명의 좀더 특별한 목적은 하드웨어 복잡성이 거의 없이 현재의 다중 프로세서 기술에 적용시킬 수 있는 간단한 하드웨어적인 확장을 통해 쓰기­무효화 수단을 구현하는 구조를 제공하는 것이다. 바람직하게는, 그러한 자기­무효화 수단은 프로그래머에 의해 보여지는 메모리 모델을 바꾸지 않는다.
본 발명의 또 다른 좀더 특별한 목적은 자기­무효화 수단 및 읽기 스나핑 수단 둘다 자기­무효화 수단에 의해 자기­무효화의 부정확한 예측으로 인한 각 노드에서 캐시 미스를 감소시키는데 이용되는 구조를 제공하는 것이다.
본 발명의 또 다른 바람직한 목적은 공유버스 다중프로세서 장치에서 소정의 방법을 사용하여 쓰기­무효화 일관성 방법에 의하여 버스 트랙픽을 제어하는 방법을 제공하는 것이다.
도1은 공유버스, 상기 공유버스에 의해 연결된 복수의 프로세서 노드, 상기 공유버스에 의해 연결된 주기억장치를 포함하고, 상기 각 프로세서는 고성능 마이크로프로세서 및 두 레벨(L1, L2)의 데이터 캐시를 구비하는, 공유버스 다중프로세서 장치를 블록도로 도시한 것이다.
도2는 특정 로컬 이벤트(specific local event)에 기초하거나 버스­유발 행동(bus­induced action)으로 인한, 자기­무효화를 위한 자기­무효화 프로토콜에서 캐시블록을 마킹하기 위해 사용된 복수의 캐시블록 상태를 열거하고 있는 상태 천이 테이블을 도시한 것이다.
도3은 migratory 블록에 대한 동기 배타 접근을 제공하여 초과(excessive) 블록 무효화를 피하기 위해, 데이터의 migratory 블록 및 migratory 데이터로서 캐시블록의 라벨링(labdlling)을 이끄는 이벤트의 상태 예를 도시한 것이다.
도4는 적어도 7개의 캐시블록 상태를 나타내고 장벽돌(barrieries)에서 칼럼리셋(column­reset)을 제공하기 위해, 4비트로 부호화한 캐시블록상태의 예를 도시한 것이다.
도5는 본 발명에 따른 보수적인(conservative) 읽기 스나핑 기법을 도시한 것이다.
도6은 migratory 공유 및 자기­무효화를 위한 적응 프로토콜이 기본 일리노이 프로토콜에 비해 얼마나 일관성 트래픽을 감소시키는지 나타내는 실험 데이터 결과에 대한 히스토크램을 도시한 것이다.
도7은 일리노이 프로토콜을 채용한 기본 시스템의 정규화된 어드레스 버스 트랜잭션과 비교한, 본 발명에 따른 구조를 사용한 어드레스 버스 트랜잭션의 수를 나타내는 실험데이터의 히스토그램을 도시한 것이다.
도8은 일리노이 프로토콜을 채용한 기본 시스템의 정규화된 캐시미스 대비, 본 발명에 따른 구조에서의 캐시미스 수를 보여주는 실험데이터의 히스토그램을 도시한 것이다.
도9는 일리노이 프로토콜을 채용한 기본 시스템의 공유버스 상의 정규화된 데이터 트래픽 대비, 본 발명에 따른 구조를 사용한 공유버스 상의 데이터 트래픽 양을 보여주는 실험데이터의 히스토그램을 도시한 것이다.
상기 기술적 과제를 달성하기 위한, 본 발명에 의한 공유버스 공유메모리 구조를 갖는 데이터 처리장치는, 버스를 기반으로 하는 고유메모리 구조를 가지는 데이터 처리장치에 있어서, 상기 구조의 개별 프로세서노드에 대해 공유버스 상의 무효화 트래픽을 감소시키기 위해, 겉으로 드러나는 공유버스 무효화 트랜잭션을 요구하지 않고 국부적으로 캐시블록들을 무효화시키는 자기­무효화 수단을 포함함이 바람직하다.
상기 자기­무효화수단은, 하드웨어 복잡성을 상당히 증가시키지 않고, 쉽게 다중프로세서로 적용될 수 있는 쓰기­무효화 수단으로의 하드웨어 중심적인(hard­oriented) 확장임을 특징으로 하고, 프로그래머에 의해 보이는 메모리 모델을 변경시키지 않음을 특징으로 한다.
그리고 상기 데이터 처리장치는 상기 자기­무효화 수단에 의한 자기­무효화 부정확한 예측에 기인한 캐시 미스를 감소시키기 위해, 상기 자기­무효화 수단과 함께 동작하도록 적응된 읽기 스나핑을 위한 수단을 더 구비함을 특징으로 한다.
상기의 기술적 과제를 달성하기 위한 본 발명에 의한, 공유버스 다중프로세서 데이터 처리구조를 갖는 장치는, 복수의 노도;적어도 하나 이상 상기 노드에 상주하고 있으며, 그 중 적어도 하나 이상은 적어도 하나의 직접사상 제1레벨 캐시 및 적어도 하나의 제2레벨 캐시를 구비하고, 상기 제2레벨 캐시는 원격 프로세서와 공유하기 위한 접근 가능한 저장수단을 구비하는, 일관성 성질을 갖는 중앙처리장치(CPU);상기 각 노드에 상주하며, 상기 각 노드에서 상기 제1레벨 캐시와 상기 제2레벨 캐시를 결합을 제공하고, 상기 캐시 간에 라이트­쓰루 수단을 제공하는 노드­오컬 통신수단;상기 각 노드에 상주하며, 상기 노드­로컬 통신수단 및 같은 노드에서 제1, 제2레벨과 연결된느 자기­무효화 일관성 유니트; 및 상기 모든 자기­무효화 일관성 연결되어 있는 인터노드 통신수단을 포함함을 특징으로 한다.
상기의 다른 기술적 과제를 달성하기 위한 본 발명에 의한, 공유버스 다중프로세서 장치의 버스 트래픽을 제어하는 방법은, 쓰기­무효화 제어를 적용하기 위한 수단으로의 확장으로서, 로컬 프로세서 노드에서 캐싱된 데이터의 하드웨어­중심적 자기­무효화 위한 수단을 제공하는 단계;및 상기 로컬 프로세서 노드에서 상기 자기­무효화수단에 의한 자기 무효화의 부정확한 예측으로 인한 캐시 읽기 및 쓰기 미스를 감소시키기 위해, 보수적인 읽기­스나핑을 위한 수단을 제공하여, 상기 공유버스 다중프로세서 장치의 일관성 트래픽을 줄이는 단계를 포함함을 특징으로 하는 방법을 사용하기 위해 적응된 쓰기­무효화 일관성 방법에 의한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 실행중인 프로그램이 많은 양의 일관성 트래픽을 발생시킬 때, 본 발명에 따른 장치 및 방법에서의 자기­무효화와 읽기 스나핑을 결합시키는 것은 고융버스 다중프로세서 공유메모리장치의 실행 시간을 개선할 수 있다. 큰 캐시를 가진 시스템 또는 COMA 다중프로세서에서, 일관성 오버헤드는 실행 시간에 있어서 다른 구성요소보다 훨씬 현저할지 모른다. 그리고 일관성 오버헤드에 대한 제어 메카니즘은 상당한 충격을 가질 수 있다.
A. 캐시블록 자기­무효화
공유버스 다중프로세서에 대한 자기­무효화 기법의 세 가지 설계 목표는 다음과 같다. 첫째, 기존 스누핑 프로토콜로 단순하게 확장될 수 있어야 한다. 둘째, 가능한 한 무효화를 많이 없앨 수 있어야 한다.
셋째, 낮은 미스율을 유지하기 위해, 불필요하게 캐시 블록을 무효화해서는 안된다. 본 발명의 일 실시예에 따른 방법은 일리노이 쓰기­무효화 프로토콜로의 확장을 이용하며, 낮은 미스율을 유지하기 위해 적극적으로 무효화를 제거할 수 있고 수정된 읽기 스나핑 방법과 결합될 수 있다. 그러한 수정된 스나핑 기법은 아래에서, 그리고 본 발명의 청구범위에서 "보수적인 읽기 스나핑"이라는 용어를 사용하여 설명된다.
자기­무효화 기법은 "마킹(marking)" 및 "로컬"무효화­라는 두 가지 단계를 가진다. 상기 두 가지단계는 후술하기로 하고, 이어서 본 발명에 따른 상기 두 가지 단계에 대한 구현예를 들기로 한다. 본 발명에 따른 구현예 및 일관성 스킴(scheme)은 또한 다른 관련 기법과 비교된다.
1. 캐시블록 마킹(cache block marking)
캐시 블록들은 특정 이벤트(event) 상에서 자기­무효화를 위해 마킹된다. 상기 마킹은 확장된 프로토콜을 표로 나타낸 도2에 도시된 바와 같이 캐시블록 상태로 통합된다. 도2에서, "SI*" 및 "Shared *"는 버스 트랜잭션 동안 캐시블록공유정보를 분산하는 특별한 버스 라인이며, 후술될 예1에서 소개될 상기 "SI*" 및 상기 통상적인 "Shared" 라인인 상기 "Shared *"는 다른 공유버스 다중프로세서에 의해 사용된다. 고딕체로 표시된 캐시 데이터 상대들, 즉 Modified, Exclusive, Shared 및 Invalid은 기본 일리노이 프로토콜에서 사용하던 것들이며, 다른 것들, 즉 M+, E+ 및 S+ 은 자기­무효화를 위한 캐시블록을 마킹한 것이다.
공유상태에서 기록되는 캐시블록들은 장래 무효화를 제거하기 위해 마킹된다. 그러한 블록들의 전형적인 예는 프로세서 노드 간에 이용하는 데이터인 이동객체(migratory object)를 가진 것들이다. 상기 이동객체는 많은 경우에 있어서 잠금­잠금해제 동기화에 의해 보호되며, 따라서 배타 접근이 관측되고, 이는 명시된 무효화를 제거하기 위한 기회를 준다. 본 발명에 따른 마킹은 Cox 등이 창안한 프로토콜(이하 "Cox"라 함) 및 도3에 도시된 경우의 예에서와 같이 이동객체를 검출할 것이다. 엄격하게 이동객체에 주의를 기울이는 상기 Cox 스킴과는 달리, 본 발명의 일관성 프로토콜은 자기­무효화를 위해 기록되고 있는 history를 가지고 있는 후보공유블록들을 적극적으로 분류한다. 읽기 요구가 버스상에 나타날 때, 상기 history는 특별한 버스 라인 (SI* 및 Shared*)을 통해 요구하고 있는 프로세서로 전달된다.
2. 캐시블록들의 로컬무효화
M+ 상태에 있는 캐시블록은 다른 프로세서가 상기 캐시블록을 요구하면 국부적으로 무효화된다. 상기 요구하는 프로세서는 나중에 쓰기가 무효화를 발생기키지 못하도록 하기 위해 E+ 상태의 블록을 가지게 될 것이며, 상기 상태는 상기 블록이 여러 프로세서에 의해 공유되게 되면 국부적으로 무효화될 것이라는 것을 나타낸다. 전형적인 이동객체들은 도3에 도시된 바와 같이 E+ 또는 M+ 상태를 운반할 것이다.
S+ 상태에 있는 캐시블록들은 모두 장벽 동기 점에서 무효화된다. 이는 상기 장벽이 시간공유패턴이 상기 장벽을 가로질러 바뀔 것이라는 좋은 힌트를 주기 때문이다. 다음 섹션에서 주어지는 SPLASH­2 벤치마크 프로그램으로부터의 Ocean, Radix에서의 실험결과는 이러한 관측을 뒷받침한다. S+ 상태의 블록들은 안전하게 무효화될 수 있다. 왜냐하면 주기억장치가 버스를 스누프하고 있는 블록의 최신값을 유지하고 있기 때문이다.
B. 바람직한 실시예
요구하는 프로세서에서 캐시블록이 공급될 때, 공유정보를 전달하기 위해 버스라인(migratory)을 사용한다. 본 발명의 실시예는 비슷한 목적을 위해 버스라인을 사용하고 캐시블록을 국부적으로 무효화하기위해 동기화 동작을 고려한다.
본 발명에 따른 기법을 구현한 예의 실험 데이터에 의하면, 이러한 국부적인 무효화가 일부 벤치마크 프로그램에서는 무효화의 수를 줄일 수 있음을 보여주고 있다. 다른 적응 프로토콜이 최적화하려고 하지 않는 접근 패턴이 있는 곳에서조차 그러함을 볼 수 있다. 제안된 동적 자기­무효화 기법은 또한 마킹된 블록을 무효화함에 있어서(획득 및 해제) 동기화 점을 사용한다. 그러나, 이전 작업이 디렉토리­기반 일관성 프로토콜 모델이라고 가정하였기 때문에, 그러한 기법은 캐시블록 어드레스르 재생성하여 각 동기화 점에 승인(acknowledgenents)을 보내기 위해 특별한 시퀀싱 회로가 필요했다. 그런 기법은 또한 4비트 버전 수를 디렉토리에 있는 각 엔트리와 그러한 데이터 블록 버전 정보를 추적하기 위한 중요한 여분 메모리를 요구하는 캐시에 있는 각 블록을 연관시킨다.
본 발명에 따른 자기­무효화 일관성 스킴은 공유버스 구현에 기반을 두고 있기 때문에, 디렉토리 기반 프로토콜에서와 같은 여분의 메모리 용량을 요구하지는 않는다. 일 실시예에서의 본 발명은 단지 메모리 요구에 캐시브록상태를 위한 약간의 비트를 더할 뿐이다. (캐시블록당 2비트)
아래의 예에서, 데이터 블록 일관성 단독으로, 그리고 보수적인 읽기 스나핑과 결합한 것에 대한 자기­무효화 기법은 성능이 평가 및 측정된다. 이동 공유(migratory sharing)를 위해 최적화된 적응 일관성 프로토콜은 일관성 트래픽을 줄인다는 면에 있어서 비교된다. 각 스킴 하에서 버스 트래픽과 캐시미스율 또한 분석된다. 읽기 스나핑을 가지고 확장된 기본 일리노이 프로토콜(비교제어)은 또한 그러한 비교에서 고려된다.
1. 구조 모델(Architecture Model)
다음 실험예에서 이용된 공유버스 다중프로세서는 SGI 챌린지 다중프로세서와 유사하다. 실험을 위한 기본 구조는 도1에 도시된 바와 같이 공유버스를 기반으로 하는 전통적인 공유메모리 시스템과 유사하다. 그러한 구조는 고성능의 마이크로프로세서와 두 레벨의 데이터 캐시를 구비하고 있는 프로세서 노드를 포함한다. 상기 두 레벨의 데이터 캐시는 작은 용량의 직접­사상 제1레벨(L1)캐시와 큰 용량의 세트­연관 제2레벨(L2)캐시이다. 상기 캐시의 블록크기는 32바이트이다. 상기 L1과 L2캐시 간에는 라이트­쓰루(write­through) 정책이 사용되고, 상기 L2캐시와 주기억장치와는 라이트­백(write­back) 정책이 사용된다. 상기 모델에서 공유버스 다중프로세서 장치에 대해 "순차적 일치성(sequential consistency)"이 가정된다.
공유버스는 SGI 챌리지 다중프로세서의 POWERpath­2 버스를 밀접하게 본따 모델링되어 있다. 상기 POWERpath­2 버스는 마이크로프로세서를 효율적으로 지원하기 위해 분리된 트랜잭션을 허용한다. 상기 버스는 50MHZ로 동작하며, 40비트 어드레스버스와 64비트데이터 버스를 가지고 있다. 더구나, 어드레스와 데이터 버스는 독립적으로 중재되고, 따라서 파이프라인 효과를 가져온다. 각 버스트랜잭션은 다섯 버스 사이클을 소요하며, 캐시블록(32바이트)은 하나의 버스 트랜잭션으로 전송된다.
POWERpath­2 에서와 같이, 상기 버스프로토콜은 펜딩되어 있는 읽기(pending read)를 목표로 하는 캐시라인에 대한 일관성 동작을 허용하지 않는다. 상기 일관성 동작은 POWERpath­2에서 읽기 소스인 "펜딩읽기 버퍼(pending read buffer)"을 구비하고 유지함으로써 이루어질 수 있다. 읽기 요구는 그것이 실행될 때, 버퍼의 첫번째 이용가능한 엔트리를 점유할 것이다. 상기 요구에 대한 응답이 버스상에 나타나면, 상기 요구는 버퍼로부터 사라진다. 모든 노드는 버스를 스누프하고 버퍼를 갱신하고 있기 때문에, 상기 버퍼는 효과적으로 미결제된 읽기를 부기하고 있는 글로블 테이블(global table)이다. 읽기 응답은 다른 트랜잭션보다 우선권을 획득하여 읽기 대기시간(read latency)을 낮춘다.
L2 캐시의 상태 및 태그 메모리는 L2 캐시의 Lock­outs을 최소화하기 위해 복제되어 있다. L2캐시의 데이터가 바뀌는 것이 필요하다면, 버스로부터의 동작이 로컬 동작에 우선한다.
"잠금"과 "잠금해제"와 같은 동기화 동작이 MIPS R4000에서 LL("Load Link")와 SC("Store Conditional") 명령을 사용하여 구현되는 것처럼, 상기 동기화 동작은 메모리를 읽거나 쓰는 데 대한 적당한 대가가 지불된다. 그러나, "barrier" 동기화는, 만일 각 프로세서 인터페이스가 SGI 챌린지에서와 같이 특별한 카운트 레지스터를 가지고 있다면, N 프로세서에 대해 N 버스 트랜잭션만이 필요하며 아무런 동기화 동작이 필요치 않다.
캐시 일관성을 유지하기 위해 "일리노이 프로토콜"(비교 프로토콜)이 기본 구조에서 사용된다. 주기억장치는 또한 명시된 라이트­백" 뿐만 아니라 캐시에서 캐시 간의 데이터 전송을 스누프하고 있음을 유의하여야 한다.
2. 다중 프로로세서 가진 실험적인 셋업
다음의 멀티프로세서 모델에서, 상술한 바와 같은 16개의 프로세서를 구비한 다중프로세서 모델에서 병렬 실행을 시뮬레이션하기 위해 SPLASH-2로부터 여섯 개의 벤치마크 프로그램이 사용된다. 시뮬레이터는 전단, 후단 두 파트로 구성되며, 상기 전단은 프로세서의 실행을 시뮬레이션하는 MINT(MASCOTS '94(1994년 1월­2월))이고, 상기 후단은 메모리 시스템과 버스를 시뮬레이션한다. 상기 전단은 데이터 참조 및 동기화 동작을 할 때마다 상기 후단을 호출하고, 상기 후단은 어떤 프로세서 블록을 메모리 접근을 위한 대기상태로 둘 것인지 실행을 계속하게 할 것인지를 결정한다. 결정은 온라인으로 이루어지며, 후단은 전단의 타이밍에 영향을 준다. 따라서 어플리케이션의 흐름제어 및 프로세서 간의 명령 인터리빙은 메모리 시스템과 버스의 행동에 좌우될 수 있다.
아래의 예에서 사용된 시뮬레이터는 프로세서와 버스로부터의 접근의 충돌로 인한 버스 내, 상태 메모리 및 태그메모리에서의 경쟁을 포착할 수 있다. 시뮬레이터는 명령페치를 위한 장치(stall)는 없으며, 하나의 명령은 테이터 캐시 미스가 없다면 한 프로세서클럭(pclock) 내에 실행될 수 있다고 가정한다. L1 캐시는 2KB이며, 억세스가 캐시에서 히트이면 어세스 시간은 드러나지 않는다. 그리고 블록을 채우는 데는 4개의 클록이 소요된다. 4­웨이 세트 연관 L2 캐시는 128KB이며, 40ns의 사이클 시간(8 pcloxks)을 갖는다. 그리고 주 기억장치는 완전히 인터리빙(fully interleaved)되어 있으면 120ns의 억세스 시간을 갖는다고 가정한다. SPLASH-2 벤치마크 슈트(suite)로부터 시뮬레이터를 구동하는 데 사용되는 6개의 프로그램에 대해, 상기 프로그램 사항과 입력사항은 표1에 요약되어 있다. 상기 프로그램들은 병렬성을 표현하기 위해 ANL 매크로를 사용하여 모두 C 언어로 기록되어 있으며, -02 최적화 플래그로 컴파일되어 있다. 모든 측정을 위해, 병렬부분 동안만 통계치들이 수집된다. 사용된 LU 프로그램은 LU­C(인접 블록 할당 버전)이다.
[표 1]
예 1:자기­무효화 구현
본 발명에 따른 자기­무효하 스킴의 마킹을 위해서는, 특별한 버스 라인, SL*가 필요하다. 상기 SL*는 요구된 캐시블록의 주인(owner)에 의해 어써트(assert)되며, 들어오는 블록의 상태를 결정하는 데 있어서 캐시블록을 요구하고 있는 노드에서 힌트를 준다. (Cox 연구는 크게 다른 목적으로 유사한 버스 라인, 즉 "Migratory(이동)" 라인을 가정했다. )
자기­무효화의 타이밍을 맞추기 위해, 메모리 시스템은 동기화 동작을 알 수 있어야 한다. 이것은 어렵지 않으며, 사실상 해제 일치성(release consistency)과 같은 많은 최적화들은 잠금(lock), 잠금해제(unlock) 및 장벽 동기화(barrier synchronization)들이 메모리 시스템에 의해 인지된다고 가정하고 있다. 상기 장벽 동기화는 본 실시예에서 사용된다.
동기점에서 자기­무효화를 효율적으로 수행하기 위해, 칼럼­리셋 회로와 캐시블록상태의 중복 부호화(redundant encoding)가 필요하다. 캐시를 프러시(flush)하기 위한 칼럼­리셋 기능은 이미 상용 캐시제어기에 의해 제공되고 있다. 도4는 중복 부호화의 예를 도시하고 있다. 7개의 상태를 부호화하기 위해서는 3개의 비트로도 충분하지만, 본 실시예에서는 장벽에서의 상태변화를 충분히 나타내기 위해 비트 하나를 더 추가하였다. 이 비트를 위한 칼럼­리셋은 S+ 상태에 있는 모든 블록을 동시에 강제로 무효(invalid) 상태로 되게 할 것이다.
4­비트로 부호화가 되더라도, 여분의 비트로 인한 오버헤드는 작은 것 같다. 40­비트로 도된 어드레스 버스와 32­바이트 블록 크기, 4­웨어 세트 연관 64KB 캐시와 1­MB 캐시일 때, 상기 4­비트 부호화를 하는 프로토콜은 2­비트 부호화를 하는 일리노이 프로토콜에 비해, 각각 0.704%(2/32x8+(40-5-9)+2)) 및 0.714%(30x9+(40-5-13)+2))메모리 오버헤드가 요구된다.
실험 결과는 본 발명에 따른 자기­무효화 일관성 프로토콜이 무효화 수를 줄이는 데 있어 매우 효과적임을 나타내고 있다. 실험에 사용된 벤치마크 프로그램에 대해 평균 71.6% 감소되었다.
도6은 이동 공유(migratory sharing, 도6의 Cox) 및 자기­무효화(SI)를 위한 적응 프로토콜이, 기본 일리노이 프로토콜에 비해(도6의 base), 일관성 트래픽을 얼마나 감소시키는지를 나타내고 있다. 상기 두 방법(이동공유, 자기무효화) 모두 상당한 양의 일관성 트래픽을 감소시킬 수 있었다. 특히 LU에서는, 무효화가 거의 완전히 제거되었다. 그러나, 상기 두 방법 간에 큰 차이를 나타내는 두 프로그램이 있다. 즉 Ocean과 Radix이다. 상기 Ocean 프로그램은 거의 이동 공유를 갖지 않은 것으로 알려져 있다. 또한 상기 Radix는 잠금(lock)보다 장벽(barrier)을 더 많이 포함하고 있다. 상기 적응 프로토콜은 엄밀히 이동데이터 억세스가 거의 없기 때문에 상기 두 프로그램에 있어서 트래픽을 많이 감소시키지 못하고, 반면 SI는 장벽에서 마킹된 캐시블록들을 무효화함으로써 많이 감소시킨다. 읽기 스나핑은 무효화 감소를 목적으로 하지 않기 때문에, 도6에 그 데이터를 나타내고 있는 본 실험에서 고려의 대상으로 삼지 않았다.
예 2:읽기 스나핑과 함께하는 자기­무효화 일관성
읽기 스나핑과 본 발명에 따른 자기­무효화 일관성의 결합 가능성이 조사되었다. 상기 두 기법은 서로 상치되는 성질을 가지고 있다. 즉 상기 자기­무효화는 공유캐시블록에 대해 공유도를 낮게 유지하려고 한 반면, 상기 스나핑은 모든 읽기 요구에서 공유를 최대로 하려고 했다. 그러므로 읽기 스나핑은 상기 자기­무효화 기법과는 직접적으로 함께 혼용될 수 없다.
본 발명에서 자기­무효화 일관성 프로토콜에 읽기 스나핑을 채택하기 위해 상기 읽기 스나핑을 수정하였다. 그러한 수정을 가한 후에, 읽기 요구나 적어도 두 개의 캐시에 캐싱된 블록을 만들 때에만, 프로세서들은 읽기­스나핑을 한다. 즉, 읽기 스나핑은 보존적이 되어, 동작 전 끼어드는 쓰기(intervening write)가 없이 같은 캐시블록에 대해 두번째 읽기 미스가 일어날 때까지 기다디린다.
도5는 본 발명에 따른 보수적인 읽기 스나핑 기법을 설명하고 있다. 읽기 요구나 블록이 적어도 두 개의 캐시에 있도록 할 때와 끼어드는 쓰기(intervening write)없이 같은 캐시블록에 대해 두 번째 읽기 엑세스미스가 발생한 후에만 읽기 스나핑만 동작하는 읽기 스나핑을 억압한다. 도5는 "프로세서j"(Pj)에 의한 로컬 캐시에서 미스인 경우의 읽기 참조가 원래의 읽기 스나핑에서 Px, Py에 의한 프로세서 독축을 트리거하며, 반면 보수적인 읽기 스나핑에서 다른프로세서들에 의한 읽기는 Px에 의한 두 번째 독출이 일어날 때 까지 억압되고 연기되고 있음을 도시하고 있다. 그 결과 발생되는 상태는 S+이며, 블록들은 나중 장벽에서 자기­무효화될 수 있다.
대부분의 무효화 미스가 단일 프로세서에 의한 재독출에 의해 유발되기 때문에 보수적인 읽기 스나핑은 도움이 된다. 이동 객체(migratory object)에 대해 보수적인 읽기 스나핑은 자기­무효화를 방해하지 않는다.
보수적인 읽기 스나핑은 스나핑에 대한 힌트로서 Shared* 신호선을 사용함으로써 쉽게 구현될 수 있다. 버스 상에 읽기 요구가 있을 때 만일 상기 신호선이 어써트(assert)되어 있지 않으며 스나핑 동작은 간단히 억압되고, 만일 상기신호선이 어써트되어 있으면 읽기 스나핑은 수행되고, 그 결과 상태는 캐시된 모든 복사데이터에 대해 S+로 세팅될 것이다.
데이터에 의하면, 스나핑으로 향상된 자기­무효화는 어드레스 버스 트래픽을 평균 13.6% 감소시킴을 보여준다. 그러한 결과는 만일 일관성 트래픽이 프로그램의 버스트래픽을 좌우하고 있다면 실행 시간의 개선 가능성을 약속한다. 더구나 본 발명에 따른 일관성시킴은 현대의 공유버스 다중프로세서 시스템의 하드웨어 복잡성의 거의 더하지 않는다.
도7은 일리노이 프로토콜을 사용한 기본 시스템의 어드레스버스 트랜잭션을 기준으로 정규화된 어드레스 버스 트랜잭션 수를 도시하고 있다. 여기서 상기 버스 트랜잭션은 무효화와 그 외의 다른 것으로 분리되어 있다. 도6에서 이미 도시된 바와 같이, 보수적인 읽기 스나핑을 가진 적응 프로토콜과 자기­무효화는 모든 프로그램에서 무효화 수를 줄일 수 있었다. 읽기 스나핑은 Ocean과 Water 프로그램에서 다른 트랙픽(대부분 메모리 요구)들은 감소시키지만, 일관성 트래픽을 감소시키지는 못하였다. 흥미롭게도, LU 프로그램에서는, 읽기 스나핑은 트래픽을 감소시키는 데 도움이 되지 못했다. 그리고 Cholesky 프로그램에서는, 적응 프로토콜과 SI­S 는 보수적인 읽기 스나핑으로는 해결되지 않는 부정확한 예측에 기인한 약간의 캐시미스율 증가로 인해, Base보다 더 많은 메모리 요구 트래픽을 생성한다. 적응프로토콜, SI­S 및 스나프는 각각 버스 트래픽을 평균 11.1%, 13.6% 및 2.7% 감소시켰다.
도8은 각 스킴이 케시미스에 어떻게 영향을 미치는지를 도시하고 있다. 읽기 스나핑은 Base에 비해 일관되게 일관성 미스를 감소시켰다. 그러나 LU 프로그램에서는 많은 수의 일관성 미스에도 불구하고, 읽기 스나핑은 그 수를 조금만 감소시킬 수 있었다. 이러한 사실은 어떤 프로그램에서의 읽기 스나핑 효율성에 대한 의문을 제기한다. 도7 및 도9는 읽기 스나핑이 LU프로그램에서 어드레스 트래픽을 감소시키지 못하고 데이터 트래픽도 감소시키지 못함을 보여주고 있다. 매우 잦은 무효화는 효율성을 저해하는 것으로 의심이 된다. SI­S는 또한 일관성 미스의 수를 감소시키는 데 효과적이었지만, 보존성으로 인해 Ocean과 Water 프로그램에서 읽기 스나핑만큼 많지는 않다. 도9는 base로 정규환된 데이터 트래픽을 도시하고 있으며, 상기 데이터 트래픽은 도8에 도시된 캐시미스의 수에 자연적으로 비례한다.
더 많은 병렬 어플리케이션 상에서, 그리고 COMA 다중프로세서와 같은 다른 구조모델 하에서의 본 발명에 따른 자기­무효화 기법의 성능측정은 일관성 오버헤드를 어떻게 다룰 수 있는가를 또한 설명할 수 있다. 더구나, 본래 쓰기­갱신 프로토콜의 낮은 미스율을 갖는 이점을 갖는 한, 자기­무효화 프로토콜은 그러한 프로토콜과 관련된 초과적인 버스 트래픽을 감소시키기 위해 쓰기­갱신 프로토콜로 통합될 수 있다.
본 발명은 상술한 실시예에 한정되지 않으며, 당업자에게는 많은 변경과 수정이 본 발명의 범위 내에서 가능함은 분명하다.
본 발명에 의하면, 캐시블록들은 명시된 무효화 공유버스 트랜잭션을 요구하지 않고서 국부적으로 무효화되며, 공유버스 상의 무효화 트래픽을 감소시킨다.

Claims (6)

  1. 버스를 기반으로 하는 공유메모리 구조를 가지는 데이터처리장치에 있어서, 상기 구조의 개별 프로세서 노드에 대해 공유버스 상의 무효화 트래픽을 감소시키기 위해, 겉으로 드러나는 공유버스 무효화 트랜잭션을 요구하지 않고 국부적으로 캐시블록들을 무효화시키는 자기­무효화 수단을 포함함을 특징으로 하는 공유버스 공유메모리 구조를 갖는 데이터 처리장치.
  2. 제1항에 있어서, 상기 자기­무효화 수단은 하드웨어 복잡성을 상당히 증가시키지 않고, 쉽게 다중프로세서로 적용될 수 있는 쓰기­무효화 수단으로의 하드웨어 중심적인(hard­oriented) 확장임을 특징으로 하는 공유버스 공유메모리 구조를 갖는 데이터 처리장치.
  3. 제1항에 있어서, 상기 자기­무효화수단은 프로그래머에 의해 보이는 메모리 모델을 변경시키지 않음을 특징으로 하는 공유버스 공유메모리 구조를 갖는 데이터 처리장치.
  4. 제1항에 있어서, 상기 자기­무효화에 의한 자기­무효화의 부정확한 예측에 기인한 캐시 미스를 감소시키기 위해, 상기 자기­무효화 수단과 함께 동작하도록 적응된 읽기 스나핑을 위한 수단을 더 구비함을 특징으로 하는 공유버스 공유메모리 구조를 갖는 데이터 처리장치.
  5. 복수의 노드;적어도 하나 이상 상기 노드에 상주하고 있으며, 그 중 적어도 하나 이상은 적어도 하나의 직접사상 제1레벨 캐시 및 적어도 하나의 제2레벨 캐시를 구비하고, 상기 제2레벨 캐시는 원격 프로세서와 공유하기 위한 접근 가능한 저장수단을 구비하는, 일관성 성질을 갖는 중앙처리장치(CPU); 상기 각 노드에 상주하며, 상기 각 노드에서 상기 제1레벨 캐시와 상기 제2레벨 캐시를 결합을 제공하고, 상기 캐시 간에 라이트­쓰루 수단을 제공하는 노드­로컬 통신수단; 상기 로컬 제2레벌 캐시와 상기 주기억장치간에 라이트­백 수단을 제공하는 제2레벨캐시 노드­주기억장치 통신수단; 상기 각 노드에 상주하며, 상기 노드­로컬 통신수단 및 같은 노드에서 제1, 제2레벨과 연결되는 자기­무효화 일관성 유니트; 및 상기 모든 자기­무효화 일관성 유니트와 연결되어 있는 인터­노드 통신수단을 포함함을 특징으로 하는, 공유버스 다중프로세서 데이터 처리구조를 갖는 장치.
  6. 쓰기­무효화 제어를 적용하기 위한 수단으로의 확장으로서, 로컬 프로세서 노드에서 캐싱된 데이터의 하드웨어­중심적 자기­무효화를 위한 수단을 제공하는 단계; 및 상기 로컬 프로세서 노드에서 상기 자기­무효화 수단에 의한 자기 무효화의 부정확한 예측으로 인한 캐시 읽기 및 쓰기 미스를 감소시키기 위해, 보수적인 읽기­스나핑을 위한 수단을 제공하여, 상기 공유버스 다중프로세서 장치의 일관성 트래픽을 줄이는 단계를 포함함을 특징으로 하는 방법을 사용하기 위해 적응된 쓰기­무효화 일관성 방법에 의해 공유버스 다중프로세서 장치의 버스 트래픽을 제어하는 방법.
    ※ 참고사항 : 최초 출원 내용에 의하여 공개하는 것임.
KR1019970030880A 1996-07-12 1997-07-03 다중프로세서의 코히어런스 오버헤드 감소를 위한 자기-무효화 장치 및 방법 KR100266314B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/679,083 1996-07-12
US8/679,083 1996-07-12
US08/679,083 US5835950A (en) 1996-07-12 1996-07-12 Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus

Publications (2)

Publication Number Publication Date
KR980010821A true KR980010821A (ko) 1998-04-30
KR100266314B1 KR100266314B1 (ko) 2000-10-02

Family

ID=24725504

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970030880A KR100266314B1 (ko) 1996-07-12 1997-07-03 다중프로세서의 코히어런스 오버헤드 감소를 위한 자기-무효화 장치 및 방법

Country Status (2)

Country Link
US (1) US5835950A (ko)
KR (1) KR100266314B1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173364B1 (en) * 1997-01-15 2001-01-09 At&T Corp. Session cache and rule caching method for a dynamic filter
US6148375A (en) * 1998-02-13 2000-11-14 International Business Machines Corporation Hierarchical bus simple COMA architecture for shared memory multiprocessors having a bus directly interconnecting caches between nodes
US6081874A (en) * 1998-09-29 2000-06-27 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6067603A (en) * 1998-10-01 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US20040186975A1 (en) * 2003-03-20 2004-09-23 Texas Instruments Incorporated Flash memory data structure and methods of accessing thereof
US7797472B2 (en) * 2004-08-25 2010-09-14 Unisys Corporation Method and apparatus for providing overlapping defer phase responses
US7640399B1 (en) 2006-05-10 2009-12-29 Advanced Micro Devices, Inc. Mostly exclusive shared cache management policies
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US8301588B2 (en) 2008-03-07 2012-10-30 Microsoft Corporation Data storage for file updates
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8825594B2 (en) * 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8429753B2 (en) 2008-05-08 2013-04-23 Microsoft Corporation Controlling access to documents using file locks
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8417666B2 (en) 2008-06-25 2013-04-09 Microsoft Corporation Structured coauthoring
US8346768B2 (en) 2009-04-30 2013-01-01 Microsoft Corporation Fast merge support for legacy documents
KR101748441B1 (ko) * 2010-10-08 2017-06-19 삼성전자주식회사 거짓 공유 검출 장치 및 방법
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
US11119923B2 (en) * 2017-02-23 2021-09-14 Advanced Micro Devices, Inc. Locality-aware and sharing-aware cache coherence for collections of processors
US11727997B2 (en) * 2017-07-07 2023-08-15 Micron Technology, Inc. RPMB improvements to managed NAND
US11138114B2 (en) 2020-01-08 2021-10-05 Microsoft Technology Licensing, Llc Providing dynamic selection of cache coherence protocols in processor-based devices
US11372757B2 (en) 2020-09-04 2022-06-28 Microsoft Technology Licensing, Llc Tracking repeated reads to guide dynamic selection of cache coherence protocols in processor-based devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE170642T1 (de) * 1990-06-15 1998-09-15 Compaq Computer Corp Mehrstufeneinschluss in mehrstufigen cache- speicherhierarchien
US5572702A (en) * 1994-02-28 1996-11-05 Intel Corporation Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
US5557769A (en) * 1994-06-17 1996-09-17 Advanced Micro Devices Mechanism and protocol for maintaining cache coherency within an integrated processor
EP0735481B1 (en) * 1995-03-31 2003-05-14 Sun Microsystems, Inc. System level mechanism for invalidating data stored in the external cache of a processor in a computer system

Also Published As

Publication number Publication date
KR100266314B1 (ko) 2000-10-02
US5835950A (en) 1998-11-10

Similar Documents

Publication Publication Date Title
KR100266314B1 (ko) 다중프로세서의 코히어런스 오버헤드 감소를 위한 자기-무효화 장치 및 방법
Cox et al. Adaptive cache coherency for detecting migratory shared data
Iftode et al. Scope consistency: A bridge between release consistency and entry consistency
US7657710B2 (en) Cache coherence protocol with write-only permission
US7409505B2 (en) Optimized high bandwidth cache coherence mechanism
US6704842B1 (en) Multi-processor system with proactive speculative data transfer
US6434672B1 (en) Methods and apparatus for improving system performance with a shared cache memory
US7624236B2 (en) Predictive early write-back of owned cache blocks in a shared memory computer system
US6546462B1 (en) CLFLUSH micro-architectural implementation method and system
JP3989457B2 (ja) 局所的なキャッシュ・ブロック・フラッシュ命令
US7409500B2 (en) Systems and methods for employing speculative fills
IL131924A (en) Reservation management in a non-uniform memory access (numa) data processing system
KR100243319B1 (ko) 비포함적 메모리 억세스 메커니즘
JP2004529415A (ja) 短待ち時間メモリ・アクセスおよび同期化
US6711651B1 (en) Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching
US5802563A (en) Efficient storage of data in computer system with multiple cache levels
US10740233B2 (en) Managing cache operations using epochs
US6643741B1 (en) Method and apparatus for efficient cache management and avoiding unnecessary cache traffic
Chen Cache design and performance in a large-scale shared-memory multiprocessor system
Kong et al. Relaxing the inclusion property in cache only memory architecture
Moga et al. A comparative evaluation of hybrid distributed shared-memory systems
Lee et al. Prospects of distributed shared memory for reducing global traffic in shared-bus multiprocessors
Oi et al. A cache coherence protocol for the bidirectional ring based multiprocessor
Lee et al. Memory Block Relocation in Cache-Only Memory Multiprocessors.
Nilsson et al. Reducing ownership overhead for load-store sequences in cache-coherent multiprocessors

Legal Events

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

Payment date: 20090529

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee