KR100861691B1 - 미러링된 로크 캐시들을 사용한 데이터 전파 - Google Patents

미러링된 로크 캐시들을 사용한 데이터 전파 Download PDF

Info

Publication number
KR100861691B1
KR100861691B1 KR1020060118823A KR20060118823A KR100861691B1 KR 100861691 B1 KR100861691 B1 KR 100861691B1 KR 1020060118823 A KR1020060118823 A KR 1020060118823A KR 20060118823 A KR20060118823 A KR 20060118823A KR 100861691 B1 KR100861691 B1 KR 100861691B1
Authority
KR
South Korea
Prior art keywords
lock
processor
cache
mirrored
data
Prior art date
Application number
KR1020060118823A
Other languages
English (en)
Other versions
KR20070066865A (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 KR20070066865A publication Critical patent/KR20070066865A/ko
Application granted granted Critical
Publication of KR100861691B1 publication Critical patent/KR100861691B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Landscapes

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

Abstract

미러링된 로크 캐시들(mirrored lock cache)을 사용해 데이터를 전파하기 위한 방법, 처리 노드, 및 컴퓨터 판독 가능 매체가 개시된다. 본 방법은 제 1 처리 노드와 연관된 제 1 미러링된 로크 캐시를, 다중-처리 시스템의 제 2 처리 노드와 연관된 하나 이상의 제 2 미러링된 로크 캐시로 통신 커플링되는 버스에 커플링하는 단계를 포함한다. 본 방법은, 제 1 미러링된 로크 캐시에 의해, 처리 노드로부터 데이터를 수신하는 단계를 더 포함한다. 그 다음, 데이터는 자동적으로 미러링되므로, 동일한 데이터가 제 2 처리 노드에 의한 사용을 위한 제 2 미러링된 로크 캐시에서 국지적으로 이용 가능하다.
미러링된 로크 캐시, 다중-처리 시스템, 처리 노드, 데이터 전파

Description

미러링된 로크 캐시들을 사용한 데이터 전파{PROPAGATING DATA USING MIRRORED LOCK CACHES}
도 1은, 본 발명의 실시예에 따른, 고도의 병렬-분산형 다중 처리기 컴퓨팅 환경의 블록도이다.
도 2는, 본 발명에 따른, 도 1의 다중 처리기 컴퓨팅 환경의 처리 노드 각각에 대한 예시적인 컴포넌트 계층 구조의 블록도이다.
도 3은, 본 발명에 따른, 도 1에 도시된 처리기의 좀더 간략화된 버전을 도시하는 블록도이다.
도 4는, 본 발명에 따른, SMLC(small mirrored lock caches)를 사용해 데이터를 복제하는 예시적 프로세스를 도시하는 연산 흐름도이다.
도 5는, 본 발명에 따른, 데이터가 SMLC 및 전통적인 캐시 모두로 매핑되는 것을 방지하는 예시적 프로세스를 도시하는 연산 흐름도이다.
도 6은, 본 발명에 따른, SMLC의 관점에서 타임 스탬프들(time stamps)을 이용하는 것에 의해 레이스 조건들(race conditions)을 방지하는 프로세스를 도시하는 연산 흐름도이다.
도 7은, 본 발명에 따른, 요구 처리기(requesting processor)의 관점에서 타임 스탬프들을 이용하는 것에 의해 레이스 조건들을 방지하는 다른 프로세스를 도시하는 연산 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
100 : 분산 컴퓨팅 환경
102, 104 : 노드
106, 108 : 네트워크 어댑터
110, 112 : 완전한 O/S 이미지
114, 116 : 채널 컨트롤러
118, 120 : 메모리
122, 124 : 처리기
126, 128, 130, 132 : 버스
134, 136 : I/O 어댑터
138 : 네트워크 스위치
본 발명은 일반적으로 정보 처리 시스템 분야에 관한 것으로서, 보다 구체적으로는, 정보 처리 시스템의 캐시 메모리에 관한 것이다.
오늘날의 많은 컴퓨팅 환경들은 다중 처리기들을 이용한다. 예를 들어, SMP(symmetric multiprocessing) 환경은 오늘날 흔히 사용되는 컴퓨팅 환경의 일 유형이다. SMP 환경은 공유되는 메인 메모리에 접속되어 있는 2 이상의 처리기를 포함한다. 처리기들 모두가 공통의 명령어 세트들 및 통신 프로토콜들을 이용하기만 한다면, 처리기들 모두는 대체로 동일하고, 처리기들 모두에는 일반적으로, 유사한 메모리 계층 구조가 제공된다.
이러한 처리기들은 대부분, 캐시로서 공지되어 있는, 소량의 전용 메모리를 포함한다. 캐시들은 연산 속도를 증가시키는데 사용된다. 캐시를 갖춘 처리기에서는, 메인 메모리로부터 정보가 호출되어 사용될 경우, 그 정보가, 정보의 어드레스와 함께, 초고속 메모리의 작은 부분에도, 대개는 SRAM(static random access memory)에도 저장된다. 각각의 새로운 판독 또는 기입 명령이 발행될 때, 시스템은, 그 정보가 존재하는지를 알아보기 위해 고속의 SRAM(캐시)을 살핀다. 소정 어드레스와 캐시 메모리의 어드레스들이 비교된다. 찾고자 하는 어드레스와 캐시 메모리의 어드레스가 매칭되면, 히트(hit)가 존재한다(즉, 정보를 캐시에서 입수할 수 있다). 그 다음, 정보는 캐시에서 액세스되므로, 메인 메모리로의 액세스는 불필요하다. 그에 의해, 명령은 훨씬 빠르게 처리된다. 정보를 캐시에서 입수할 수 없다면, 새로운 데이터가 메인 메모리로부터 복사되어 장차의 사용을 위해 캐시에 저장된다.
캐시의 결정적(critical) 섹션은 때때로, 데이터를 보호하기 위해 로킹(locking)된다. 결정적 섹션들의 로킹은 오퍼레이팅 시스템들, 미들웨어 및 최종 사용자 애플리케이션들에서의 ppc(pervasive and performance critical) 연산이다. 로크들(locks)은 처리기, 프로세스, 프로그램, 프로그램 스레드 등과 같은 일 엔티티에 데이터 구조 또는 코드 시퀀스로의 액세스를 제공하는 소프트웨어 협약이 다. 일단 로킹 엔티티가 로크를 소유하거나 갖고 나면, 다른 엔티티는 로크로의 액세스를 가질 수 없다. 로킹을 위한 표준 메커니즘들은, 공유 변수들을 사용해, 구조적으로 인에이블되는 원자 명령어들에 의해 보호되는 것으로 액세스하는 단계를 수반한다. 공유 변수들은 SMP의 모든 처리기들로부터 효율적으로 액세스 가능해야 한다. 상술된 바와 같이, 각각의 처리기는 통상적으로 그것만의 캐시를 가진다. 다중 처리기들은 동일 로크에 동시에 액세스하고자 함으로써, 로크들의 잠재적인 "핫 스폿팅(hot spotting)"을 초래할 수도 있다.
이러한 로크들을 전역적 로크들(global locks)이라고 하는데, 단일 처리기가 대체로 로크에 액세스하는 유일한 처리기인 국지적 로크(local lock)에 비해, 각각의 처리기가 로크를 획득하려는 균일한 기회를 갖기 때문이다. 그러한 핫 스폿팅으로 인해, 로크 단어(lock word)를 포함하는 캐시 라인은 처리기 캐시들 사이에서 비효율적으로 빈번하게 이동하게 된다. 이러한 이동은 로크 연산들의 효율성을 손상시킨다. 일단 (처리기에서 실행 중인) 프로세스가 로크를 획득하고 나면, SMP상의 다른 처리기들에 대해 소유권이 가시화되어야 하는데, 이것은 통상적으로 동기화 명령어(synchronization instruction)를 통해 실현된다. 브로드캐스트 또는 동기 명령어는 통상적으로 상당히 고비용이고 SMP의 사이즈와 효율적으로 비례하지 않는다.
따라서, 상술된 바와 같은 종래 기술의 문제점들을 극복해야 할 필요성이 존재한다.
간략하게, 본 발명에 따르면, 미러링된 로크 캐시들(mirrored lock caches)을 사용해 데이터를 전파하기 위한 방법, 처리 노드(processing node), 및 컴퓨터 판독 가능 매체가 개시된다. 본 방법은 제 1 처리 노드와 연관된 제 1 미러링된 로크 캐시를, 다중-처리 시스템의 제 2 처리 노드와 연관된 하나 이상의 제 2 미러링된 로크 캐시에 통신 커플링되는 버스에 커플링하는 단계를 포함한다. 본 방법은, 제 1 미러링된 로크 캐시에 의해, 처리 노드로부터 데이터를 수신하는 단계를 더 포함한다. 그 다음, 데이터는 자동적으로 미러링되므로, 동일한 데이터가 제 2 처리 노드에 의한 사용을 위한 제 2 미러링된 로크 캐시에서 국지적으로 이용 가능하다.
본 발명의 다른 실시예에서는, 처리 노드가 개시된다. 처리 노드는 하나 이상의 미러링된 로크 캐시 및 통신 버스를 포함한다. 통신 버스는 하나 이상의 미러링된 로크 캐시를 다중-처리 시스템에서의 하나 이상의 노드에서의 하나 이상의 다른 미러링된 로크 캐시로 통신 커플링하기 위한 것이다. 각각의 미러링된 로크 캐시는 존재하는(resident) 데이터를 자동적으로 미러링하므로, 동일 데이터가 각각의 다른 미러링된 로크 캐시에서 국지적으로 이용 가능하다.
또 다른 실시예에서는, 미러링된 로크 캐시들을 사용해 데이터를 전파하기 위한 컴퓨터 판독 가능 매체가 개시된다. 컴퓨터 판독 가능 매체는 제 1 처리 노드와 연관된 제 1 미러링된 로크 캐시를, 다중-처리 시스템의 제 2 처리 노드와 연관된 하나 이상의 제 2 미러링된 로크 캐시에 통신 커플링되는 버스로 커플링하기 위한 명령어들을 포함한다. 컴퓨터 판독 가능 매체는, 제 1 미러링된 로크 캐시에 의해, 처리 노드로부터 데이터를 수신하기 위한 명령어들을 더 포함한다. 그 다음, 데이터는 자동적으로 미러링되므로, 동일한 데이터가 제 2 처리 노드에 의한 사용을 위한 제 2 미러링된 로크 캐시에서 국지적으로 이용 가능하다.
유사한 참조 번호들이 개개 도면들 전체에 걸쳐 동일한 또는 기능적으로 유사한 요소들을 참조하는 그리고 다음의 상세한 설명과 함께 통합되어 명세서의 일부를 형성하는 첨부 도면들은 다양한 실시예들을 부연하며 본 발명에 따른 다양한 원리들 및 이점들 모두를 설명한다.
당업자라면 알 수 있는 바와 같이, 본 발명은 하드웨어 또는 소프트웨어로, 또는 하드웨어와 소프트웨어의 조합으로 발생될 수 있다. 그러나, 일 실시예에서, 본 발명은 소프트웨어로 구현된다. 바람직한 실시예와 관련하여 개시되는 발명 원리들에 따른 시스템 또는 방법은 설명되거나 청구되는 개개 기능들 또는 단계들을 수행하기 위한 별도 소자들이나 수단들 또는 설명되거나 청구되는 기능들 또는 단계들 중 어떤 것의 성능을 조합하는 하나 이상의 소자들이나 수단들을 갖춘 단일 컴퓨터 시스템으로 발생될 수 있거나, 당업자라면 알 수 있을 임의의 적당한 수단에 의해 상호 접속되어 있는 분산형 컴퓨터 시스템으로 정렬될 수도 있다.
바람직한 실시예와 관련하여 설명되는 발명 원리들에 따르면, 본 발명 및 발명 원리들이 임의의 특정 종류 컴퓨터 시스템으로 한정되지는 않으며, 설명되는 기능들 및 설명되는 방법 단계들을 수행하도록 정렬되어 있는, 당업자라면 알 수 있을 임의의 범용 컴퓨터와 함께 사용될 수도 있다. 상술된 그러한 컴퓨터의 연산들 은, 당업자라면 알 수 있는 바와 같이, 컴퓨터의 연산 또는 제어에 사용하기 위한 매체에 포함되어 있는 컴퓨터 프로그램에 따를 수도 있다. 컴퓨터 프로그램 제품을 보유하거나 포함하는데 사용될 수도 있는 컴퓨터 매체는, 당업자라면 알 수 있는 바와 같이, 매입형 메모리와 같은 컴퓨터의 고착물일 수 있거나 디스크와 같은 휴대용 매체상에 위치할 수도 있다.
본 발명은 임의의 특정 컴퓨터 프로그램, 로직, 언어, 또는 명령어로 한정되지 않으며, 당업자라면 알 수 있는 바와 같이, 임의의 적당한 프로그램, 로직, 언어, 또는 명령어들로써 실시될 수도 있다. 개시된 발명의 원리들을 제한하지 않으면서, 임의의 그러한 컴퓨팅 시스템은, 그 중에서도, 컴퓨터로 하여금 컴퓨터 판독 가능 매체로부터 데이터, 명령어들, 메시지들 또는 메시지 패킷들, 및 다른 컴퓨터 판독 가능 정보를 판독할 수 있게 하는 하나 이상의 컴퓨터 판독 가능 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는, ROM, 플래시 메모리, 플로피 디스크, 디스크 드라이브 메모리, CD-ROM, 및 다른 영구 저장 장치와 같은, 비휘발성 메모리를 포함할 수도 있다. 또한, 컴퓨터 판독 가능 매체는, 예를 들어, RAM, 버퍼들, 캐시 메모리, 및 네트워크 회로들과 같은, 휘발성 저장 장치를 포함할 수도 있다.
더 나아가, 컴퓨터 판독 가능 매체는, 컴퓨터로 하여금 그러한 컴퓨터 판독 가능 정보를 판독할 수 있게 하는 유선 네트워크 또는 무선 네트워크를 포함하는, 네트워크 링크 및/또는 네트워크 인터페이스와 같은 순시 상태 매체(transitory state medium)에 그러한 컴퓨터 판독 가능 정보를 포함할 수도 있다. 본 발명은, 실시예에 따르면, 메모리 복사 연산들을 위한 좀더 효율적인 메커니즘을 제공하는 것에 의해 종래 기술의 문제점들을 극복한다. 본 발명은 메모리 복사 연산 동안 처리기로 하여금 계속해서 후속 명령어들을 실행할 수 있게 하는 것에 의해 불필요한 처리기 작업 중단 시간을 방지한다.
예시적인 다중-컴퓨터 시스템
본 발명의 실시예에 따라, 도 1에 도시된 바와 같이, 예시적인 분산 컴퓨팅 환경(100)이 도시되어 있다. 일 실시예에서, 분산 컴퓨팅 환경은 SMP 컴퓨팅 환경이다. 분산 컴퓨팅 환경(100)은 복수개 네트워크 어댑터들(106, 108)을 통해 서로 커플링되어 있는 복수개 노드들(102, 104)을 포함한다. 각각의 노드(102, 104)는 자신만의 오퍼레이팅 시스템 이미지(110, 112), 시스템 메모리 버스(126, 128)상의 채널 컨트롤러(114, 116), 메모리(118, 120)와 처리기(들)(122, 124), 및 I/O 어댑터들(134, 136)과 네트워크 어댑터(106, 108)를 커플링하는 시스템 I/O 버스(130, 132)를 갖춘 독립 컴퓨터이다. 각각의 처리 노드(102, 104)에는 하나의 처리기(122, 124)만이 도시되어 있지만, 각각의 처리 노드(102, 104)는 하나 이상의 처리기를 가질 수도 있다. 각각의 네트워크 어댑터는 네트워크 스위치(138)를 통해 함께 링크되어 있다. 처리 노드들의 전부 또는 일부가 컴퓨터들의 상이한 유형들 및/또는 상이한 기반의 오퍼레이팅 시스템들(110, 112)을 포함할 수도 있다. 이러한 변형들 모두는 청구된 발명의 일부인 것으로 간주된다.
다중-컴퓨터 시스템의 처리기들을 위한 예시적인 컴포넌트 계층 구조
도 2는, 본 발명에 따른, 도 1의 분산 컴퓨팅 환경(100)의 다수 처리 노드들(102, 104)에 대한 확대도(200)를 예시하는 블록도이다. 일 실시예에서는, 하나 이상의 애플리케이션 프로그램들(APP1(202), APP2(206), APP3(208))이 각 처리 노드(102, 204, 및 104)의 개개 처리기(122, 230, 124)에서 실행된다. 다른 실시예에서는, 애플리케이션 프로그램들(APP1(202), APP2(206), APP3(208))이 개개 처리 노드(102, 204, 104)내의 또는 처리 노드들(102, 204, 104)에 걸친 하나 이상의 처리기에서 분산되어 실행된다. API(application program interface)가 사용되어, 애플리케이션들(202, 206, 208)이 현재 존재하고 있는 네트워크 스위치(138)상의 다른 처리 노드들과 애플리케이션들(202, 206, 208)이 인터페이싱할 수 있다.
각각의 처리 노드(102, 204, 104)는, 예를 들어, 각각의 개개 처리기(122, 230, 124)에서 실행 중인 오퍼레이팅 시스템(110, 210, 112)을 포함한다. 오퍼레이팅 시스템(110, 210, 112)은, 다른 것들 중에서도, 애플리케이션들(APP1(202), APP2(206), APP3(208))이 실행되는 소프트웨어 플랫폼을 제공한다. 또한, 각각의 처리 노드(102, 204, 104)는, 개개 처리기(122, 230, 124)가 다른 하드웨어 컴포넌트들과 통신하는 방법을 위한 명령어들을 제공하는 펌웨어(212, 214, 216)를 포함한다. 각 처리 노드(102, 204, 104)의 하드웨어(218, 220, 222)는 하나 이상의 SMLC(small mirrored lock cache: 224, 226, 228) 및 처리기(122, 230, 124)를 포함한다. 각각의 SMLC(224, 226, 228)는 서로의 미러링 복사들(mirror copies)이다. SMLC(224, 226, 228)는 다음에서 부연될 것이다. 레벨 1 캐시(232, 234, 236)와 같은 전통적인 캐시들 또한 각 처리 노드(102, 204, 및 104)의 하드웨어(218, 220, 222)내에 포함되어 있다.
예시적 SMLC(Small Mirrored Lock Cache)
도 3은, 본 발명의 실시예에 따른, SMLC(224)를 포함하는 도 1의 처리기(122)에 대한 좀더 간략화된 도면을 예시하는 블록도이다. 도 3은 GPR(general purpose register; 304), 레벨 1 캐시(306), 및 메모리 관리 유닛(308)을 포함하는 처리기 코어(302)를 나타내는데, 메모리 관리 유닛(308)은 TLB(translation lookaside buffer)를 포함한다. GPR(304)은, 예를 들어, 고정 소수점 유닛들 및 로드-저장 유닛들에 의해 액세스되고 발생되는 고정 소수점 및 정수 값들을 저장한다. MMU/TLB(308)는 처리기(122)에 의해 요구되는 메모리 액세스들을 핸들링하기 위한 다양한 컴포넌트들을 포함한다. 예를 들어, MMU(308)의 TLB 컴포넌트는 가상 어드레스들을 실제 어드레스들로 변환하기 위한 (MMU(308)에도 포함되어 있는) 페이지 테이블의 부분들을 포함한다. MMU/TLB(308)는 메모리 보호 및 캐시 제어를 위한 컴포넌트들도 포함한다. 처리기(122)는 메모리 복사 명령어와 같은 연산 코드들(opcodes; 310)도 포함한다.
레벨 2 캐시(312) 및 레벨 3 캐시(314)가 처리기 코어(302)에 커플링된다. 메모리 컨트롤러(316) 또한 처리기 코어(302)에 커플링된다.
처리기(122)는 하나 이상의 SMLC(224)도 포함한다. SMLC들은 L1(306), L2(312), 및 L3(314) 캐시들과는 구별되며 서로의 미러링 복사들이다. 다시 말해, 임의의 소정 시점에서, 다중-처리기 컴퓨팅 환경의 동일 처리기상의 또는 상이한 처리기들에 걸친 SMLC들은 동일한 데이터를 가질 것이다. 예를 들어, 처리기에 의한 SMLC로의 기입은 자동적으로 SMP 컴퓨팅 환경의 다른 SMLC들로 전파된다. SMLC들은 국지적 처리 노드(Process id)에 의한 사용을 위한 1차의 국지적 로크 캐시들 일 수 있거나, 다른 실시예에서는, 전역적 로크 캐시들일 수 있는데, 다시 말해, 임의의 처리기가 SMLC내의 로크를 획득하는 균등한 기회를 가진다. 전역적 로크 캐시들은 고도 경쟁 캐시들(highly contended caches)이다.
SMLC의 폭은, 일 실시예에서, 전체 로크 구조를 보유하기 위한 418 바이트들만큼이나 작다. 로크가 보유할 수 있는 것보다 데이터가 크다면, 그것은 메모리(118)에 배치된다. SMLC의 폭은 전통적인 데이터 캐시보다 작으며 전통적인 데이터 캐시보다 적은 수의 엔트리들을 포함한다. 처리기(122)의 하드웨어(218)는 처리기(122)내의 SMLC들과 다중-처리기 컴퓨팅 환경의 나머지 처리기들(204, 104) 사이의 (도시되어 있지 않은) 접속들을 통해 미러링 능력(mirroring capability)을 제공한다.
SMLC(224)는 캐시 엔트리 1(324) 내지 캐시 엔트리 N(326)을 포함한다. 캐시 엔트리들의 수는, 일 실시예에서, 작업 세트를 보유하기에 충분하다. 작업 세트는, 일 실시예에서, 시간의 소정 세트에서 시스템을 실행시키는데 필요한 로크들의 수이다. 작업 세트의 사이즈는 현재의 시스템 환경, 예를 들어, 어떤 프로세스들이 현재 실행 중인지에 따라 증가하거나 감소한다. 일 실시예에서, 작업 세트의 사이즈가 SMLC(224)가 수용할 수 있는 것보다 크다면, 전통적인 캐시가 사용되므로, 캐시 엔트리들의 수는 처리 노드에서의 처리기 수의 함수이다. 로크가 이용 가능한지를 식별하기 위해, 플래그 또는 가용성 비트(availability bit)가 각각의 캐시 엔트리에 포함된다. 예를 들어, 캐시 엔트리 1/로크 1(324)을 위한 가용성 비트(328)는, 로크가 현재 이용 불가능하다는 것을 나타내는 1로 설정되어 있다. 캐시 엔트리 2/로크 2(332)를 위한 가용성 비트(330)는 로크가 이용 가능하다는 것을 나타내는 0으로 설정되어 있다. 처리기가 특정 로크를 획득하고자 할 때, 처리기는 가용성 비트를 검사하여 로크가 이용 가능한지를 판정한다.
SMLC(224)는 전통적인 로크 계층 구조를 우회한다. 매핑 비트들이 MMU(308)의 (도시되어 있지 않은) 페이지 테이블에 포함되어, 소정 엔트리들이 SMLC(224)에 보유될 것을 알린다. 애플리케이션(202), OS(110), 및/또는 미들웨어는 시스템에 명령어를 제출하여 (공간이 이용 가능하다면) 특정 로크가 SMLC(224)에 배치되어야 한다는 것을 알린다. 이 프로세스는 최종 사용자에게 투명하다. SMLC(224)와, L1(306), L2(312), 및 L3(314) 캐시들과 같은, 전통적인 캐시 모두에 사용될 소정 로크 단어에 대한 에일리어싱(aliasing)은 허용되지 않는다. SMLC(224) 또는 전통적인 캐시로의 매핑은 허용되지만, 양자로의 매핑은 허용되지 않는다. 일 실시예에서, 처리 노드(102)는 SMLC(224)를 특수 사이드밴드 캐시(special sideband cache)로 본다. 다시 말해, L2(312) 또는 L3(314) 캐시들은 SMLC(224)를 백업하지 않는다. SMLC(224)의 값들은 메모리(118)에서만 미러링되고, L2(312) 또는 L3(314) 캐시에서는 미러링되지 않는다.
일 실시예에서는, (도시되어 있지 않은) SMLC 관리 메커니즘들이 OS(110) 또는 하드웨어(216)내에 구현된다. SMLC(224)의 새로운 할당이 요구되고 충분한 공간이 존재할 경우, 예를 들어, LRU(least recently) 기반 메커니즘이 구현되어 SMLC(224)로부터의 로크를 전통적인 캐시로 이동시킨다. 다른 실시예에서, OS(110)는, SMLC(224) 로크 캐시들이 다양한 애플리케이션들(202), OS(110) 자체, 및 미들웨어에 할당되는 방법을 위한 다양한 정책들을 포함한다. 이러한 정책들은 처리 노드(102)에 존재하는 OS(110)의 유형, 애플리케이션들(202) 및 미들웨어에 따라 개별화될 수 있다.
일 실시예에서는, 로크 단어를 자동적으로 업데이트하는 것에 의해 SMLC(224)를 위한 레이스 조건들이 방지된다. 예를 들어, SMP 환경에서, 공유 변수들은 SMP 환경의 모든 처리기들에 액세스 가능해야 한다. 다중 처리기들이 동시에 동일 로크에 액세스하고자 하여 로크들의 "핫 스폿팅"을 초래할 수도 있다. 예를 들어, 각각의 처리기는, 그들이 로크를 획득한 것으로 생각하여, 로크 비트를 0으로 설정한 다음 로크에 기입하고자 할 수도 있다. 처리기가 로크를 획득할 때 로크 단어를 자동적으로 업데이트하는 것에 의해, 다른 처리기들에는, 로크가 이용 불가능한 것으로 통지된다. 그 다음, 로크 단어는, 처리기가 로크를 해제할 때, 자동적으로 업데이트됨으로써, 다른 처리기들에 로크가 이용 가능하다는 것을 알린다. 로크 단어는, 일 실시예에서, "테스트 및 설정(test and set)" 및 "재설정(reset)" 연산들을 사용하는 것에 의해 자동적으로 업데이트된다.
다른 실시예에서는, 타임 스탬프들을 이용하는 것에 의해, 레이스 조건들이 방지된다. 예를 들어, 처리기가 로크로의 액세스를 요구할 때, 타임 스탬프도 요구와 함께 송신되거나 요구내에 포함된다. 최초의 타임 스탬프와 연관된 처리기 ID가 로크에 저장된다. 처리기가 로크에 액세스하고자 할 때, 처리기는 그것의 고유한 ID에 대하여 처리기 ID를 점검하고 그들이 매칭되면 처리기는 로크를 획득할 수 있다. ID들이 매칭되지 않으면, 처리기는 로크를 획득할 수 없다.
"모두 소거하기(clear all)" 및 "모두 설정하기(set all)"의 로크 연산들의 경우, 이러한 신호들을 단일 비트를 통해 송신하기 위한 접속들이 설정되어 캐시 상호 접속 대역폭을 절감한다. 다시 말해, 전체 로크 단어를 SMLC의 모든 캐시들로 송신하는 대신, 로크 단어의 어드레스와 함께 하나의 비트(설정/소거)만이 송신된다. 일 실시예에서, SMLC(224)는 강하게 순서화되어 있으므로, 다시 말해, SMLC(224)로의 저장들을 순서화하므로, 레이스 조건들이 방지된다. 또한, SMLC(224)로의 저장들을 순서화함으로써 SMLC 로직을 간단하게 그리고 아주 효율적으로 유지할 수도 있다. SMLC(224)가 강하게 순서화되는 것으로 한정될 필요는 없다는 것에 주의해야 한다.
애플리케이션(202), OS(110), 및 미들웨어는 SMLC(224)의 로크들을 무제한으로 사용할 수 있다. 전통적인 로크들과 유사하게, 가장 활동적인 로크 단어들이 고속 획득 및 해제를 위해 SMLC(224)에 보유된다. 나머지 로크 단어들은, SMLC(224)와 전통적인 캐시들 사이에서는 에일리어싱이 허용되지 않는다는 상기 제한에 따라, L1(306), L2(312), 및 L3(314)와 같은 전통적인 캐시들 또는 메모리(116)에 보유된다.
SMLC들은, 프로세스들간의 동기화가 효율적으로 발생한다는 것도 보장한다. 예를 들어, SMP 컴퓨팅 환경에서, 병렬 애플리케이션들은, 동일한 처리 노드상의 다양한 처리기들에서 실행되는 몇가지 태스크들(프로세스들)을 가질 수 있다. 통상적으로, 프로세스(또는 병렬 작업의 태스크)는 처리 노드상의 처리기로 매핑된다. 모든 프로세스들이 동시에 완결되지는 않을 것이며 계속되기 전에 동기화되어 야 한다. 이러한 태스크들은 통상적으로, 스레드들이 동기화될 수 있도록 하기 위해, 장벽 동기화 연산(barrier synchronization operation)을 실행한다. 프로세스들은 공유 메모리를 통해 또는 일반적으로 아주 느린 원자 연산들(atomic operations)을 사용하는 것에 의해 메시지들을 교환한다. SMLC(224)가 시스템에서 이용될 경우, 값이 캐시 엔트리에 기입될 때마다, 데이터는 자동적으로 나머지 캐시들에 미러링된다. 따라서, 프로세스가 완결되었는지를 판정하기 위해, 처리기들이 SMLC 캐시(224)의 엔트리 각각을 점검할 필요는 없다.
또한, SMLC는, 제어 메시지들이 처리기에서 처리기로 효율적으로 송신될 수 있게 한다. 제어 메시지는, 예를 들어, 처리기들 모두에 대한 TOD 클록들의 동기화를 위한 메시지, 상술된 장벽 동기화 메시지 등이다. 일 실시예에서는, 단문 메시지들(short messages)이, 예를 들어, 좀더 긴 메시지들이 정확하게 핸들링되는지를 판정하기 위한 제어 메시지들로서 사용된다. 예를 들어, 단문 메시지들은, 일 실시예에서, 다른 것, 예를 들어, 메시지가 송신되었는지, 메시지에 오류가 존재했었는지 등과 같은, 좀더 긴 메시지의 상태를 논리적으로 제어하는데 사용된다. 제어 메시지들이 상호 작용할 때, SMLC(224)는 로크들 대신에 메시지들을 포함할 것이다. 예를 들어, 엔트리 1(324) 내지 엔트리 N(326)은 제어 메시지들을 포함할 것이다. 또한, SMLC(224)는 다양한 동기 레지스터로서 동작할 수도 있다. 예를 들어, 다중-처리기 시스템의 처리기 각각은 SMLC(224)에 할당된 물리적 위치를 가진다. 처리기 각각은, 다른 처리기 모두가 시퀀스의 소정 단계, 예를 들어, 단계 5에 도달했는지를 알아보기 위해 판독한다. 이 일례에서, 각각의 처리기는, 처리 기들이 단계 6을 계속할 수 있기 전에 단계 5에 도달해야 한다. 각각의 처리기가 단계 5를 완료했을 때, SMLC(224)는 정보를 나머지 처리기들 각각으로 미러링함으로써, 처리기들간의 효율적인 동기화를 보장한다. SMLC(224)를 이용해 다른 처리기가 단계들 시퀀스의 단계를 완료했을 때를 처리기들 각각으로 통지하는 것이 공유 메모리를 통해 메시지들을 교환하는 것보다 좀더 빠른데, SMLC(224)가 처리기 코어(302)에 좀더 가깝기 때문이다.
본 발명의 일 이점은, 처리기 각각이, 프로세스가 완료되었다는 것을 지시하는 통지가 존재하는지를 알아보기 위해 메모리(118)를 점검할 필요가 없다는 것인데, 그 대신, 처리기 각각으로 다른 처리기들에서 실행 중인 프로세스들이 완료되었다는 것을 알리는 단문 메시지들이 SMLC(224)를 사용해 전송될 수 있다. 예를 들어, 처리기 A는 SMLC(224)를 통해 처리기 B로 단문 메시지를 송신한다. 처리기 A는 그것의 연관된 로크에 완전한 비트를 기입하고 처리기 B는, 처리기 B가 로크의 데이터를 판독할 때 그 비트를 소거한다. 처리기 A는, 처리기 A가 비트가 0으로 설정되었다고 판정할 경우, 계속해서 로크에 기입한다. 각각의 처리기가 메모리를 점검하게 하는 대신 SMLC(224)를 사용해 단문 메시지들을 전송하는 것이 좀더 빠른데, SMLC(224)가 처리기 코어(302)에 좀더 가깝기 때문이다.
다른 실시예에서는, 어댑터들도 SMLC(224)를 이용해 제어 메시지들을 처리기들로 송신하고, 그에 의해, 일반적인 캐시-부적중(cache-miss) 지연들을 방지한다. 예를 들어, 처리기들에서 실행 중인 프로세스들이 DMA 연산이 발생했다는 것을 알 수 있도록 하기 위해, 프로세스들은 통상적으로, DMA 연산들의 결과로서 변경된 메모리 위치들을 판독하기 전에, (캐시-간섭적(cache-coherent)이지 않은 DMA 연산들을 위한) 그들의 캐시 엔트리들을 평가해야 한다. 이것은, (대부분의 메시지 전달 병렬 및 분산 시스템들을 위한 통상적인 방법인) DMA 연산들을 통해 입력되는 데이터를 처리함에 있어서 비효율성을 초래한다. 고성능 네트워크 어댑터들로부터의 DMA 연산들은, 소정 업데이트들이 SMLC(224)에 직접적으로 미러링된다는 것을 인지할 수 있다. 성능 결정적 지연 연산들(performance critical latency operations)의 경우, 이러한 하드웨어 지원은 프로세스들에 의한 새로운 입력 데이터의 검출 태스크를 좀더 효율적이게 한다.
SMLC를 사용해 데이터를 미러링하는 예시적 프로세스
도 4는 SMLC를 획득하고 그것의 데이터를 다른 SMLC들로 전파하는 프로세스를 예시하는 연산 흐름도이다. 도 4의 연산 흐름도는 단계 402에서 시작해 바로 단계 404로 진행한다. 처리기(122)는, 단계 404에서, 처리기(122)가 획득하고자 하는 로크가 SMLC 로크인지를 판정한다. 이러한 판정 결과가 부정적이라면, 로크는, 단계 406에서, 전통적인 로크 핸들링 절차들을 사용해 핸들링된다. 그 다음, 제어 흐름은 단계 408에서 종료한다. 이러한 판정 결과가 긍정적이라면, 처리기(122)는, 단계 410에서, SMLC 로크가 이용 가능한지를 판정한다. 다시 말해, 처리기(122)는, 로크가 다른 처리기에 의해 현재 획득되어 있는지를 판정한다. 로크가 이용 가능할 경우, 로크는 자동적으로 간섭적(coherent)이다. 예를 들어, SMP 컴퓨팅 환경에서 유효한 실행 결과들을 획득하기 위해서는, 간섭적 메모리 계층 구조를 유지하는 것이 중요하다. SMLC(224)는 처리기들 모두에 메모리 내용들의 단 일 뷰(single view)를 제공한다. 처리기(122)는, 예를 들어, 가용성 비트(328, 330)를 점검하는 것에 의해, 로크의 이용 가능성 여부를 판정한다. 이러한 판정 결과가 부정적이라면, 처리기(122)는 계속해서, 로크가 이용 가능한지를 점검한다. 이러한 판정 결과가 긍정적이라면, 처리기(122)는, 단계 412에서, SMLC(224)에 기입한다(이는, 가용성 플래그를 이용 불가능으로 변경한다). 예를 들어, 처리기(122)는 획득된 로크에 데이터를 기입한다.
처리기(122)가, 단계 416에서는, 획득된 로크의 보호 데이터를 판독하고, 단계 418에서는, 보호 데이터로써 작업한다. 처리기(122)가 데이터를 판독하여 작업하는 것을 마치고 나면, 처리기(122)는, 단계 420에서, 가용성 플래그(328, 330)를 이용 가능으로 설정한다. 예를 들어, 처리기는, 가용성 플래그(328, 330)를 이용 가능으로 변경하는 재설정 연산을 수행한다. 그 다음, 제어 흐름은 단계 422에서 벗어난다.
전통적인 캐시들과 SMLC들 사이의 에일리어싱을 방지하는 예시적 프로세스
도 5는 L1(306), L2(312), 및 L3(314)와 같은 전통적인 캐시들과 SMLC(224) 사이의 에일리어싱을 방지하는 예시적 프로세스를 예시하는 연산 흐름도이다. 도 5의 예시적 프로세스는, 일 실시예에서, OS(110)에 의해 수행된다. 도 5의 연산 흐름도는 단계 502에서 시작해 바로 단계 504로 진행한다. OS(110)는, 단계 504에서, 로크 단어가 SMLC(224)로 매핑되는지를 판정한다. 이러한 판정 결과가 부정적이라면, OS(110)는, 단계 506에서, 로크 단어가 전통적인 캐시로 매핑되는지를 판정한다. 이러한 판정 결과가 긍정적이라면, OS(110)는, 단계 508에서, 로크 단어 가 SMLC(224)로도 매핑되는 것을 방지한다. 그 다음, 제어 흐름은 단계 510에서 종료한다. 이러한 판정 결과가 부정적이라면, OS(110)는, 단계 512에서, 로크 단어가 SMLC(224) 또는 전통적인 캐시로 매핑되는 것을 허용하지만, 양자로 매핑되는 것은 허용하지 않는다. 그 다음, 제어 흐름은 단계 514에서 종료한다. 단계 504의 결과가 긍정적이라면, OS(110)는, 단계 516에서, 로크 단어가 전통적인 캐시로도 매핑되는 것을 방지한다. 그 다음, 제어 흐름은 단계 518에서 종료한다.
타임 스탬프들을 이용해 레이스 조건들을 방지하는 예시적 프로세스
도 6은 SMLC(224)의 관점에서 타임 스탬프들을 이용하는 것에 의해 레이스 조건들을 방지하는 프로세스를 예시하는 연산 흐름도이다. 도 6의 연산 흐름도는 단계 602에서 시작해 바로 단계 604로 진행한다. SMLC(224)는, 단계 604에서, 로크를 획득하기 위한 요구를 수신한다. SMLC(224)는, 단계 606에서, 요구와 연관된 타임 스탬프가 그러한 특정 로크를 위한 요구와 연관된 최우선 타임 스탬프(earliest time stamp)인지의 여부를 판정한다. 이러한 판정 결과가 부정적이라면, 요구 처리기는, 단계 608에서, 로크로의 액세스가 허용되지 않는다. 그 다음, 제어 흐름은 단계 610에서 종료한다. 이러한 판정 결과가 긍정적이라면, 단계 612에서는, 요청 처리기와 연관된 처리기 ID가, 요구된 로크에 기입된다. 이것은, 요구 처리기만이 로크를 획득할 수 있게 한다. 그 다음, 제어 흐름은 단계 614에서 종료한다.
타임 스탬프들을 이용해 레이스 조건들을 방지하는 또 하나의 예시적 프로세스
도 7은 요구 처리기의 관점에서 타임 스탬프들을 이용하는 것에 의해 레이스 조건들을 방지하는 또 다른 프로세스를 예시하는 연산 흐름도이다. 도 7의 연산 흐름도는 단계 702에서 시작해 바로 단계 704로 진행한다. 처리기(122)는, 단계 704에서, SMLC(224)에서의 로크 획득을 요구한다. 처리기(122)는, 단계 706에서, 최우선 타임 스탬프와 연관된 처리기에 기초해, 요구된 로크에 기입된 처리기 ID를 판독한다. 처리기(122)는, 단계 708에서, 로크로 기입된 처리기 ID가 그것의 처리기 ID와 매핑되는지를 판정한다. 이러한 판정 결과가 부정적이라면, 단계 710에서, 처리기(122)에는 로크로의 액세스가 허용되지 않는다. 그 다음, 제어 흐름은 단계 712에서 종료한다. 이러한 판정 결과가 긍정적이라면, 단계 714에서, 처리기(122)는 로크를 획득한다. 그 다음, 제어 흐름은 단계 716에서 종료한다.
비한정적 일례들
본 발명의 실시예들은, 이들이 데이터의 효율적인 로킹을 제공하기 때문에 바람직스럽다. 본 발명의 다른 이점은, SMLC들이 서로의 미러링 복사들이라는 것이다. 이것은, 하나의 SMLC 데이터가 다른 SMLC에 국지적으로 존재할 수 있게 한다. 다른 위치의 데이터에 액세스하는데 필요한 처리가, 데이터를 검색하거나 다른 위치로부터 데이터를 조회하지 않아도 된다.
본 발명은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 실현될 수 있다. 본 발명의 바람직한 실시예에 따른 시스템은 하나의 컴퓨터 시스템에서 집중 방식으로 또는 상이한 소자들이 수개의 상호 접속된 컴퓨터 시스템들 에 걸쳐 흩어져 있는 분산 방식으로 실현될 수 있다. 여기에서 설명된 방법들을 수행하도록 적응된 임의 종류의 컴퓨터 시스템 또는 다른 장치가 적합하다. 하드웨어와 소프트웨어의 통상적인 조합은, 로드되고 실행될 경우, 컴퓨터 시스템이 여기에서 설명된 방법들을 수행하도록, 컴퓨터 시스템을 제어하는 컴퓨터 프로그램을 갖춘 범용 컴퓨터 시스템일 수 있다.
일반적으로, 본 발명의 실시예들을 구현하도록 실행되는 루틴들을, 오퍼레이팅 시스템이나 특정 애플리케이션의 일부, 컴포넌트, 프로그램, 모듈, 오브젝트 또는 명령어들의 시퀀스로서 구현되는 것에 상관없이, 여기에서는 "프로그램"이라고 할 수 있다. 컴퓨터 프로그램은 통상적으로, 원시 컴퓨터에 의해 머신-판독 가능 포맷 및 그에 따른 실행 가능 명령어들로 번역될 다수 명령어들을 구비한다. 또한, 프로그램들은, 프로그램에 국지적으로 존재하거나 메모리 또는 저장 장치들에서 발견되는 변수들 및 데이터 구조들도 구비한다. 또한, 여기에서 설명되는 다양한 프로그램들은, 그들이 본 발명의 특정 실시예에서 구현되는 애플리케이션에 기초해, 식별될 수도 있다. 그러나, 수반되는 임의의 특정 프로그램 전문어는 단지 편의를 위해 사용되는 것이므로, 본 발명이 그러한 전문어에 의해 식별되거나 그리고/또는 암시되는 임의의 특정 애플리케이션에서만 사용되는 것으로 한정되어서는 안된다는 것을 알 수 있어야 한다.
본 발명의 특정 실시예들이 설명되었지만, 당업자들이라면, 본 발명의 정신 및 범위를 벗어나지 않으면서, 특정 실시예들에 대한 변경들이 수행될 수 있다는 것을 이해할 수 있을 것이다. 따라서, 본 발명의 범위는 특정 실시예들로 한정되 지 않으며, 첨부된 청구항들은 본 발명의 범위 내에 해당되는 임의의 그러한 애플리케이션들, 변경들, 및 실시예들 모두를 포함하기 위한 것이다.
따라서, 본 발명에 따르면, 미러링된 로크 캐시들을 사용해 데이터를 전파하기 위한 방법, 처리 노드, 및 컴퓨터 판독 가능 매체가 제공된다.

Claims (15)

  1. 다중-처리 시스템의 처리기 노드(processor node)로서,
    적어도 하나의 미러링된 로크 캐시(mirrored lock cache) 및 적어도 하나의 미러링되지 않는 로크 캐시(non-mirrored lock cache) -상기 미러링된 로크 캐시는 상기 미러링되지 않는 로크 캐시보다 적은 캐시 엔트리를 포함함-; 및
    상기 적어도 하나의 미러링된 로크 캐시를 다중-처리 시스템의 적어도 하나의 노드에서의 적어도 하나의 다른 미러링된 로크 캐시로 통신 커플링하기 위한 통신 버스
    를 포함하며, 각각의 미러링된 로크 캐시는, 새로운 데이터를 수신하는 것에 응답하여, 상기 다중-처리 시스템의 처리기와 독립적으로 상기 새로운 데이터를 상기 다른 미러링된 로크 캐시 각각에 자동적으로 미러링(mirror)하도록 함으로써, 동일한 데이터가 상기 미러링된 로크 캐시 및 상기 다른 미러링된 로크 캐시 각각에서 국지적으로 이용 가능하도록 하는, 처리기 노드.
  2. 제 1 항에 있어서,
    상기 미러링된 로크 캐시는, 가용성 플래그를 구비하는 한 세트의 로크들을 포함하며, 상기 가용성 플래그는 그 자신과 연관된 로크의 가용성을 지시하는 것인 처리기 노드.
  3. 제 1 항에 있어서,
    상기 데이터는 제어 메시지인 처리기 노드.
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제 3 항에 있어서,
    상기 제어 메시지는 장벽(barrier) 동기화 메시지 및 시각 메시지(time of day message) 중 하나인 처리기 노드.
  5. 제 1 항에 있어서,
    상기 미러링된 로크 캐시에 존재하는(residing) 데이터가 미러링되지 않은 로크 캐시(non-mirrored lock cache)로 매핑되는 것을 방지하기 위한 한 세트의 프로그래밍 명령어들을 더 포함하는 처리기 노드.
  6. 제 2 항에 있어서,
    상기 한 세트의 로크들에서의 로크 각각은 상기 로크에 액세스할 수 있도록 허가된 처리기와 연관된 처리기 ID를 포함하는 처리기 노드.
  7. 제 6 항에 있어서,
    상기 처리기 ID는 다른 처리기들에 앞서 상기 로크로의 액세스를 요구 중인 처리기 ID와 연관된 처리기에 기초해 상기 로크에 기재되고, 처리기들로부터의 요구들에 대한 우선 순위는 상기 요구들 각각에 포함되어 있는 타임 스탬프에 의해 판정되는 처리기 노드.
  8. 하나의 미러링된 로크 캐시에서, 다른 미러링된 로크 캐시들로 데이터를 전파하기 위한 방법으로서,
    제 1 처리 노드(processing node)와 연관된 제 1 미러링된 로크 캐시를, 다중-처리 시스템의 제 2 처리 노드와 연관된 적어도 하나의 제 2 미러링된 로크 캐시로 통신 커플링되는 버스에 커플링하는 단계 -상기 제 1 미러링된 로크 캐시 및 상기 제 2 미러링된 로크 캐시 각각은 상기 다중-처리 시스템 내의 미러링되지 않는 로크 캐시보다 적은 캐시 엔트리를 포함함-;
    상기 제 1 미러링된 로크 캐시에 의해, 처리 노드로부터의 데이터를 수신하는 단계; 및
    상기 데이터를 수신하는 것에 응답하여, 상기 제 2 처리 노드에 의한 사용을 위해 동일한 데이터가 상기 제 2 미러링된 로크 캐시에서 국지적으로 이용 가능하도록, 상기 제 1 미러링된 로크 캐시에 의해, 상기 다중-처리 시스템의 처리기와 독립적으로 상기 데이터를 자동적으로 미러링하는 단계
    를 포함하는 방법.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제 8 항에 있어서,
    가용성 플래그를 설정하여 상기 가용성 플래그와 연관된 상기 제 1 미러링된 로크 캐시에 존재하는 로크의 가용성을 지시하는 단계를 더 포함하는 방법.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제 8 항에 있어서,
    상기 제 1 미러링된 로크 캐시에 존재하는 데이터가 미러링되지 않는 로크 캐시로 매핑되는 것을 방지하는 단계를 더 포함하는 방법.
  11. 제 8 항에 있어서,
    상기 제 1 미러링된 로크 캐시에 존재하는 로크를 획득하기 위한 요구를 처리기로부터 수신하는 단계로서, 상기 요구는 적어도 타임 스탬프 및 상기 처리기와 연관된 처리기 ID를 포함하는, 단계;
    상기 타임 스탬프가 다른 처리기들로부터의 다른 요구들과 연관된 다른 타임 스탬프들에 선행하는지의 여부를 판정하는 단계; 및
    상기 다른 처리기들로부터의 다른 요구들과 연관된 다른 타임 스탬프들에 선행하는 상기 타임 스탬프에 응답하여, 상기 처리기 ID를 상기 로크에 기입하는 단계를 더 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 처리기와 연관된 처리기 ID가 상기 로크에 기입된 처리기 ID와 매칭될 경우에만, 상기 처리기에 상기 로크로의 액세스를 허용하는 단계를 더 포함하는 방법.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제 8 항에 있어서,
    상기 데이터는 제어 메시지인 방법.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제 13 항에 있어서,
    상기 제어 메시지는 장벽 동기화 메시지 및 시각 메시지 중 하나인 방법.
  15. 제8항 내지 제14항 중 어느 한 항에 따른 방법을 수행하기 위한 컴퓨터 실행가능 명령어들이 저장된 컴퓨터 판독가능 매체.
KR1020060118823A 2005-12-22 2006-11-29 미러링된 로크 캐시들을 사용한 데이터 전파 KR100861691B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/315,465 US7523260B2 (en) 2005-12-22 2005-12-22 Propagating data using mirrored lock caches
US11/315,465 2005-12-22

Publications (2)

Publication Number Publication Date
KR20070066865A KR20070066865A (ko) 2007-06-27
KR100861691B1 true KR100861691B1 (ko) 2008-10-06

Family

ID=38184630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060118823A KR100861691B1 (ko) 2005-12-22 2006-11-29 미러링된 로크 캐시들을 사용한 데이터 전파

Country Status (3)

Country Link
US (1) US7523260B2 (ko)
KR (1) KR100861691B1 (ko)
CN (1) CN100487674C (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844862B1 (en) * 2006-03-23 2010-11-30 Azul Systems, Inc. Detecting software race conditions
US7761434B2 (en) * 2007-11-19 2010-07-20 Red Hat, Inc. Multiversion concurrency control in in-memory tree-based data structures
US8255909B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US9170864B2 (en) 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
US8433845B2 (en) * 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
US9417905B2 (en) 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
WO2012015766A2 (en) * 2010-07-28 2012-02-02 Rambus Inc. Cache memory that supports tagless addressing
US9280396B2 (en) * 2012-11-01 2016-03-08 Netapp, Inc. Lock state synchronization for non-disruptive persistent operation
US9542414B1 (en) * 2013-01-11 2017-01-10 Netapp, Inc. Lock state reconstruction for non-disruptive persistent operation
US9037799B2 (en) 2013-02-11 2015-05-19 Avago Technologies General Ip (Singapore) Pte Ltd Rebuild of redundant secondary storage cache
US10146788B1 (en) * 2014-10-10 2018-12-04 Google Llc Combined mirroring and caching network file system
US10671565B2 (en) 2015-04-24 2020-06-02 Quest Software Inc. Partitioning target data to improve data replication performance
US9658794B2 (en) 2015-05-08 2017-05-23 Sonicwall Inc. Two stage memory allocation using a cache
US10339064B2 (en) * 2017-03-29 2019-07-02 International Business Machines Corporation Hot cache line arbitration
US10929199B2 (en) * 2018-07-02 2021-02-23 International Business Machines Corporation Memory lock serialization
CN111124993B (zh) * 2018-10-31 2023-09-01 伊姆西Ip控股有限责任公司 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品
CN112130904B (zh) * 2020-09-22 2024-04-30 黑芝麻智能科技(上海)有限公司 处理系统、处理器间通信方法、以及共享资源管理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5353425A (en) 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US6047358A (en) 1997-10-31 2000-04-04 Philips Electronics North America Corporation Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups
KR20010011204A (ko) * 1999-07-26 2001-02-15 윤종용 캐쉬미러링을 통한 레이드 장애극복 방법 및 장치
US6516384B1 (en) 1999-12-30 2003-02-04 Intel Corporation Method and apparatus to perform a round robin and locking cache replacement scheme

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0362366B1 (en) 1988-04-01 1995-09-13 Digital Equipment Corporation Instruction cache flush-on-rei control
US5832534A (en) 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
US5678020A (en) 1994-01-04 1997-10-14 Intel Corporation Memory subsystem wherein a single processor chip controls multiple cache memory chips
JP2776759B2 (ja) * 1995-04-14 1998-07-16 甲府日本電気株式会社 ロックリクエスト制御装置
US6202125B1 (en) 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US6230230B1 (en) * 1998-12-03 2001-05-08 Sun Microsystems, Inc. Elimination of traps and atomics in thread synchronization
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6760272B2 (en) 2000-12-07 2004-07-06 International Business Machines Corporation Method and system for supporting multiple cache configurations
US6839816B2 (en) 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5353425A (en) 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US6047358A (en) 1997-10-31 2000-04-04 Philips Electronics North America Corporation Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups
KR20010011204A (ko) * 1999-07-26 2001-02-15 윤종용 캐쉬미러링을 통한 레이드 장애극복 방법 및 장치
US6516384B1 (en) 1999-12-30 2003-02-04 Intel Corporation Method and apparatus to perform a round robin and locking cache replacement scheme

Also Published As

Publication number Publication date
US20070150665A1 (en) 2007-06-28
CN100487674C (zh) 2009-05-13
CN1987828A (zh) 2007-06-27
US7523260B2 (en) 2009-04-21
KR20070066865A (ko) 2007-06-27

Similar Documents

Publication Publication Date Title
KR100861691B1 (ko) 미러링된 로크 캐시들을 사용한 데이터 전파
US9064330B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
JP3431824B2 (ja) アクセス方法及び処理装置
US6662289B1 (en) Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems
US7774645B1 (en) Techniques for mirroring data within a shared virtual memory system
US20080005504A1 (en) Global overflow method for virtualized transactional memory
EP0608622A1 (en) Multiprocessor system with multilevel caches
US9892039B2 (en) Non-temporal write combining using cache resources
US7409500B2 (en) Systems and methods for employing speculative fills
JP3629511B2 (ja) 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム
US6772298B2 (en) Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
US6996693B2 (en) High speed memory cloning facility via a source/destination switching mechanism
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
US6647468B1 (en) Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment
US10754791B2 (en) Software translation prefetch instructions
US6986013B2 (en) Imprecise cache line protection mechanism during a memory clone operation
US6915390B2 (en) High speed memory cloning facility via a coherently done mechanism
US6986011B2 (en) High speed memory cloner within a data processing system
JP2022549095A (ja) キャッシュ禁止書き込みオペレーション
JP4965974B2 (ja) 半導体集積回路装置
US6928524B2 (en) Data processing system with naked cache line write operations
WO2023010975A1 (en) Data processing system having masters that adapt to agents with differing retry behaviors
JP2019533239A (ja) アトミックセットのデータアクセスを提供するための装置および方法
JP2008123333A5 (ko)

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
LAPS Lapse due to unpaid annual fee