KR20080030496A - 공유 메모리 시스템 내의 메모리 운영 - Google Patents

공유 메모리 시스템 내의 메모리 운영 Download PDF

Info

Publication number
KR20080030496A
KR20080030496A KR1020070096972A KR20070096972A KR20080030496A KR 20080030496 A KR20080030496 A KR 20080030496A KR 1020070096972 A KR1020070096972 A KR 1020070096972A KR 20070096972 A KR20070096972 A KR 20070096972A KR 20080030496 A KR20080030496 A KR 20080030496A
Authority
KR
South Korea
Prior art keywords
soc
memory
memory location
local
remote
Prior art date
Application number
KR1020070096972A
Other languages
English (en)
Other versions
KR100952589B1 (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 KR20080030496A publication Critical patent/KR20080030496A/ko
Application granted granted Critical
Publication of KR100952589B1 publication Critical patent/KR100952589B1/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
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

분산 공유 메모리 시스템의 일부인 시스템 온 칩에서 캐시 일관성을 유지하기 위한 방법들, 시스템들 및 컴퓨터 프로그램 제품들이 개시된다. 국부 컨트롤러 및 온칩 메모리를 포함하는 국부 SOC 유닛이 제공된다. 메모리 위치에 접근하기 위한 원격 SOC의 원격 컨트롤러로부터의 요청 수신에 응답하여, 이 국부 컨트롤러가, 국부 SOC가 요청된 메모리 위치의 독점권을 갖는지를 결정하고, 이 국부 SOC가 메모리 위치의 독점권을 가지면 메모리 위치로부터 데이터를 전송하고, 이 원격 SOC를 메모리 위치로부터 데이터를 요청한 것으로서 식별하는 엔트리를 온칩 메모리에 저장한다. 이 엔트리는 원격 SOC로부터의 요청이 메모리 위치의 독점권에 대한 것인지를 특정한다. 이 엔트리는 또한 원격 SOC를 리퀘스터로 식별하는 필드를 포함한다. 요청된 메모리 위치는 국부 SOC 유닛의 외부 또는 내부에 있을 수 있다.

Description

공유 메모리 시스템 내의 메모리 운영{MEMORY MANAGEMENT IN A SHARED MEMORY SYSTEM}
본 발명은 일반적으로 메모리 시스템에 관한 것으로, 더욱 상세하게는, 메모리 운영(management)에 관한 것이다.
시스템-온-칩(system-on-chip; SOC) 유닛은 전형적으로 단일 칩 상에 전자 시스템의 다중 컴포넌트들을 집적한다. 그것은 예를 들어, 디지털, 아날로그, 혼합 신호, 및 종종 무선주파수 기능들을 하나의 칩 상에 모두 포함할 수 있다. SOC 유닛의 전형적인 어플리케이션은 임베디드(embedded) 시스템의 영역 내에 있다. 그러나 대부분의 SOC 유닛들은 특정 어플리케이션에 대해 특유하며, 다른 어플리케이션 또는 다른 구성에 사용될 경우, 몇몇 컴포넌트들이 사용되지 않는다. 예를 들어, SOC 내의 노드(node) 컨트롤러 및 온칩(on-chip) 메모리는 하나의 구성에서 이용될 수 있으나, 다른 구성에서는 활동하지 않는 상태로 남아 있는다. SOC 유닛 이외에, 일반적인 메모리 시스템들은 단일 어플리케이션용으로 구성되고 다른 구성에서는 사용하기에 적합하지 않다.
따라서, 위에서 언급된 결함들을 극복하기 위한 방법들 및 시스템들이 요구 된다.
본 발명이 해결하고자 하는 과제는 다중 어플리케이션용으로 사용될 수 있는 메모리 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 과제는 캐시 일관성을 유지하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품을 제공하는 것이다.
분산 공유 메모리(distributed shared memory; DSM) 시스템의 일부인 시스템-온-칩(SOC)에서 캐시 일관성(cache coherency)을 유지하기 위한 방법들, 시스템들 및 컴퓨터 프로그램 제품들이 여기에서 개시된다. 일 실시예에 있어서, 국부 SOC 유닛은 국부 컨트롤러 및 온칩(on-chip) 메모리를 포함한다. 메모리 위치에 접근하기 위한 원격(remote) SOC의 원격 컨트롤러로부터의 요청 수신에 응답하여, 상기 국부 컨트롤러는 상기 국부 SOC가 상기 요청된 메모리 위치의 독점권을 갖는지를 결정하고, 상기 국부 SOC가 상기 메모리 위치의 독점권을 가지면 상기 메모리 위치로부터 데이터를 전송하고, 상기 원격 SOC를 상기 메모리 위치로부터 데이터를 요청한 것으로서 식별하는 엔트리(entry)를 상기 온칩 메모리에 저장한다. 상기 엔트리는 상기 원격 SOC의 요청이 상기 메모리 위치의 독점권에 대한 것인지를 특정한다. 상기 엔트리는 또한 상기 원격 SOC를 상기 리퀘스터(requester)로서 식별하는 필드(field)를 포함한다. 상기 요청된 메모리 위치는 상기 국부 SOC 유닛의 외부 또는 내부에 있을 수 있다.
공유 메모리 시스템의 일부인 국부 SOC에서 캐시 일관성을 유지하는 방법이 제공된다. 이 방법은 원격 SOC의 원격 컨트롤러로부터 메모리 위치에 접근하기 위한 요청을 수신하고, 상기 요청된 메모리 위치로부터 상기 원격 SOC의 상기 원격 컨트롤러에 요청된 데이터를 전송하는 것을 포함한다. 이 방법은 상기 원격 SOC를 상기 데이터를 요청한 것으로서 식별하는 엔트리를 국부 온칩 메모리에 저장하는 것을 더 포함한다.
본 발명의 일 태양에 따르면, 국부 시스템 온 칩(SOC)이 제공되는데, 이것은
국부 컨트롤러; 및
온칩 메모리를 포함하고,
메모리 위치에 접근하기 위한 원격 SOC의 원격 컨트롤러로부터의 요청을 수신한 것에 응답하여, 상기 국부 컨트롤러가, 상기 국부 SOC가 상기 메모리 위치의 독점권을 갖는지를 결정하고, 상기 국부 SOC가 상기 메모리 위치의 독점권을 가지면 상기 메모리 위치로부터 데이터를 전송하고, 상기 원격 SOC를 상기 요청을 발생시킨 것으로서 식별하는 엔트리를 상기 온칩 메모리에 저장한다.
바람직하게, 상기 엔트리는 상기 요청이 상기 메모리 위치의 독점권에 대한 것인지를 특정한다.
바람직하게, 상기 엔트리 내의 특정 필드(field)가 상기 원격 SOC를 식별하는 데이터를 저장한다.
바람직하게, 상기 필드의 각 비트가 다중 SOC들을 포함하는 공유 메모리 시스템 내의 어느 SOC에 대응하고, 그 결과, 어느 비트가 1로 설정되면, 그것은 그 비트에 대응하는 상기 SOC를 상기 메모리 위치에 접근을 요청한 것으로서 지시한다.
바람직하게, 상기 유닛은 다중 프로세서들 및 상기 국부 SOC의 외부에 있는 메모리에 결합된 메모리 컨트롤러를 더 포함한다.
바람직하게, 상기 국부 SOC 및 원격 SOC는 CC-NUMA(Cache Coherent Non Uniform Memory Access) 내의 SCI(Scalable Coherent Interface)를 통해 연결된다.
바람직하게, 상기 온칩 메모리는 SRAM(Static Random Access Memory)이고, 상기 국부 컨트롤러는 노드 컨트롤러이다.
본 발명의 일 태양에 따르면, 공유 메모리 시스템의 부분인 국부 시스템 온칩(SOC) 내에서 메모리 일관성(coherency)을 유지하기 위한 방법이 제공되는데, 이 방법은
원격 SOC의 원격 컨트롤러로부터 메모리 위치에 접근하기 위한 요청을 수신하고;
상기 메모리 위치로부터 상기 원격 SOC의 상기 원격 컨트롤러에 요청된 데이터를 전송하고;
상기 원격 SOC를 식별하는 엔트리를 국부 온칩 메모리에 저장하는 것을 포함한다.
바람직하게, 상기 요청은 상기 원격 SOC가 상기 메모리 위치에 자정된 상기 데이터의 복제본을 원격에서 변형하도록 하는 독점권 요청이다.
바람직하게, 국부 노드 컨트롤러를 통해 상기 요청을 수신하는 것을 더 포함 한다.
바람직하게, 상기 국부 온칩 메모리는 SRAM이다.
바람직하게, 상기 메모리 위치의 어드레스는 상기 공유 메모리 시스템 내의 모든 저장 유닛들의 메모리 어드레스들을 포함하는 공유 전역 메모리 공간(global memory space)의 부분이다.
바람직하게, 상기 엔트리는 상기 메모리 위치에 접근하기 위한 상기 요청이 상기 메모리 위치로부터 데이터를 읽기 위한 것인지 또는 상기 메모리 위치의 독점권을 갖는지를 지시하는 필드를 포함한다.
바람직하게, 상기 엔트리는 상기 엔트리가 유효한 데이터를 포함하는지를 지시하는 필드를 포함한다.
바람직하게, 상기 엔트리는 상기 요청된 메모리 위치의 주소 또는 부분적인 주소를 저장하는 필드를 포함한다.
바람직하게, 상기 부분적인 주소는 상기 요청된 메모리 위치에 대한 태그(tag)이다.
바람직하게, 상기 엔트리 내의 필드는 상기 원격 SOC를 식별하는 상기 데이터를 저장한다.
바람직하게, 상기 필드의 각 비트가 상기 공유 메모리 시스템 내의 어느 SOC에 대응하고, 그 결과, 어느 비트가 제1의 값으로 설정되면, 그것은 그 비트에 대응하는 SOC가 상기 메모리 위치에 접근하기 위한 상기 요청을 발생시켰다는 것을 지시한다.
바람직하게, 이 방법은 상기 전송 단계 전에 상기 국부 SOC가 요청된 데이터의 독점권을 갖는지를 결정하는 것을 더 포함한다.
바람직하게, 상기 국부 SOC 및 원격 SOC는 CC-NUMA(Cache Coherent Non Uniform Memory Access) 내의 SCI(Scalable Coherent Interface)를 통해 연결된다.
이들 및 다른 목적들, 장점들 및 특징들이 본 발명의 다음의 상세한 설명으로 즉시 분명해질 것이다. 위 과제해결수단 및 요약 부분들은 하나 또는 그 이상을 언급할 수 있으나, 본 발명자(들)에 의해 숙고된 본 발명의 모든 구체적인 실시예들을 언급하는 것은 아니다.
본 발명의 실시예들에 따르면, 다양한 어플리케이션에 사용될 수 있는 적합한 메모리를 위한 방법, 시스템 및 컴퓨터 프로그램 제품이 제공될 수 있다. 또한, 캐시 일관성을 유지하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품을 제공할 수 있다.
본 발명이 이제 첨부된 도면들을 참조하여 설명된다. 도면들에서, 유사한 참조 번호들은 동일 또는 기능적으로 유사한 요소들을 지시한다. 추가로, 참조 번호에서 가장 좌측의 숫자들은 그 참조 번호가 최초로 등장하는 도면 번호를 나타낸다.
<개설>
다목적에 적합한 메모리를 위한 방법들 및 시스템들이 여기서 설명된다. 특 히, SOC의 온칩 메모리가 다양한 어플리케이션에서 다양한 목적들에 기여하도록 하는 방법들 및 시스템들이 설명된다.
본 명세서는 본 발명의 특징들을 포함하는 하나 또는 그 이상의 실시예들을 개시한다. 개시된 실시예(들)는 단지 본 발명을 예시한다. 본 발명의 범위는 개시된 실시예(들)에 제한되지 않는다. 본 발명은 여기에 부속된 청구범위에 의해 정의된다.
본 명세서에서 "일 실시예", "하나의 실시예", "하나의 구체적인 실시예" 등의 표현은, 설명되는 실시예가 하나의 특정한 특징(feature), 구조(structure) 또는 특성(characteristic)을 포함할 수 있지만, 모든 실시예가 그 특정한 특징, 구조 또는 특성을 반드시 포함해야 하는 것은 아니라는 점을 뜻한다. 또한, 그러한 문구가 반드시 동일한 실시예를 지시하는 것도 아니다. 나아가, 어떤 특정한 특징, 구조 또는 특성이 어느 실시예에 관련하여 설명될 경우에, 그러한 특징, 구조 또는 특성을 다른 실시예들과 관련하여 유효하게 하는 것은 그것이 명백하게 기재되었거나 또는 그렇지 않았거나를 불문하고, 당해 기술 분야에 숙련된 자의 지식 범위에 포함된다.
<구체적인 시스템 온 칩(SOC)>
본 발명의 실시예들을 상세하게 설명하기에 앞서, 본 발명이 구현될 수 있는 구체적인 환경을 설명하는 것이 도움이 된다. 구체적인 환경에 있어서, 본 발명의 실시예들은 멀티-프로세서(multi-processor) 시스템 온 칩(SOC) 상에 구현되는데, 이것은 온칩(on-chip) 메모리를 포함하고 외부 메모리(external memory)에 결합된다. 도 1은 k 프로세서들(110a-k), 메모리 컨트롤러(MC, 102a), 노드 컨트롤러(NC, 104a), 온칩 메모리(OCM, 108a) 및 외부 메모리(EM, 106a)를 포함하는 SOC(100a)를 예시한다. 다른 실시예에 있어서, 메모리 컨트롤러(102a) 및 노드 컨트롤러(104a)는 메모리 컨트롤러(102a)와 노드 컨트롤러(104a)의 기능을 결합한 글로벌(global) 컨트롤러(112a)로 결합될 수 있다. 프로세서들(11a-k)은 각각 연관된 캐시(cache, 도시하지 않음)를 포함할 수 있다. 프로세서들(110a-k)은 동시 멀티-프로세싱(simultaneous multi-processing) 구성으로 사용될 수 있다. 프로세서들(110a-k)은 버스(bus, 114a)와 같은 상호접속 버스 또는 고속 채널(high-speed channel)로 함께 연결될 수 있으며, 작업량을 공유하거나 개별적으로 작동할 수 있다. 또한, 프로세서들(110a-k)은 어떤 프로세서가 작동하지 않으면 다른 프로세서가 그 대신 이어받도록 구성될 수 있다. 메모리 컨트롤러(114a)는 전형적으로 외부 메모리(106a)를 제어하기 위해 사용되고 또한 캐시 컨트롤러(들)(도시하지 않음) 부재시 프로세서들(110a-k)의 캐시들을 제어하기 위해 사용될 수 있다. 전형적으로, 메모리 컨트롤러(114a)는 EM(106a) 및 프로세서들(110a-k)의 캐시들(도시하지 않음)과 같은 메모리로부터 정보의 읽기 및 쓰기를 제어하기 위해 필요한 신호들을 발생시키는 어드레스 디코더(도시하지 않음)를 포함한다. MC(114a)는 또한 SOC(100a)의 다른 컴포넌트들과 외부 메모리(106a)를 예컨대 버스(114a)를 통해 연결한다. NC(104a)는 프로세서들(110a-k) 사이에서 통신하기 위해 사용된다. NC(104a)는 또한 다른 SOC 유닛들 또는 다른 SOC 유닛들 상의 프로세서들과 통신하기 위한 인터 페이스로 사용될 수 있다. 노드 컨트롤러(104a)는 SOC 사이의 빠른 통신을 가능하게 하는 PCI-E 또는 HT와 같은 고속 버스(도시하지 않음)를 통해 다른 SOC 유닛들에 결합될 수 있다. 노드 컨트롤러(114a)는 또한 OCM(108a)으로부터 정보의 읽기 및 쓰기를 제어하기 위해 필요한 신호들을 발생시키는 어드레스 디코더(도시하지 않음)를 포함할 수 있다. 일 실시예에 있어서, NC(104a)는 다양한 목적들을 위해 OCM(108a)을 구성 및 사용하기 위해 사용될 수 있다. 예를 들어, SOC(100a)가 클러스터(cluster) 구성 내에 있다면, OCM(108a)은 EM(106a)의 완전성 및 안전을 유지하면서 클러스터 내의 SOC 유닛들 사이의 통신을 위한 메시지 메일박스(message mailbox)로서 사용될 수 있다. CC-NUMA(cache coherent non-uniform memory access) 시스템에 있어서, OCM(108a)은 캐시 일관성(cache coherency)을 유지하기 위해 사용될 수 있다. OCM(108a)은 또한 EM(106a) 내의 메모리 위치들에 대한 록들(locks)을 저장하도록 구성될 수 있다. OCM(108a)은 또한 전역 주소 공간(global address space)의 일부로서, 고속 접근 메모리(fast access memory)로서 사용될 수 있다. OCM(108a)의 이용은 NC(104a)에 의해 구성되고 제어된다. 또 다른 실시예에 있어서, 글로벌 컨트롤러(112a) 또는 MC(102a)가 요구되는 OCM(108a)을 구성하고 제어할 수 있다.
예시를 분명하고 용이하게 하기 위해, SOC(100a)의 모든 기능 블록들이 상세하게 예시되지 않는데, 이들 항목들은 당해 기술분야에서 통상의 기술을 가진 자들에게 알려져 있기 때문이다. 더욱이, SOC(100a)의 유사하거나 대용의 기능 블록들이 본 발명의 범위를 벗어나지 않으면서 본 발명의 실시예들을 구현하기 위해 사용 될 수 있다. 본 발명의 실시예들에 따른 OCM(108a) 및 NC(104a)의 구체적인 구성들이 아래에서 더 자세하게 설명된다. 이러한 구체적인 구성들은 OCM(108a) 및 NC(104a)에 제한되지 않으며, 다른 환경 내에서 사용될 수 있다. 나아가, 여기에 설명되는 실시예들은, 관련 기술 분야(들)에서 숙련된 자들에 분명한 바와 같이, 개조되거나 변형될 수 있다.
<전역 주소 공간 운영(Global Address Space Management)>
도 2a는 본 발명의 일 실시예에 따른 SOC(100a) 및 전역 주소 공간(200)의 블록 다이어그램이다. 전역 주소 공간(200)은 메모리 위치들에 접근하기 위해 프로세서들(110a-k)에 의해 사용되는 어드레스 범위를 나타낸다. 프로세서들의 수(k)는 임의적이다. 전형적으로, 프로세서들(110a-k)에 의해 이용되는 주소 공간은 단지 EM(106a)의 외부 메모리 어드레스들(202)만을 포함할 수 있으며, 모든 메모리 접근은 메모리 컨트롤러(102a)에 의해 처리된다. 전형적인 구성에 있어서, OCM(108a)은 분리된 주소 공간에 속할 수 있다. 본 실시예에 있어서, OCM(108a)의 OCM 주소들(204)은 EM(106a)의 외부 메모리 어드레스(202)를 포함하는 전역 주소 공간(200)의 일부이다. 일 실시예에 있어서, 전역 주소 공간(200) 내의 OCM 어드레스들(204)은 노드 컨트롤러(104a) 내의 어드레스 디코더(도시하지 않음)에 의해 디코딩되고 반면에 EM 어드레스들(202)은 메모리 컨트롤러(102a) 내의 어드레스 디코더(도시하지 않음)에 의해 디코딩된다. 전역 주소 공간의 사용은 분리된 주소 공간으로부터 메모리 어드레스들을 할당하고 디코딩할 필요가 없어 더 빠른 OCM(108a)의 이용을 가능하게 한다. 또 다른 장점은 더 큰 인접 주소 공간이다. 본 실시예에 따른 전역 주소 공간은 0부터 2Z까지 연장하는데, 0부터 2X까지는 EM 어드레스들(202)이고 2X부터 2Z까지는 OCM 어드레스들(204)이다(여기서, X 및 Z은 양수들이고 Z가 X보다 크다). 예를 들어, EM(106a)의 크기가 1기가바이트(GB)이면, EM 어드레스들은 0 내지 (230-1)의 범위이다(즉, X가 30이다). OCM(108a)의 크기가 4메가바이트(MB)이면, 전역 주소 공간 내의 OCM 어드레스들은 230 내지 (232-1)의 범위일 것이다(즉, Z가 32이다). 그러므로, EM 어드레스들(202)과 OCM 어드레스들(204)을 조합함으로써, 전역 주소들(200)은 0 내지 (230-1) 대신에 0 내지 (232-1)의 범위이다. 또한, 몇몇 어플리케이션들이 고속 메모리 접근을 요구하면, 그것들은 2X 내지 (2Z-1)의 범위 내, 또는 위 예에서처럼 230 내지 (232-1)의 범위 내의 주소들을 이용함으로써 OCM(108a)을 이용할 수 있다.
도 2a에 도시된 바와 같이, 메모리 컨트롤러(102a) 및 노드 컨트롤러(104a)는 예컨대 프로세서들(110a-k)로부터 연관된 어드레스들과 함께 읽기 또는 쓰기 요청을 수신한다. 노드 컨트롤러(104a)는 상기 주소가 2X 내지 (2Z-1)의 범위 내에 들어 있는지를 결정한다. 주소가 2X 내지 (2Z-1)의 범위 내에 들어 있으면, 노드 컨트롤러(104a)는 공급된 주소를 디코딩하고 OCM(108a) 내의 대응하는 메모리 위치에 접근함으로써 요청된 읽기 또는 쓰기 요청을 완성한다. 주소가 0 내지 (2X-1)의 범위 내에 들어 있으면, 메모리 컨트롤러(102a)가 공급된 주소를 디코딩하고 외부 메모리(106a) 내의 대응하는 메모리 위치에 접근함으로써 상기 요청된 읽기 또는 쓰기 요청을 수행한다.
도 2b는 본 발명의 일 실시예에 따른 전역 주소 공간을 사용하여 SOC 내에서 수행되는 단계들을 보여주는 구체적인 흐름도(206)를 예시한다. 일 실시예에 있어서, 상기 단계들은 SOC 유닛 내의 노드 컨트롤러에 의해 수행된다.
단계(208)에서, 메모리 위치에 접근하기 위한 요청이 수신된다. 상기 요청은 메모리 위치의 어드레스, 그것이 읽기 또는 쓰기 요청인지 여부 및 쓰기 요청인 경우 쓰일 데이터를 포함한다.
단계(210)에서, 단계(208)에서 수신된 상기 요청 내의 주소가 온칩 메모리 위치에 대응하는지가 결정된다.
단계(212)에서, 상기 주소가 온칩 메모리 위치에 대응하는 것으로 단계(210)에서 결정되면, 상기 주소가 디코딩된다. 상기 주소는 전형적으로 노드 컨트롤러 내의 어드레스 디코더에 의해 디코딩된다. 상기 주소 디코딩은 상기 온칩 메모리에 접근하기 위해 요구되는 전기 신호들로의 상기 주소의 변환을 가져온다.
단계(214)에서, 단계(212)에서 디코딩된 주소에 기초하여, 메모리 위치가 접근되고, 단계(208)에서 수신된 지시에 의해 특정된 대로, 데이터가 검색 또는 저장된다.
선택사양의 단계(216)에서, 단계(208)에서 수신된 요청이 메모리로부터 데이터를 읽기 위한 것이었으며, 요청하는 서비스(service)에 상기 요청된 데이터가 공급된다. 일 실시예에 있어서, 단계(208)에서 수신된 요청이 쓰기 요청이었으면, 쓰기가 완료된 후 상기 요청하는 서비스에 쓰기 확인이 제공될 수 있다.
단계(218)에서, 상기 주소가 외부 메모리 위치에 대응하는 것으로 단계(210)에서 결정되면, 상기 요청이 메모리 컨트롤러로 전달된다. 메모리 컨트롤러 내의 어드레스 디코더는 상기 어드레스를 디코딩하고, 상기 외부 메모리 위치에 접근하고, 단계(208)에서 수신된 메모리 접근 요청의 요구사항에 따라, 요청된 데이터 또는 쓰기 확인을 제공한다.
노드 컨트롤러에 대한 공유 메모리 구성을 설명하는 구체적인 실시예들이 이하에서 설명된다.
<구체적인 공유 메모리 시스템>
도 3a는 구체적인 공유 메모리 시스템(300)을 예시한다. 일 실시예에 있어서, 공유 메모리 시스템(300)은 CC-NUMA(cache coherent Non-Uniform Memory Access) 시스템이다. 시스템(300)은 PCI-E 또는 HT와 같은 고속 상호접속(302)을 통해 연결된 n개의 SOC 유닛들(100a-n)을 포함한다. SOC 유닛들의 수 n 및 각 SOC 내의 프로세서들의 수는 임의적이다. 일 실시예에 있어서, 노드 컨트롤러들(104a-n)이 상호접속(302)을 통해 결합되고 이에 따라 SOC들(100a-j) 사이의 통신을 위한 인터페이스를 제공한다.
프로세서들(100a-n)은 전역 주소 공간을 공유한다. 외부 메모리(106a-n) 및/또는 각 SOC 내의 프로세서들의 캐시들은 전역 주소 공간으로 매핑된다. 본 발명의 실시예들에 있어서, OCM(108a-n)은 상기 전역 주소 공간으로 매핑되지 않는다. 공유 메모리 시스템(300)에서, 다중 SOC들 내의 다중 프로세서들에 의해 공유된 메모리에 걸쳐 캐시 일관성(cache coherency)을 유지하는 것은 느리고 프로세서들에 대한 상당한 처리(processing) 오버헤드(overhead)를 갖는다. 아래에서 설명되는 본 발명의 실시예들은 시스템(300) 내의 공유된 데이터의 위치를 찾기 위한 캐시 디렉토리로서 NC(104)를 통한 OCM(108)을 이용함으로써 새로운 해결책을 제공한다. 아래에 설명된 바와 같이, 각 OCM(108a-n)은 그것의 대응하는 SOC(100a-n)에 의해 시스템(300) 내의 공유된 데이터를 찾기 위한 디렉토리로서 사용된다. OCM(108a)은 공유된 메모리 위치에 대한 엔트리들을 저장함으로써 공유된 데이터의 흔적을 남긴다. 일 실시예에 있어서, 각 엔트리는, 제한되지는 않으나, 다음 필드들을 포함한다:
원격 노드(remote node)가 상기 데이터의 유효한 복사본을 가지는지를 지시하기 위한 유효 필드(v);
상기 원격 노드에 전송된 데이터가 상기 원격 노드에 의해 변형되었는지, 즉 상기 원격 노드가 상기 데이터에 대해 "독점권"(exclusive ownership) 요청을 했는지를 지시하는 더티 필드(d);
요청된 국부(local) 메모리 위치를 확인하기 위한 태그(tag) 필드; 및
상기 메모리 위치로부터 데이터를 요청한 원격 SOC를 확인하기 위한 벡 터(vec) 필드. 예를 들어, vec는 각 비트가 시스템(300) 내의 SOC에 대응하는 다중 비트들을 포함할 수 있다. 도 3a의 예에서, SOC(100j)가 데이터를 요청했다면, vec 필드의 제j 비트가 1로 설정되어 SOC(100j)가 데이터를 요청했다는 것을 지시한다. 다른 실시예에 있어서, vec 필드의 제T 비트를 1로 설정함으로써 vec 필드 내에서 SOC(100j)의 프로세서(PT)가 상기 요청의 시발지(originator)로 지시될 수 있다.
도 3a를 참조하여 아래에서 제시된 예에 있어서, SOC(100a)는 EM(106a) 내의 국부 메모리 위치에 대응하는 국부 SOC로서 언급된다. 모든 다른 SOC들(100b-100n)은 원격 SOC들로 언급된다. OCM(108a) 내의 엔트리들은 SOC가 EM(106a) 내의 메모리 위치(B)에 대응하는 데이터의 복제본을 가지고 있는 트랙(track)을 유지하기 위해 사용된다. 시스템(300) 내에 있는 SOC들 만큼 시스템(300) 내의 메모리 위치(B) 내 데이터의 많은 복제본들이 있을 수 있다. 시스템(300)이 n개의 SOC들을 갖기 때문에, 메모리 위치(B) 내 데이터의 n개의 복제본이 시스템(300) 내에 존재할 수 있다. 데이터의 공유된 복제본은 같은 값을 갖는다. 어떤 SOC가 공유된 데이터를 갖는 메모리 위치를 변형하려고 할 때, 그것은 상기 메모리 위치의 독점을 획득해야 하고 다른 모든 캐시에 저장된(cached) 복제본들은 효력을 잃게 된다. 구체적인 경우들이 아래에 설명된다:
원격 SOC(100j)가 EM(106a) 내의 메모리 위치(B)에 대해 국부 SOC(100a)에 읽기 요청을 발할 때, 노드 컨트롤러(104a)는 메모리 위치(B)에 대응하는 엔트리가 더티(dirty) 비트 세트와 함께 OCM(108a) 내에 존재하는지를 확인한다. 이러한 엔 트리가 OCM(108a) 내에 존재하지 않으면, 국부 메모리(106a)는 유효값을 갖고, 노드 컨트롤러(104a)는 메모리(106a)로부터 요청하고 있는 원격 SOC(100j)에 데이터를 제공한다. 예컨대, SOC(100n) 내에 더티 복제본이 존재하면, 대응하는 더티 엔트리는 그 엔트리 내의 벡터 필드의 제n 비트가 1로 설정되어 OCM(108a) 내에 존재한다. 노드 컨트롤러(104a)는 위치(B)의 가장 최근의 데이터를 제공하기 위해 현재 오너(owner)인 SOC(100n)에 되쓰기(write-back) 명령을 발한다. SOC(100n)가 데이터를 돌려준 후, 노드 컨트롤러(104a)는 국부 외부 메모리(106a)에 상기 데이터를 다시 쓰고, 또한 요청하는 SOC(100j)에도 그것을 제공한다. OCM(108a) 엔트리는 상기 더티 비트가 0으로 재설정되고 상기 벡터 내의 제j 및 제n 비트가 1로 설정되도록 변형된다. 이는 SOC(100j) 및 SOC(100n)가 메모리 위치(B)의 공유된 깨끗한 데이터 복제본을 갖고 있다는 것을 의미한다. 그들의 값들은 EM(106a) 내의 메모리 복제본과 일치한다.
SOC(100a)의 국부 프로세서가 읽기 요청을 발할 때, OCM(108a) 내의 엔트리들이 확인된다. 원격 더티 복제본이 존재하지 않으면, 국부 메모리(106a)는 유효 복제본을 갖고, 노드 컨트롤러(104a)는 상기 데이터를 제공한다. 원격 더티 복제본이 존재하면, 노드 컨트롤러(104a)는 요청된 메모리 위치의 현재 SOC 오너(owner)에 되쓰기 요청을 발하고, 되돌아온 데이터에 의해 국부 메모리(106a)를 갱신하고, 상기 더티 비트를 0으로 재설정함으로써 대응하는 OCM(108a) 엔트리를 변형시킨다.
원격 SOC(100j)가 EM(106a) 내 메모리 위치(B)에 대해 국부 SOC(100a)에 쓰기 요청을 발할 때, 노드 컨트롤러(104a)는 SOC(100j)가 시스템(300) 내 메모리 위 치(B)의 하나의 그리고 오직 하나의 복제본을 가지고 있는 것을 확인하여 데이터 일관성을 확인한다. 노드 컨트롤러(104a)는 OCM(108a) 엔트리가 존재하는지를 검사한다. OCM(108a) 엔트리가 위치(B)에 대해 존재하지 않으면, 노드 컨트롤러(105a)는 국부 메모리 EM(106a)으로부터 요청하는 SOC(100j)에 데이터 복제본을 제공한다. OCM(108a) 디렉토리 엔트리가 존재하고 더티 비트가 설정되어 있지 않으면, 그것은 공유된 상태로 깨끗한 복제본들이 시스템(300) 내에 존재할 수 있음을 함축한다. 이 경우, 노드 컨트롤러(104a)에 의해 무효화 신호가 vec 엔트리 내 대응하는 비트가 1의 값을 갖는 SOC들에 전송된다. 이들 SOC들은 메모리 위치(B)의 국부적인 캐시에 저장된 복제본을 무효화하고 이 무효화를 완료한 후 국부 SOC(100a)에 확인(acknowledgement)을 전송할 것이다. 국부 SOC(100a)가 모든 무효화 확인들을 수집한다. 모든 원격 공유 복제본들이 무효화된 후, 국부 SOC 컨트롤러(104a)는 국부 메모리 EM(106a)으로부터 요청하는 SOC(100j)에 데이터 복제본을 제공한다.
OCM(108a) 엔트리가 존재하고 더티 비트가 상기 엔트리 내에 설정되어 있으면, 그것은 시스템(300) 내에 더티 복제본이 존재한다는 것을 함축한다. 현재 더티 복제본을 가지고 있는 SOC는 엔트리의 벡터 필드에서 값이 1인 비트에 의해 특정된다. 예를 들어, 제n 비트가 1이면, SOC(100n)가 현재의 오너(owner)이고 위치(B)의 더티 복제본을 갖는다. 이 경우, 노드 컨트롤러(104a)는 SOC(100n)에 플러시(flush) 명령을 발한다. 플러시 명령을 수신한 후, SOC(100n)는 그 데이터 복제본을 되돌려 보내고 그 복제본을 무효화시킨다. 이어서, 노드 컨트롤러(104a)는 SOC(100n)로부터 수신된 데이터 복제본을 요청하는 SOC(100j)로 전송한다. 이 경 우, OCM(108a) 엔트리는, 단지 SOC(100j)만이 더티 상태로 복제본을 갖도록, 즉, 상기 더티 비트가 설정되며 벡터 내의 단지 제j 비트만이 대응하는 OCM(108a) 엔트리 내에 설정되도록 갱신된다.
SOC(100a)의 국부 프로세서가 쓰기 요청을 발할 때, OCM(108a) 내의 엔트리들이 확인된다. 엔트리 또는 원격 더티 복제본이 존재하지 않으면, 국부 메모리(106a)가 유효한 복제본을 갖고, 노드 컨트롤러(104a)는 요구된 데이터를 제공한다. 원격 더티 복제본이 존재하면, 노드 컨트롤러(104a)는 현재 오너 SOC에 플러시(flush) 요청을 발한다. 원격 공유 복제본들이 존재하면, 노드 컨트롤러(104a)는 복제본을 가지고 있는 원격 SOC들에 무효화를 발한다. SOC(100a)는 이제 독점적인 복제본을 갖고, 시스템(300) 내의 다른 SOC는 EM(106a) 내의 접근된 메모리 위치(B)의 데이터 복제본을 갖지 않는다.
<공유 메모리 운영(Shared Memory Management)>
도 3b는 본 발명의 일 실시예에 따른 공유 메모리 시스템(300) 내에서 읽기 요청에 관한 메모리 일관성을 유지하는 예를 예시한다. 도 3b에 도시된 바와 같이, NC(104j)는 EM(106a) 내의 메모리 위치(A)를 읽으라는 요청을 NC(104a)에 전송한다. 상기 요청은 SOC(100j) 내의 프로세서, 예컨대 프로세서 PR+1(110r+1)로부터 기원할 수 있다. 이 요청은 노드 컨트롤러(104j)로부터 메시지 또는 신호를 통해 노드 컨트롤러(104a)에 전송될 수 있다. NC(104j)로부터 메모리 위치(A)를 읽으라는 요 청 수신에 응답하여, NC(104a)는 메모리 위치(A)를 읽고 버스(302)를 통해 NC(104j)에 데이터를 전송한다. 공유된 데이터의 메모리 일관성을 유지하기 위해, NC(104a)는 다른 SOC 유닛들에 저장된 메모리 요청 위치의 흔적을 남긴다. 현재 예에 있어서, NC(104a)는 OCM(108a)에 엔트리(304)를 저장한다. SOC(100j)가 데이터를 요청했으므로, 엔트리(304) 내 vec 필드의 제j 비트가 1로 설정되어 SOC(100j)가 데이터를 요청했음을 지시한다. 다른 실시예에 있어서, vec 필드의 제T 비트를 1로 설정함으로써 SOC(100j)의 프로세서 PT가 vec 필드 내에서 상기 요청의 시발지로 지시될 수 있다. 도 3b에 도시된 예에 있어서, 엔트리가 유효함을 지시하기 위해 v가 1로 설정되고, SOC(100j)의 프로세서 PR+1가 읽기 요청을 했고 메모리 위치(A)로부터 얻은 데이터를 변형시키지 않으므로 d는 0으로 설정된다. 메모리 위치(A)로부터 데이터가 요청되었으므로, 태그(tag) 필드는 A로 설정된다. 또 다른 실시예에 있어서, 태그 필드 내에 저장된 메모리 위치의 어드레스는 엔트리(304) 내의 공간을 보존하기 위해 부분적인 어드레스로 단축될 수 있다.
도 3c1은 본 발명의 일 실시예에 따른 공유 메모리 시스템(300) 내 독점 요청에 대한 메모리 일관성을 유지하는 예를 예시한다.
도 3c1에 도시된 바와 같이, SOC(100j)는 EM(106a) 내 메모리 위치(B)에 있는 데이터의 독점 요청을 전송한다. 독점 요청은 SOC(100j)가 메모리 위치(B)로부터 상기 데이터를 검색하고 그것을 변형시키는 것을 허용한다. 그러므로, 메모리 위치(B)에 있는 복제본은 폐기될 것이다. 상기 요청은 SOC(100j) 내의 프로세서, 예컨대 프로세서 PT에서 기원할 수 있다. 상기 요청은 메시지에 의해 NC(104j)로부터 상호접속(302)을 통해 NC(104a)로 전송될 수 있다. SOC(100j) 내의 노드 컨트롤러(104j)로부터 메모리 위치(B)의 독점에 대한 요청 수신에 응답하여, SOC(100a) 내의 노드 컨트롤러(104a)는 상호접속(302)을 통해 메모리 위치(B)로부터 노드 컨트롤러(104j)로 데이터를 전송한다. 일관성을 유지하기 위해, 노드 컨트롤러(104a)는 OCM(108a)에 엔트리(306)를 저장함으로써 메모리 위치(B)에 대응하는 데이터의 위치의 흔적을 남긴다.
도 3c1에 도시된 본 예에 있어서, 상기 엔트리가 유효함을 지시하기 위해 v가 1로 설정되고, 독점이 요청되었고 SOC(100a)의 메모리 위치(B) 내의 복제본이 최신의 복제본이 아닐 것이므로 d가 1로 설정되고, 메모리 위치(B)로부터 데이터가 요청되었으므로 태그는 B로 설정된다. 위 예에 있어서, 상기 요청이 SOC(100j)로부터 기원했으므로, vec 필드의 제j 비트가 1로 설정된다. 다른 실시예에 있어서, vec 필드의 제T 비트를 1로 설정함으로써 SOC(100j)의 프로세서 PT가 vec 필드 내에서 상기 요청의 시발지로 지시될 수 있다. 프로세스, 스레드(thread) 또는 SOC(100a) 내의 프로세서가 메모리(B)에 있었던 데이터에 접근하려면, 리퀘스터(requester)는 도 3c2에 도시되고 아래에 설명된 바와 같이 SOC(100j)로부터 그것을 요청함으로써 상기 데이터를 불러낸다.
도 3c2는 위 예에서 SOC(100j) 내의 NC(104j)에 의해 독점 요청된 EM(106a) 내 메모리 위치(B)에 대응하는 데이터를 검색하는 것을 예시한다.
도 3c2에 도시된 예에 있어서, 프로세서 PK는 메모리 위치(B)에 있는 데이터를 요청한다. 노드 컨트롤러(100a)는 OCM(108a) 내에서 태그(B)에 대응하여 엔트리(306)를 조사한다. 도 3c1에 도시된 앞서의 예에 있어서, 메모리 위치(B)에 있는 데이터의 독점이 SOC(100j)의 프로세서 PT에 의해 요청되었으므로, NC(104a)는 EM(106a) 내의 메모리 위치(B)에 대응하는 데이터를 보내라는 요청을 NC(104j)에 전송한다. 노드 컨트롤러(108j)는 예를 들면 프로세서 캐시들(도시하지 않음)로부터 메모리 위치(B)에 대응하는 데이터에 접근하고, NC(104a)에 상기 데이터를 전송한다. 노드 컨트롤러(108a)가 SOC(100j)로부터 데이터를 불러왔으므로, 도 3c2에 도시된 바와 같이 그것은 다시 OCM(108a) 내의 엔트리(306)를 갱신한다.
도 3c2에 도시된 본 예에 있어서, NC(104a)가 독점을 요청했다면, 상기 엔트리가 더 이상 SOC(100j)에서 유효하지 않음을 지시하기 위해 v가 0으로 설정되고, d는 0으로 설정된다. NC(104a)가 읽기만을 위한 데이터를 요청했다면, SOC(100j)가 여전히 유효한 복제본을 가지고 있음을 지시하기 위해 v는 1로 유지된다. 그러나, SOC(100j)는 상기 요청된 데이터의 독점을 더 이상 갖고 있지 않다는 것, 즉 동일한 데이터의 공유된 복제본들이 SOC(100a) 및 SOC(100j) 내의 프로세서 캐시들에 존재하는 것을 지시하기 위해 d는 0으로 설정된다. 태그는 B로 유지된다.
당해 기술분야에서 통상의 기술을 가진 자에 의해 인식될 수 있듯이, 도 3b, 3c1 및 3c2에 도시된 항목들의 수는 임의적이고 구현예에 기초하여 변경된다. 상호접속(302)은 예시를 쉽게 하기 위해 도 3b, 3c1 및 3c2에 다시 작성되지 않았다.
도 3d는 본 발명의 일 실시예에 따른 공유 메모리 시스템에서, 원격 SOC로부터 국부 메모리 위치에 접근하기 위한 요청을 수신한 후, 국부 SOC에 의해 수행되는 단계들을 보여주는 전형적인 흐름도(312)를 예시한다.
단계(314)에서, 원격 SOC로부터 요청이 수신된다. 이 요청은 원격 SOC의 원격 노드 컨트롤러에 결합된 국부 노드 컨트롤러에 의해 수신될 수 있다. 이 요청은 데이터를 요청하는 원격 SOC를 식별함과 아울러 접근될 국부 SOC의 메모리 위치를 식별할 수 있다. 이 요청은 또한 상기 원격 SOC가 메모리 위치를 읽기를 원하는지 메모리 위치에 있는 데이터의 독점권(exclusive ownership)을 가지는지를 식별할 수 있다.
단계(316)에서, 국부 SOC가 요청된 메모리 위치에 유효한 데이터를 가지는지가 결정된다. 상기 요청된 메모리 위치에 대해 국부 온칩 메모리 내에 하나가 존재하면, 데이터의 유효성이 엔트리를 확인함으로써 결정된다. 상기 요청된 메모리 위치에 대해 국부 온칩 메모리 내에 엔트리가 존재하지 않으면, 국부 메모리 내의 유효한 데이터가 추정된다. 엔트리가 존재하면, 국부 SOC는 더티 비트가 설정되어 있는지를 확인한다. 더티 비트가 설정되어 있으면, 국부 SOC는 그것의 국부 메모리 내에 유효한 데이터를 갖지 않는다.
단계(318)에서, 국부 노드가 요청된 메모리 위치에 유효한 데이터를 갖지 않는 것이 단계(316)에서 결정되면, 국부 SOC는 유효한 데이터를 갖는 SOC에 상기 유효한 데이터를 국부 SOC로 되돌려 보내라는 요청은 전송한다. 국부 SOC는, 위에서 설명된 바와 같이, 온칩 메모리 내의 vec 엔트리를 검사함으로써 상기 유효한 데이 터를 갖고 있는 현재의 SOC를 결정할 수 있다.
단계(320)에서, 단계(318)에서 수신된 상기 데이터는 데이터를 요청하는 원격 SOC로 전송된다.
단계(322)에서, 단계(314)에서 요청된 메모리 위치에 대응하는 유효한 데이터가 국부 메모리 내에 있다는 것이 단계(316)에서 결정되면, 원격 노드가 독점을 요청했는지가 단계(314)에서 수신된 상기 요청으로부터 결정된다.
단계(324)에서, 원격 SOC에 의한 요청에 대응하여 국부 OCM 내에 엔트리가 저장된다. 예를 들어, 원격 SOC가 독점을 요청하면, 더티 비트가 1로 설정된 엔트리가 만들어진다(도 3c1 내의 엔트리(306)에서처럼). 원격 SOC가 단지 읽기만을 요청한 경우, 더티 비트가 0으로 설정된 엔트리가 만들어진다(도 3b 내의 엔트리(304)에서처럼).
단계(326)에서, 요청된 메모리 위치로부터 상기 데이터는 상기 원격 SOC로 전송된다. 이 데이터는 국부 노드 컨트롤러에 의해 위에서 설명된 바와 같이 버스(302)를 통해 원격 노드 컨트롤러에 전송될 수 있다.
도 3e는 본 발명의 일 실시예에 따른 공유 메모리 시스템 내에서 국부 SOC 및 원격 SOC에 의해 수행되는 단계들을 보여주는 흐름도(330)이다.
단계(332)에서, 원격 SOC는 메모리 위치로부터의 데이터에 대해 국부 SOC에 요청을 전송한다. 이 요청은 원격 SOC의 원격 노드 컨트롤러에 결합된 국부 SOC의 국부 노드 컨트롤러에 의해 수신될 수 있다. 이 요청은 요청을 하고 있는 원격 SOC를 식별함과 아울러 접근될 국부 SOC의 메모리 위치를 식별할 수 있다. 이 요청은 또한 상기 원격 SOC가 국부 SOC의 메모리 위치를 단지 읽고자 하는지 또는 상기 메모리 위치의 독점을 가지는지를 식별할 수 있다. 일 실시예에 있어서, 국부 SOC 및 원격 SOC는 전역 메모리 주소 공간을 공유하고, 원격 SOC는 국부 SOC 내의 메모리 위치에 접근하기 위해 전형적인 로드/저장(load/store) 지시들을 사용한다.
단계(334)에서, 국부 노드 컨트롤러는 원격 SOC에 의해 단계(332)에서 전송된 요청을 수신한다. 이 요청은 국부 SOC 내의 국부 노드 컨트롤러에 의해 수신되고, 요청이 수신된 순서에 따라 우선순위가 매겨질 수 있다.
단계(336)에서, 국부 노드 컨트롤러는 단계(334)에서 요청이 수신된 상기 메모리 위치 내에 그것이 유효한 데이터를 갖는지를 결정한다. 상기 요청된 메모리 위치에 대해 국부 OCM 내에 하나가 존재하면, 데이터의 유효성이 엔트리를 확인함으로써 결정된다. 엔트리가 상기 요청된 메모리 위치에 대해 국부 OCM 내에 존재하고, 예를 들어, 상기 엔트리 내의 더티 비트가 1로 설정되어 있으면, 국부 SOC는 상기 메모리 위치 내에 유효한 데이터를 갖지 않는다. 더티 비트가 0으로 설정되어 있으면, 국부 SOC는 요청된 메모리 위치 내에 유효한 데이터를 갖는다. 상기 요청된 메모리 위치에 대해 국부 온칩 메모리 내에 엔트리가 존재하지 않으면, 상기 요청된 메모리 위치 내에 유효한 데이터가 존재하는 것으로 추정된다.
단계(338)에서, 상기 국부 SOC가 요청된 메모리 위치에 유효한 데이터를 갖지 않음을 국부 노드 컨트롤러가 결정하면, 국부 NC는, 국부 OCM 내의 엔트리 내 벡터 필드에 기초하여, 유효한 데이터를 갖는 SOC로부터 데이터를 요청한다.
단계(340)에서, 단계(338)에서 상기 SOC로부터 국부 SOC에 의해 수신된 데이 터가 국부 SOC에 의해 원격 SOC로 전송된다. 국부 SOC는 또한 수신된 데이터로 국부 메모리를 갱신하고, 상기 국부 SOC가 더티(dirty)가 아닌 유효한 데이터를 갖고 있음을 지시하기 위해 국부 OCM 내 엔트리를 갱신한다.
단계(342)에서, 국부 NC는 상기 요청에 대응하여 국부 OCM 내에 엔트리를 저장한다. 예를 들면, 원격 SOC가 독점을 요청했다면, 도 3c1에서와 같이 더티 비트가 1로 설정된 엔트리(306)가 만들어질 수 있다. 원격 SOC가 단지 읽기 요청만을 했다면, 도 3b에 도시되고 위에서 설명된 바와 같이 더티 비트가 0으로 설정되어 엔트리(304)가 만들어진다.
단계(344)에서, 국부 NC는 원격 NC에 요청된 데이터를 전송한다. 이 데이터는 위에서 설명된 바와 같이 버스(302)를 통해 전송될 수 있다.
도 3f는 본 발명의 일 실시예에 따른 국부 프로세서로부터의 메모리 접근 요청을 수신한 후 NC에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다. 아래에 제시된 구체적인 단계들에서, NC 및 프로세서는 동일한 SOC 상에 있다. 예를 들어, 국부 NC는 NC(104)이고 국부 프로세서는 프로세서들(110) 중 하나이다.
단계(352)에서, 국부 메모리 위치로부터 데이터를 읽거나 그것에 데이터를 쓰는 것에 대한 요청이 국부 프로세서로부터 수신된다.
단계(354)에서, 국부 SOC가 국부 메모리 위치에 유효한 데이터를 갖는지 또는 독점을 갖는지가 결정된다. 상기 요청된 데이터에 대해 국부 온칩 메모리 내에 하나가 존재하면, 데이터의 유효성이 엔트리를 확인함으로써 결정된다. 일 실시예에 있어서, 국부 노드 컨트롤러는 국부 온칩 메모리를 확인한다. 상기 요청된 메모 리 위치에 대해 국부 OCM 내에 엔트리가 존재하고, 예를 들어, 상기 엔트리 내의 더티 비트가 1로 설정되어 있으면, 국부 SOC는 상기 메모리 위치에 유효한 데이터를 갖지 않는다. 상기 엔트리 내의 더티 비트가 0으로 설정되어 있으면, 국부 SOC는 요청된 메모리 위치에 유효한 데이터를 갖는다. 요청된 메모리 위치에 대해 국부 온칩 메모리에 엔트리가 존재하지 않으면, 국부 메모리 내의 데이터의 유효성이 추정된다.
단계(356)에서, 상기 국부 SOC가 상기 메모리 위치에 유효한 데이터를 갖지 않음이 단계(354)에서 결정되면, 단계(352)에서 수신된 요청에 의해 특정된 메모리 위치에 대응하는 엔트리에 대해 바람직하게 국부 NC에 의해 국부 OCM 메모리가 확인된다. 일 예에 있어서, 도 3c2에 도시되고 위에서 설명된 바와 같이, 요청된 메모리 위치의 독점을 갖는 원격 SOC를 결정하기 위해 엔트리(306)의 vec 필드가 사용된다.
단계(358)에서, 데이터를 전송하라는 요청이 단계(356)에서 결정된 원격 SOC에 전송된다.
단계(360)에서, 단계(358)에서 전송된 요청에 응답하여, 국부 SOC가 상기 원격 SOC로부터 데이터를 수신한다. 상기 국부 SOC는 국부 SOC가 상기 요청된 메모리 위치 내에 유효한 데이터를 갖고 있음을 지시하기 위해 국부 OCM 내에 대응하는 엔트리를 갱신할 것이다.
단계(362)에서, 원격 SOC로부터 수신된 데이터가 상기 데이터를 요청한 프로세서로 전송된다.
단계(364)에서, 국부 SOC가 상기 메모리 위치에 유효한 데이터를 갖고 있음이 결정되면, 상기 메모리 위치가 접근되고 데이터가 데이터를 요청하는 프로세서로 전송된다. 일 예에 있어서, 국부 NC가 상기 메모리 위치에 접근할 수 있으며, 또 다른 예에 있어서, 상기 국부 NC는 상기 데이터에 접근하기 위해 국부 메모리 컨트롤러를 사용할 수 있다.
노드 컨트롤러와 온칩 메모리에 대한 클러스터(cluster) 구성을 설명하는 구체적인 실시예들이 아래에서 설명된다.
<구체적인 클러스터 시스템>
도 4a는 구체적인 클러스터 시스템(400)을 예시한다. 클러스터 시스템(400)은 전형적으로 함께 밀접하게 작동하는 n개의 SOC 유닛들(100a-n)의 그룹으로, 많은 점에서 그것들은 마치 그것들이 단일의 SOC인 것처럼 보일 수 있다. 그러나, 각 SOC는 전형적으로 독립적인 SOC이고 메모리와 같은 자신의 리소스들(resources)을 운영한다. 클러스터들은 통상, 항상은 아니지만, 고속 근거리 통신망(fast local area network)들을 통해 연결된다. 클러스터 시스템(400)과 같은 클러스터들은 보통, 동등한 속도 또는 신뢰성을 갖는 단일 SOC 보다 전형적으로 훨씬 더 비용을 절감하면서, 단일 SOC에 의해 제공된 것에 대해 속도 및/또는 신뢰성을 향상시키기 위해 채택된다. 일 실시예에 있어서, 클러스터 시스템(400)은 고성능 클러스터(High Performance Cluster; HPC) 또는 부하 분산 클러스터(load balancing cluster)이다. 클러스터 시스템의 종류는 임의적이고 설계 요구사항들에 의존한다.
시스템(400)은 네트워크(402)를 통해 상호 연결된 n개의 SOC 유닛들(100a-n)을 포함한다. 일 실시예에 있어서, 네트워크(402)는 랜(Local Area Network; LAN)이다. 네트워크의 유형 및 SOC 유닛들의 개수는 임의적이다. 일 실시예에 있어서, SOC들(100a-n)은 노드 컨트롤러들(104a-n)을 통해 네트워크(402)에 연결된다. 본 발명의 일 실시예에 있어서, SOC 유닛들(100a-n) 사이의 통신은 메시징을 통해 이루어진다. 예를 들어, "풀"(pull) 모델 실시예에 있어서, 프로세스, 스레드 또는 소스 SOC 유닛 내의 프로세서는 상기 소스 SOC의 할당된 메모리 내에 메시지의 존재를 지시하면서 목적지 SOC 유닛에 신호를 전송한다. 목적지 SOC는, 상기 신호 수신에 응답하여, 소스 SOC 메모리로부터 메시지를 검색하거나 또는 "끌어온다"(pull). "푸쉬"(push) 모델 실시예에 있어서, 소스 SOC는 목적지 SOC의 할당된 메모리 위치로 직접 메시지를 전송하거나 또는 "밀어낸다"(push). 일 실시예에 있어서, 소스 SOC 및 목적지 SOC는 복수 배열 독립 디스크(Redundant Array of Independent Disks; RAID) 시스템의 부분이고, 소스 SOC로부터 목적지 SOC로의 메시지는 소스 SOC에서 목적지 SOC로의 능동 동작을 지시하는 "하트비트"(heartbeat) 통지이다. 풀 및 푸쉬 모델 메시징은 아래에서 더 자세하게 설명된다.
<풀 모델 메시징>
도 4b는 본 발명의 일 실시예에 따른 풀 모델 메시징을 예시한다. 도 4b에 도시된 바와 같이, SOC(100j)는 OCM(108j) 내 메시지의 존재를 지시하여 SOC(100a)에 신호를 전송한다. 이 메시지는 SOC(100j) 내의 프로세서로부터, 예컨대 프로세 서(110R+1)로부터 또는 프로세서들(110R-110T) 중 하나에서 작동하는 프로세스 또는 스레드로부터 기원할 수 있다. 이 신호는 노드 컨트롤러(104j)로부터 네트워크(402)를 통해 노드 컨트롤러(104a)로 전송될 수 있다. 일 실시예에 있어서, 이 신호 프로세스는 OCM(108j) 내의 메시지를 지시하기 위해 SOC(100a)의 메모리 위치로 비트를 기록할 것을 필요로 한다. OCM(108j) 내 메시지의 존재를 지시하는 노드 컨트롤러(104j)로부터의 신호 수신에 응답하여, 노드 컨트롤러(104a)는 OCM(108j)으로부터의 메시지를 검색한다. 일 실시예에 있어서, OCM(108j) 내 메모리 위치들은 SOC 유닛들(100a-100n)에 의해 공유된 전역 주소 공간의 부분이고, 노드 컨트롤러(104a)가 SOC(100a)로의 메시지들을 위해 할당된 OCM(108j) 내 메모리 위치에 접근한다. 또 다른 실시예에 있어서, OCM(108j)은 선입선출(First-In-First-Out; FIFO) 큐(queue)에 메시지들을 저장하고, NC(104a)는 OCM(108j) 내의 큐로부터 메시지를 검색한다. 또 다른 실시예에 있어서, NC(104j)로부터 신호를 수신한 후, NC(104a)가 NC(104j)에 상기 메시지를 요청하고, 그 후, 상기 NC(104j)가 NC(104a)에 이 메시지를 전송한다. NC(104a)는 OCM(108a) 내에 상기 검색된 메시지를 저장할 수 있다. 메시지들은 바이러스들을 포함하는 메시지들로부터 EM(106a)을 분리시키고 보호하기 위해 OCM(108a) 내에 저장될 수 있다. EM(106a)은 프로그램 코드 지시들을 저장할 수 있고, 바이러스를 포함하는 메시지가 EM(106a)에 저장되면, 저장된 프로그램 코드가 오염될 수 있으며 SOC(100a)의 동작에 악영향을 미칠 수 있다. 전송될 메시지들을 저장하기 위한 또는 다른 SOC 유닛들로부터 메시지를 수신하기 위한 "메일박스"(mailbox)로서 CM(108)을 사용함으로써, EM(106)은 악성 메시지들로부터 분리되고 보호된다. 본 실시예의 또 다른 장점은 메시징 속도인데, 왜냐하면 OCM(108a) 및 OCM(108j)이 온칩(on-chip)이고, 전형적으로 SRAM과 같은 고속 램(fast RAM)이기 때문이다. 메시지(404)는 사용될 수 있는 일 예의 메시지 형식(format)이다. 메시지(404)는 다음 필드들을 포함할 수 있다:
필드 "E"는 에러(error)를 나타낸다;
필드 "R"은 확인을 위한 요청을 지시한다. 예를 들어, 메시지를 전송하는 소스 SOC가 상기 메시지를 처리한 후 목적지 SOC로부터의 확인을 요청하기 위해 이 비트를 설정한다;
필드 "A"는 확인을 지시한다. 목적지 SOC는 초기 메시지를 전송한 소스 SOC에 확인 메시지를 되돌려 보낼 때 이 비트를 설정한다;
필드 "RSVD"는 특정 용도들의 구현을 위해 보존된 필드이다;
필드 "Status"는 메시지 처리의 결과를 지시한다. 예를 들어, 메시지는 목적지 SOC가 특정 작동들을 수행하도록 요청했을 수 있다. 이 status 필드는 동작이 수행되었는지 여부 및 상기 수행된 동작으로부터의 모든 관련 정보를 지시한다;
필드 "INTR"은, 만약 있다면, 목적지 SOC 및/또는 메시지의 우선순위에서 생성되어야 하는 중단(interrupt)의 유형을 지시한다;
필드 "RID"는 메시지를 독특하게 식별하는 데이터를 포함한다;
필드 "SID"는 메시지를 생성한 소스 SOC 유닛을 지시한다; 그리고
필드 "Software Dependent Context"는 메시지 페이로드(payload)를 위한 것 이다. 예를 들어, 메시지 페이로드는 수신하는 SOC에 의해 처리될 데이터를 포함할 수 있다.
메시지의 내용 및 필드들은 임의적이고 설계 요구사항들에 따라 변경될 수 있다. 일 실시예에 있어서, OCM(108a 및 108j)의 전부 또는 부분이 메시지들을 전송 또는 수신하기 위한 메일박스로 사용될 수 있다. 또 다른 실시예에 있어서, SOC(100a) 또는 SOC(100j) 내의 어떠한 메모리든 그것의 특정 부분이 메일박스로서 사용될 수 있다. 예를 들면, EM(106a) 및 EM(106j)의 부분들이 OCM(108a) 및 OCM(108j) 대신에 각각 메일박스로서 할당될 수 있다. EM(106)의 특정 부분을 할당하는 것은 또한 메시지들 내의 잠재적인 바이러스들로부터 프로그램 코드의 분리를 허용할 수 있다.
<푸쉬 모델 메시징>
도 4c는 본 발명의 일 실시예에 따른 푸쉬 모델 메시징을 예시한다. 이 예에 있어서, SOC(100j)는 SOC(100a)의 메모리 위치로 메시지(404)를 전송하거나 또는 "밀어낸다"(push). SOC(100j)로부터의 이 메시지는 OCM(108a)의 특정 위치 또는 "메일박스"(mailbox)로 전송 또는 밀어내질 수 있다. SOC(100a)로 전송된 메시지는 SOC(100j) 내의 프로세서, 예를 들면 프로세서 PR+1로부터 기원할 수 있다. 이 메시지는 노드 컨트롤러(104j)에 의해 네트워크(402)를 통해 노드 컨트롤러(104a)로 전송될 수 있다. 일 실시예에 있어서, OCM(108j) 내 메모리 위치들은 SOC 유닛 들(100a-100n)에 의해 공유된 전역 주소 공간의 부분이고, 노드 컨트롤러(104a)가 메시지들을 위해 할당된 OCM(108j) 내의 메모리 위치에 접근하고 그것에 기록한다. 일 실시예에 있어서, SOC(100a)로의 메시지들을 위해 할당된 전역 주소 공간 내 메모리 위치는 OCM(108a) 내 메모리 위치들에 매핑된다. 따라서, OCM(108a)은 다른 SOC 유닛들로부터 수신된 메시지들을 저장하기 위해 SOC(100a)에 의해 "메일박스"로 사용된다. 하나의 실시예에 있어서, OCM(108a)은 FIFO 큐에 수신된 메시지들을 저장하고, NC(104a)는 FIFO 순서로 OCM(108a) 내 메시지들을 검색하고 처리한다. OCM(108a)은 메시지 내에 있을 수 있는 바이러스들 또는 악성 소프트웨어로부터 EM(106a)dfm 분리하고 보호하기 위한 메일박스로 사용된다. 예를 들면, EM(106a)은 프로그램 코드 지시들을 저장할 수 있으며, 바이러스를 포함하는 메시지는 SOC(100a)의 동작에 악영향을 미칠 수 있다. 다른 SOC 유닛들로부터 수신된 메시지를 위한 메일박스로서 OCM(108a)을 사용함으로써, EM(106)이 분리되고, 시스템 완전성이 보호된다. 본 실시예의 하나의 장점은 메시징 속도인데, 이는 OCM(108)이 전형적으로 SRAM과 같은 고속 RAM이기 때문이다. 또 다른 장점은 수신된 메시지들 내에 존재하는 바이러스들로부터 시스템 메모리를 분리시키고 보호하는 것이다. 메시지(404)는 도 4b를 참조하여 위에서 설명된 것과 동일한 필드들을 갖는다.
도 4d는 본 발명의 일 실시예에 따른 풀 모델 메시징을 구현하여 국부 SOC에 의해 수행되는 단계들을 보여주는 흐름도(410)이다. 일 실시예에 있어서, 흐름도(410)의 단계들은 국부 SOC의 국부 노드 컨트롤러에 의해 수행된다.
단계(412)에서, 신호가 원격 SOC로부터 수신된다. 이 신호는 원격 SOC 내 메 시지의 존재를 지시한다. 이 신호는 또한 상기 메시지를 포함하는 원격 SOC 내 상기 메시지의 메모리 위치를 지시할 수 있다.
선택사양의 단계(414)에서, 국부 SOC는, 접근할 원격 SOC 내의 메모리 위치를 모르거나 상기 메시지를 포함하는 원격 SOC 내의 메모리 위치에 접근하지 못한다면, 원격 SOC로부터 상기 메시지를 요청한다. 일 실시예에 있어서, 국부 노드 컨트롤러는 원격 노드 컨트롤러에 상기 메시지를 요청한다.
단계(416)에서, 국부 SOC는 원격 SOC로부터 상기 메시지를 검색한다. 일 실시예에 있어서, 국부 SOC의 국부 노드 컨트롤러는 원격 SOC의 온칩 메모리 내에 할당된 메모리 위치로부터 상기 메시지를 검색한다. 이 메모리 위치는 메시징을 위해 사용되는 전역 주소 공간의 부분일 수 있다. 또는, 상기 국부 SOC는 상기 메시지를 포함하는 원격 SOC 내의 메모리 위치와 함께 미리 프로그램되었을 수 있다. 선택사양의 단계(414)가 구현되면, 단계(416)에서 국부 노드 컨트롤러는 원격 SOC를 검색하는 대신 원격 SOC로부터의 메시지를 수신한다.
단계(418)에서, 국부 SOC는 검색된 메시지를 저장한다. 일 실시예에 있어서, 국부 노드 컨트롤러가 국부 온칩 메모리에 상기 메시지를 저장한다.
도 4e는 본 발명의 일 실시예에 따른 풀 모델 메시징을 구현하여 원격 SOC에 의해 수행되는 단계들을 보여주는 흐름도(420)를 예시한다. 일 실시예에 있어서, 흐름도(420)의 단계들은 원격 노드 컨트롤러에 의해 수행된다.
단계(422)에서, 원격 SOC는 그것의 온칩 메모리 내의 메시지의 존재를 지시하는 신호를 전송한다. 이 신호는 상기 메시지를 포함하는 메모리 위치를 지시할 수 있다.
선택사양의 단계(424)에서, 원격 SOC는 국부 SOC로부터 상기 메시지에 대한 요청을 수신한다.
단계(426)에서, 원격 SOC가 국부 SOC로부터 상기 메시지에 대한 요청을 단계(424)에서 수신했으면, 원격 SOC는 국부 SOC에 상기 메시지를 전송한다. 또는, 원격 SOC는 상기 메시지를 포함하는 원격 온칩 메모리 위치에 상기 국부 SOC가 접근하는 것을 허용한다.
도 4f는 본 발명의 일 실시예에 따른 푸쉬 모델 메시징을 구현하여 원격 SOC에 의해 수행되는 단계들을 보여주는 흐름도(430)를 예시한다. 일 실시예에 있어서, 흐름도(430)의 단계들은 원격 노드 컨트롤러에 의해 수행된다.
단계(432)에서, 메시지가 기록될 국부 SOC 내 메모리위치가 결정된다. 사용될 국부 SOC 내 메모리 위치는 원격 SOC 내로 미리 프로그램될 수 있으며, 또는 국부 SOC가 메시징을 위해 사용될 메모리 위치를 미리 지시했을 수 있다. 또는, 국부 SOC 내에 기록될 메모리 위치가 메시징을 위해 사용되는 전역 주소 공간의 부분일 수 있다.
단계(434)에서, 원격 SOC는 단계(432)에서 결정된 메모리 위치에 메시지를 쓴다. 또는, 원격 SOC 내의 원격 노드 컨트롤러가 국부 SOC 내의 국부 노드 컨트롤러에 상기 메시지를 전송한다.
노드 컨트롤러 및 온칩 메모리를 위한 메모리 록(lock) 구성을 설명하는 구체적인 실시예들이 아래에서 설명된다.
<메모리 록들(Memory Locks)>
메모리 록은 다중 "리퀘스터들"(requesters)(예컨대, SOC 유닛들, 스레드들, 프로세스들 및/또는 프로세서들)이 대략 동일한 시간에 동일한 메모리 위치에 접근을 시동하는 환경에서 메모리 위치로의 접근에 대한 제한들을 강화하기 위한 동기 기구(synchronization mechanism)이다. 록들은 동시 제어 수단들을 강화하는 한가지 방법이다. 전형적으로, 어느 리퀘스터가 메모리 위치에 접근하는 록을 획득하는지를 결정하기 위해 리퀘스터들 사이에서 메시지를 전달하는 것을 수반하는 중재(arbitration) 프로토콜을 사용함으로써 리퀘스터들이 서로 협동한다. 그러나, 다중 리퀘스터들이 동시에 동일한 메모리 위치에 접근을 시도할 때, 전형적인 중재 방법들은 시간을 소모할 수 있으며 시스템 오버헤드(overhead)를 증가시킬 수 있다. 아래에 설명된 본 발명의 실시예들은 메모리 록들을 구현하기 위해 OCM(108)과 결합하여 노드 컨트롤러(104)를 사용함으로써 이 결함을 극복한다. 메모리 록들은 독립적인 SOC(100), 시스템(300)과 같은 공유 메모리 시스템들 또는 시스템(400)에서와 같이 클러스터 구성 내에서 구현될 수 있다.
도 5a는 본 발명의 일 실시예에 따른 메모리 위치들과 메모리 록들 사이의 구체적인 연관성을 예시한다. 도 5a에 도시된 예에 있어서, OCM(108)은 EM(106) 내의 대응하는 메모리 위치들에 대한 록 엔트리들(아래에 설명됨)을 저장한다. 예를 들어, OCM(108) 내의 메모리 위치 Y는 EM(106) 내의 메모리 위치 X에 대응하는 록 엔트리를 저장한다. 메모리 위치 X를 변형시키기 위해 리퀘스터가 접근을 요청하 면, NC(104)는 상기 리퀘스터에 접근을 허용할지를 결정하기 위해 메모리 위치 Y에 저장된 록을 확인한다. 일 실시예에 따르면, 노드 컨트롤러(104)는 메모리 위치 X에 기록하기 위한 접근에 대한 요청을 상기 리퀘스터로부터 수신하고, OCM(108)의 메모리 위치 Y 내의 록 엔트리를 확인하고, 상기 리퀘스터에 접근을 허용할지를 결정한다. NC(104)는, EM(106) 내의 메모리 위치들과 OCM(108) 내의 록들을 저장하는 대응 메모리 위치들 사이의 상관 테이블을 사용함으로써, OCM(108) 내의 어느 메모리 위치가 EM(106) 내의 메모리 위치에 대한 록을 갖는지를 결정할 수 있다. OCM(108) 내에 저장된 록들은 두 가지 모드의 동작을 허용한다. 하나의 동작 모드에 서 "시험-및-설정"(test-and-set) 록들이 사용되고, 다른 모드에서 "시퀀서"(sequencer) 록들이 사용된다.
시험-및-설정 록들은 메모리 위치에 극히 미세하게(atomically) 기록하기 위해 사용된다. 시험-및-설정 록들은 록을 획득하기 위한 록 엔트리 내에 값을 설정하는 것을 수반하나, 우선 몇 가지 시험을 수행한다(예컨대, 록 내의 현재 설정 값을 0 또는 1과 동일한 것으로 시험). 시험이 실패하면, 상기 록이 획득 또는 설정될 수 없고 따라서 상기 록에 대응하는 메모리 위치가 상기 리퀘스터에 의해 접근될 수 없다. 상기 리퀘스터는 록이 획득될 수 있는지를 결정하기 위해 향후에 상기 록을 다시 "시험"해야 한다. 시험-및-설정 모드를 사용하는 구체적인 실시예들이 아래에서 설명된다.
시퀀서 모드에 있어서, 리퀘스터가 메모리 위치에 기록하기 위해 접근을 요청하는 순서대로 각 리퀘스터에 티켓(ticket)이 할당된다. 요청된 메모리 위치에 대응하는 록 엔트리는 현재 티켓 및 다음 티켓을 저장한다. 시퀀서 모드에 있어서, 현재 티켓 번호를 갖는 리퀘스터가 록을 획득하고 대응하는 메모리 위치로의 접근권을 얻는다. 메모리 위치가 현재 티켓 보유처(holder)에 의해 점유되는 동안, 시퀀서는 다음의 리퀘스터들에 고유의 다음 티켓들을 제공한다. 다음 티켓 번호들은 전형적으로 순서대로 매겨지고 따라서 리퀘스터들의 실질상의 FIFO 큐를 형성한다. 메모리 위치에 접근하는 현재의 티켓 보유처가 록을 해제할 때, (현재 티켓 + 1)이 다음의 현재 티켓 값이 된다. 다음의 현재 티켓 값을 갖는 리퀘스터가 이제 록을 획득하고 메모리 위치를 변형하기 위한 접근권을 얻을 수 있다.
EM(106) 내 메모리 위치들에의 접근을 제어하기 위해 노드 컨트롤러(104)를 사용하는 것은 프로세서들(110)로부터의 중재 부하(arbitration load)를 제거하고 중재에 기인하는 버스 트래픽(bus traffic)을 제거한다. OCM(108)이 온칩이므로, 록을 조사하고 대응하는 메모리 위치에 접근을 허용할지를 결정하기 위해 OCM(108)에 접근하는 것이 빠르고 효율적이다.
<록 엔트리들(Lock Entries)>
도 5b는 OCM(108) 내의 메모리 위치에 저장된 구체적인 록 엔트리를 예시한다. 록 엔트리(500)는 일 예의 형식이고 필드들 및 필드들의 크기는 구현예에 따라 다양할 수 있다. 록 엔트리(500)는 다음 필드들을 포함한다:
필드 "MODE"(모드)는 사용될 동작 모드를 지시한다. 예를 들어, 모드가 0으로 설정되면, "시험-및-설정" 록 모드가 사용된다. 모드가 1로 설정되면, "시퀀서" 록 모드가 사용된다. 시험-및-설정 록 모드 및 시퀀서 록 모드는 아래에서 더 자세하게 설명된다;
필드 "S" 또는 "Set"(설정)는 모드 필드가 시험-및-설정 록 모드일 때만 적용된다. S가 0일 때, 록은 자유이다. 리퀘스터가 메모리 위치에 접근을 시도하고 대응하는 록 엔트리의 S 비트가 그것이 자유임을 지시하면, S는 1로 설정되고 상기 리퀘스터는 접근이 허용된다. S 비트를 1로 설정하는 것은 록을 획득하는 것과 기능적으로 동등하다. 록이 획득된 후, 대응하는 메모리 위치가 접근될 수 있다. 자유 록 엔트리에 접근하는 것은 0의 현재 값 및 Software Dependent Context 필드(아래에서 설명됨)를 그들이 마지막으로 저장된 대로 되돌려 놓는다. 록이 획득된 후, 오너인증(OID) 필드(아래에서 설명됨)가 상기 리퀘스터가 록을 획득했음을 지시하도록 설정된다;
록에 접근한 후, S 값 1이 NC에 의해 리퀘스터에 되돌려지면, OID 필드에 의해 지시된 리퀘스터가 상기 록을 현재 갖는다. 따라서, 상기 록에 대응하는 메모리 위치는 접근될 수 없다. 리퀘스터는 상기 록을 획득하기 위해 다시 시도해야한다;
필드 "R" 또는 "Recovery" 비트는 전형적으로 회복 동작 동안 설정된다. R 비트가 0으로 설정될 때, 상기 록이 통상적으로 접근될 수 있다. 회복 동안, R 비트가 1로 설정되어 있을 때, 정상적으로 동작하지 않는 또는 "기능이 정지된"(dead) 리퀘스터들에 의해 현재 소유된 록들이 재생된다. 예를 들어, 록을 획득하고 있는 프로세서가 제대로 기능하지 않으며, 획득된 록을 해제할 수 있기 전에, 정상적으로 동작하지 못하게 될 수 있다. R 비트가 1로 설정되어 있을 때, 상기 록 은 회복을 위해 재설정된다. 1로 설정된 R 비트에 대해, 회복 소프트웨어는 록 해제를 강제할 수 있고 상기 록이 보호하는 대응 메모리 위치를 다시 초기화할 수 있다. 회복 동안, 회복 과정에 착수하는 리퀘스터에 의해 R 비트가 1로 설정되고, 다른 필드들의 기호들은 무효로 된다. OID는 회복을 수행하도록 선택된 리퀘스터의 ID(Identification)로 설정된다. 록이 회복된 후, 그것은 통상적으로 기능할 수 있다;
필드 "Next Ticket"(다음 티켓)은 시퀀서 록 모드에서만 이용되는 값을 저장한다. 예컨대, EM(106) 내의 메모리 위치에 접근하기 위한 요청을 수신한 수, NC(104)는 OCM(108) 내의 요청된 메모리 위치에 대응하는 록을 조사한다. 상기 록이 점유되어 있으면, NC(104)는 상기 록의 다음 티켓 필드 내의 현재 값을 상기 리퀘스터에 되돌려준다. 그 후, NC(104)는, 상기 록이 점유되어 있을 때, 다음 티켓 필드 내의 값을 하나씩 증가시키고 다음의 리퀘스터에 그 값을 되돌려준다. 따라서, 메모리 위치에 접근하기 위해 대기하고 있는 리퀘스터들이 할당된 티켓 번호에 의해 정의된 접근 순서로 큐 내로 들어간다. 상기 록이 리퀘스터가 접근을 요청할 때 자유이면, 현재 티켓 값이 다음 티켓 값과 동일하고 상기 리퀘스터는 현재 티켓 값을 할당받고 대응하는 메모리 위치에 접근이 허용된다. 일 실시예에 있어서, Next Ticket은 6 비트의 서명이 없는 번호이다. 또 다른 실시예에 있어서, 다음 티켓 값은 NC(104)에 의해 생성된 무작위의 문자와 숫자로 이루어진 코드일 수 있다. 노드 컨트롤러는 그 후 문자와 숫자로 이루어진 코드들이 생성된 순서의 트랙(track)을 유지하고 그 순서로 접근을 허용할 것이다;
필드 "Current Ticket"(현재 티켓)은 시퀀서 록 모드에서만 이용되는 값을 저장한다. 현재 티켓 번호를 갖는 리퀘스터가 록을 획득하고 대응 메모리 위치에 접근하도록 허용된다. 록을 해제하기 위해, 상기 리퀘스터는 록의 현재 티켓 필드에 (현재 티켓 + 1)과 같은 새로운 값을 저장한다. 이것은 다음 차례인 리퀘스터가 상기 록을 획득하고 메모리 위치에 접근하도록 효과적으로 허용한다; 그리고
필드 "Software Dependent Context"는 대응하는 록을 획득한 리퀘스터에 의해 읽히거나 쓰여질 수 있는 96 비트 필드이다. 상기 context 필드는 록에 의해 보호되고 있는 구조들로의 지시들(pointers)을 포함할 수 있다. 리퀘스터가 록을 획득할 때, 그것은 또한, 예컨대, 외부 메모리 내의 상기 록에 대응하는 메모리 위치로의 지시를 얻는다. 시스템 회복은 종종 데이터 테이블들을 다시 만들고 재배치할 것을 필요로 한다. 상기 context 필드는 분산된 테이블 운영에 대한 중대한 성능 문제들을 피하기 위해 사용될 수 있다.
프로세스들 또한 위에서 설명된 바와 같이 효율적인 하드웨어 메일박스들을 구현하기 위해 상기 context 필드를 사용할 수 있다. 일시적인 소재지를 나타내지 않는 데이터를 교체하기 때문에, 보호된 하드웨어 메일박스들의 사용이 캐시 일관성 오버헤드를 피한다.
<시험-및-설정 모드(Test-and-set Mode)>
도 5c1~5c3은 본 발명의 일 실시예에 따른 시험-및-설정 모드에 있어서 메모리 록들의 구체적인 동작을 예시한다. 도 5c1~5c3에 제공된 예들에 있어서, 록이 시험-및-설정 모드이므로, 모드 비트는 0으로 설정되고(시험-및-설정 모드를 위해) 다음 티켓 및 현재 티켓 필드들은 사용되지 않는다(NA). R 비트는 록이 회복 모드에 있지 않음을 나타내는 0이다. 시험-및-설정 모드의 본 예에서, S=0의 값은 록이 자유라는 것을 지시하고 S=1은 록이 획득된 것을 지시한다.
도 5c1에 도시된 바와 같이, NC(104)는 EM(106) 내의 메모리 위치 X를 변형하기 위한 접근에 대해 리퀘스터(R1)로부터 요청을 수신한다. 상기 요청 수신에 응답하여, NC(104)는 메모리 위치 X에 대응하는 OCM(108)의 메모리 위치 Y에 저장된 록 엔트리(500a)를 확인한다. 록 엔트리(500a)에서, S는 상기 록이 획득될 수 있고 대응하는 메모리 위치가 접근될 수 있음을 지시하는 0이다. 따라서, NC(104)는 메모리 위치 X를 변형시키도록 리퀘스터(R1)에 접근권을 부여한다. 이어서, NC(104) 또는 리퀘스터(R1) 어느 것이든 록 엔트리(500a)를 록 엔트리(500b)로 변형시킨다. 록 엔트리(500b)에서, S는 1로 설정되고, OID는 R1으로 설정되어 리퀘스터(R1)가 메모리 위치 Y 내의 록을 획득했음을 지시한다.
도 5c2에서, NC(104)는 EM(106) 내의 메모리 위치 X를 변형하기 위한 접근에 대해 리퀘스터(R2)로부터 요청을 수신한다. 상기 요청 수신에 응답하여, NC(104)는 메모리 위치 X에 대응하는 메모리 위치 Y 내에 저장된 록 엔트리(500b)를 확인한다. 록 엔트리(500b)에서, S는 1이고 OID는 상기 록이 현재 리퀘스터(R1)에 의해 소유된 것을 지시하는 R1이다. 따라서, 대응하는 메모리 위치 X는 리퀘스터(R2)에 의해 변형될 수 없다. 따라서, NC(104)는 메모리 위치 X를 변형하기 위한 리퀘스터(R2)로부터의 요청을 거절한다. 리퀘스터(R2)는 메모리 위치(X)를 변형시키기 위 한 접근권을 얻기 위해 다시 시도해야할 것이다.
도 5c3에서, 리퀘스터(R1)는 메모리 위치 X를 해제한다. NC(104)는 S를 0으로 설정하고 따라서 록 엔트리(500b)를 록 엔트리(500c)로 변경한다. 상기 록이 해제되므로, EM(106) 내의 메모리 위치(X)는 변형에 대해 다시 유효하다. 메모리 위치 X를 변형하기 위한 리퀘스터(R2)로부터의 요청을 다시 수신한 후, NC(104)는 록 엔트리(500c)를 확인한다. 록 엔트리(500c)에서, S가 0이므로, 상기 록은 획득될 수 있다. 따라서, NC(104)는 메모리 위치 X를 변형하도록 리퀘스터(R2)에 접근을 허용한다. NC(104) 또는 리퀘스터(R2) 어느 것이든 S를 1로 OID를 R2로 설정함으로써 록 엔트리(500c)를 록 엔트리(500d)로 변형시킨다. 록 엔트리(500d)는 이제 OCM(108)의 메모리 위치 Y 내의 록이 획득되고 리퀘스터(R2)가 현재 EM(106) 내의 메모리 위치 X를 변형할 권리를 갖고 있음을 지시한다.
도 5c4는 본 발명의 일 실시예에 따른 시험-및-설정 모드에 있어서 노드 컨트롤러에 의해 수행되는 단계들을 보여주는 흐름도(510)이다.
단계(512)에서, 제1 메모리 위치를 변형하기 위한 요청이 수신된다. 일 예에 있어서, 노드 컨트롤러는 SOC, 프로세서, 스레드 또는 프로세스일 수 있는 리퀘스터로부터 상기 요청을 수신한다.
단계(514)에서, 제1 메모리 위치가 변형에 대해 유효한지를 결정하기 위해 제1 메모리 위치에 대응하는 제2 메모리 위치 내의 엔트리가 확인된다. 일 예에 있어서, 노드 컨트롤러는 제1 메모리 위치에 대응하는 제2 메모리 위치에 대한 테이블을 조사한다. 제2 메모리 위치는 온칩 메모리 내에 있을 수 있다. 제2 메모리 위 치 내의 데이터는 제1 메모리 위치가 변형에 대해 유효한지를 지시하는 필드를 구비하는 록 엔트리일 수 있다.
단계(516)에서, 제1 메모리 위치가 변형에 대해 유효하지 않다고 단계(514)에서 결정되면, 상기 리퀘스터는 제1 메모리 위치를 변형하기 위한 접근이 거부된다. 제1 메모리 위치는 로킹된 것으로 지시된다.
단계(518)에서, 제1 메모리 위치가 변형에 대해 유효하다고 단계(514)에서 결정되면, 상기 리퀘스터는 제1 메모리 위치를 변형하기 위한 접근이 허용된다. 단계(512)에서 제1 메모리 위치에 대해 다중 리퀘스터들이 있으면, 노드 컨트롤러는 제1 메모리 위치를 변형하도록 제1 리퀘스터에 접근을 허용한다.
단계(520)에서, 제2 메모리 위치 내의 엔트리는 제1 메모리 위치가 로킹된 것을 지시하도록 변형된다. 제1 메모리 위치를 변형하는 현재의 접근권을 갖는 리퀘스터의 ID가 또한 저장된다.
선택사양의 단계(522)에서, 단계(512)에서 다중 리퀘스터들이 있으면, 나머지 리퀘스터들은 제1 메모리 위치를 변형하기 위한 접근이 거부된다.
<시퀀서 모드(Sequencer Mode)>
도 5d1~5d3은 본 발명의 일 실시예에 따른 시퀀서 모드에 있어서 메모리 록들의 구체적인 동작을 예시한다. 도 5d1~5d3에 제공된 예들에 있어서, 시험-및-설정 록 모드가 사용되지 않으므로, "Mode" 필드는 1로 설정되고 설정 필드 "S"는 이용되지 않는다(NA). R 비트는 0으로 설정되어 상기 록이 회복 모드에 있지 않음을 지시한다.
도 5d1에서, NC(104)는 EM(106) 내의 메모리 위치 X를 변형하기 위한 리퀘스터(R1)로부터의 요청을 수신한다. 도 5d1에 도시된 예는 초기 시작 조건으로 R1이 메모리 위치 X를 변형하기 위한 접근을 요청하는 제1 리퀘스터이고 앞선 리퀘스터들이 없다. 초기 조건들에 기인하여, NC(104)는 OCM(108) 내의 메모리 위치 Y 내 록(500e)을 확인하고, 현재 티켓, 다음 티켓 및 OID 필드들은 이용되지 않는다(NA). 상기 요청에 응답하여, NC(104)는 리퀘스터(R1)에 메모리 위치 X를 변형하도록 접근을 허용하고 R1에 현재 티켓 값, 예컨대 "A"를 할당한다. NC(104) 또는 리퀘스터(R1)는 록 엔트리(500e)를 록 엔트리(500f)로 갱신하는데, 이는 현재 티켓을 A로, 다음 티켓을 (A+1)로 지시하고 OID를 R1으로 지시하여 리퀘스터(R1)가 OCM(108)의 메모리 위치 Y 내의 상기 록의 현재 소유권 및 EM(106) 내의 메모리 위치 X를 변형시킬 권리를 갖고 있음을 지시한다.
도 5d2에서, NC(104)는 EM(106) 내의 메모리 위치 X를 변형하기 위한 리퀘스터(R2)로부터의 요청을 수신한다. 상기 요청 수신에 응답하여, NC(104)는 메모리 위치 X에 대응하는 메모리 위치 Y에 저장된 록 엔트리(500f)를 확인한다. 록 엔트리(500f)에서, 현재 티켓은 A이고, OID는 R1으로 상기 록이 리퀘스터(R1)에 의해 현재 소유됨을 지시한다. NC(104)는 리퀘스터(R2)에 접근을 거부하고 R2에 (A+1)의 다음 티켓 값을 부여한다. 티켓 A를 구비하는 리퀘스터(R1)가 록을 해제할 때, 티켓 (A+1)을 구비하는 리퀘스터(R2)는 메모리 위치 X를 변형하기 위한 접근이 허용될 것이다. NC(104) 또는 리퀘스터(R2)는 록 엔트리(500f)를 다음 티켓을 (A+2)로 지시하기 위해 록 엔트리(500g)로 변경한다. R2 뒤의 다음 리퀘스터는 티켓 (A+2)이부여될 것이다. 따라서, 리퀘스터들의 큐는, 메모리 위치 X가 변형에 대해 유효하지 않은 동안 유지된다.
도 5d3에서, 리퀘스터(R1)는 메모리 위치 X를 해제한다. R2가 큐 내에서 다음 차례이고 티켓 (A+1)을 가지므로, R2는 메모리 위치 X에의 접근이 허용된다. 록 엔트리(500g)는 엔트리(500h)로 갱신되는데, 이것은 현재 티켓을 (A+1)로 OID를 R2, 즉 상기 록의 현재 오너로 지시한다. 예컨대, 더 이상 메모리 위치 X를 변형시키는 것이 필요하지 않기 때문에 리퀘스터(R2)가 메모리 위치 X의 소유권을 취하지 않으면, 또는 R2가 제대로 작동하지 않으면, 소유권은 큐 내의 다음 리퀘스터에 부여된다.
리퀘스터가 메모리 록 해제에 실패하는 상황에서, R을 1로 설정하고 회복 모드를 시작함으로써, 상기 록은 다시 획득될 수 있다.
도 5d4는 본 발명의 일 실시예에 따른 시퀀서 모드에 있어서 노드 컨트롤러에 의해 수행되는 단계들을 보여주는 흐름도(530)를 예시한다.
단계(532)에서, 제1 메모리 내의 제1 메모리 위치를 변형하기 위한 요청이 수신된다. 일 예에 있어서, 노드 컨트롤러가 SOC, 프로세서, 스레드 또는 프로세스일 수 있는 리퀘스터로부터 상기 요청을 수신한다.
단계(534)에서, 제1 메모리 위치가 변형에 대해 유효한지를 결정하기 위해 제1 메모리 위치에 대응하는 제2 메모리 위치 내의 엔트리가 확인된다. 일 예에 있어서, 대응하는 제2 메모리 위치를 결정하기 위해, 노드 컨트롤러는 제1 메모리 위 치에 대응하는 제2 메모리 위치를 포함하는 테이블을 조사한다. 제2 메모리 위치는 예컨대, 온칩 메모리와 같은 제2 메모리 내에 있을 수 있다. 또는, 제2 메모리 위치는 제1 메모리 내에 있을 수 있다. 제2 메모리 위치 내의 데이터는 위에서 설명된 바와 같은 록 엔트리일 수 있다. 록 엔트리 내의 데이터, 예컨대 록 엔트리의 OID 필드는 제1 메모리 위치의 현재 오너가 있는지를 지시할 수 있다. 또는, 현재 티켓 및 다음 티켓 필드가 단계(532)에서의 현재 리퀘스터에 앞서 큐내에 리퀘스터들이 있음을 지시할 수 있다.
단계(536)에서, 제1 메모리 위치가 변형에 대해 유효하지 않다고 단계(534)에서 결정되면, 단계(532)에서의 리퀘스터는 티켓 번호가 할당된다. 상기 리퀘스터는 따라서 큐 내로 들어가고 할당된 티켓 번호의 순서에 따라 제1 메모리 위치에 접근할 것이다.
단계(538)에서, 제1 메모리 위치에 대응하는 제2 메모리 위치 내의 엔트리가 다음 티켓 번호를 변경하도록 갱신된다.
단계(540)에서, 제1 메모리 위치가 변형에 대해 유효하다고 단계(536)에서 결정되면, 단계(532)에서의 리퀘스터는 상기 메모리 위치에의 접근이 허용된다. 단계(532)에서의 리퀘스터는 또한 록 내의 현재 티켓 필드로부터 현재 티켓 값이 할당된다. 상기 리퀘스터는, 그것이 제1 메모리 위치의 변형을 완료한 후, 제1 메모리 위치에 대한 록을 해제하기 위해 상기 현재 티켓 값을 사용할 수 있다.
단계(542)에서, 제2 메모리 위치 내의 엔트리가 갱신되어 단계(532)에서의 리퀘스터를 상기 록의 현재 오너 및 현재 티켓 소유처로 반영한다.
도 5d5는 본 발명의 일 실시예에 따른 메모리 위치를 변형하기 위한 접근을 요청하는 리퀘스터에 의해 수행되는 단계들을 보여주는 흐름도(550)이다.
단계(552)에서, 메모리 위치를 변형하기 위한 요청이 전송된다. 상기 요청은 메모리 위치에의 접근을 제어하는 원격 노드 컨트롤러에 전송될 수 있다. 일 예에 있어서, 상기 리퀘스터는 SOC, 프로세서, 스레드 또는 프로세스일 수 있다.
단계(554)에서, 메모리 위치를 변형하도록 접근이 수신되었는지가 결정된다.
단계(556)에서, 단계(554)에서 메모리 위치를 변형하기 위한 접근이 거부되었으면, 티켓이 수여된다. 상기 티켓은 노드 컨트롤러로부터 수신될 수 있다. 상기 티켓은 상기 메모리 위치를 접근하기 위한 큐 내의 리퀘스터의 위치를 지시할 수 있다. 상기 리퀘스터는 큐 내에서 상기 메모리 위치를 변형하기 위한 차례를 기다린다.
단계(558)에서, 리퀘스터는 단계(556)에서 수여된 티켓 번호에 따라 접근을 수신한다. 상기 리퀘스터는 이제 메모리 위치를 변형할 수 있다.
단계(560)에서, 리퀘스터는 록을 해제하고 따라서 큐 내의 다음 리퀘스터가 메모리 위치에 접근하도록 한다. 일 예에 있어서, 상기 리퀘스터는 그것의 티켓 번호를 노드 컨트롤러에 전송하는데, 노드 컨트롤러가 이제 록을 해제하고 큐 내의 다음 리퀘스터에 접근을 허용한다.
단계(562)에서, 메모리 위치를 변형하도록 단계(554에서 접근이 수신되면, 리퀘스터는 메모리 위치를 변형시킨다. 그 후, 상기 리퀘스터는 위에서 설명된 바와 같이 단계(560)에서 록을 해제한다.
시퀀서 동작 모드에 있어서, 컨트롤러가 동일한 메모리 위치를 변형하려는 다중 요청을 수신하고, 상기 요청들이 시간 상으로 가까운 간격이면, 시퀀서는 상기 요청들을 도착 순서대로 순서를 정하고 그 순서대로 티켓들을 할당한다. 다른 실시예에 있어서, 컨트롤러는 요청의 우선 순위 레벨의 순서로 티켓들을 할당한다. 우선순위 레벨은 상기 요청과 함께 리퀘스터에 의해 전송된 양의 번호(positive number)일 수 있다. 더 높은 우선순위 번호들이 더 높은 우선순위를 지시할 수 있다. 또 다른 실시예에 있어서, 리퀘스터들은 도착 시간 및 우선순위 레벨의 조합을 사용하여 순서가 매겨질 수 있다. 예를 들면, 도착 시간들 및 우선순위 레벨들에 각각 수치 가중치가 할당되면, 수치 가중치들의 선형 조합이 리퀘스터들을 순서짓고 티켓들을 할당하기 위해 사용될 수 있다.
<시험-및-설정 및 시퀀서 모드들을 위한 소프트웨어 실시예들>
일 실시예에 있어서, 노드 컨트롤러(104)는 소프트웨어의 제어하에 있다. 본 실시예에 있어서, 노드 컨트롤러(104)는 단지 메모리 위치에 대한 상호 배척을 지원한다. 그것은 보호될 필요가 있는 메모리 위치에 록을 연관시키기 위한 소프트웨어에 달려있다. 소프트웨어는 하드웨어가 록들로 작용할 수 있는 n개의 메모리 위치들을 보급하는 것을 안다. 그 후, 소프트웨어는 보호될 데이터 객체들에 대해 특정 록을 할당하고 연관시킨다. 본 실시예에 있어서, 노드 컨트롤러(104)는 단순히 시험-및-설정 또는 시퀀서 록 모드들의 기호들을 지원하기 위해 요구되는 동작들을 수행한다. 이것은 노드 컨트롤러(104)를 위한 하드웨어를 단순화한다. 하드웨어는 록과 상기 록에 의해 보호되고 있는 메모리 위치 사이의 연관성을 위한 부기(bookkeeping)를 할 필요가 없다.
도 5a를 참조하여, 시험-및-설정 모드에서, 리퀘스터(R)가 메모리 위치 Y에 저장된 대응하는 록을 구비하는 메모리 위치 X에 접근할 수 있게 하기 위한 구체적인 소프트웨어 슈도-코드(pseudo-code)가 아래에 나타내진다;
while(Test-and-Set(lock) == 1);
access and modify memory location X;
Unlock(lock).
위 슈도-코드에서, Test-and-Set 명령은 노드 컨트롤러(104)가 OCM(108)의 메모리 위치 Y에 저장된 엔트리 내의 설정(Set) 필드의 현재 값을 되돌려놓게 한다. 상기 코드는, 리퀘스터(R)가 획득하도록, 록이 자유일 때까지, 즉 노드 컨트롤러(104)에 의해 되돌려진 값이 상기 록이 자유임을 지시하는 0일 때까지 반복 실행한다(loop). Test-and-Set 명령은 또한 노드 컨트롤러(104)가 메모리 위치 Y 내의 록의 설정(Set) 필드를 다시 1로 변경하게 한다. 리퀘스터(R)를 현재 오너로 지시하기 위한 오너인증(OID) 필드의 변경은 설정 필드 내의 현재 값이 0인 경우에만 수행된다. 리퀘스터(R)가 메모리 위치 X에 접근하고 그것을 변형시킨다. Unlock 명령은 설명 필드를 다시 0으로 변경하여 또 다른 리퀘스터가 메모리 위치 X에 접근하도록 허용한다.
도 5a를 참조하여, 시퀀서 모드에서, 리퀘스터(R)가 메모리 위치 Y에 저장된 대응하는 록을 구비하는 메모리 위치 X에 접근할 수 있게 하기 위한 구체적인 소프 트웨어 슈도-코드(pseudo-code)가 아래에 나타내진다:
ticket = Get_Ticket();
while(ticket!=Read_Current_Ticket());
access and modify memory location X;
Increment_Ticket();
위의 구체적인 슈도-코드에서, Get_Ticket() 명령은 노드 컨트롤러(104)가 OCM(108)의 메모리 위치 Y 내의 엔트리로부터 다음 티켓 번호를 되돌려주게 한다. 상기 티켓은 리퀘스터(R)에 할당되고, 변수 "ticket"에 저장된다. Read_Current_Ticket() 명령은 노드 컨트롤러(104)가 OCM(108) 내의 메모리 위치 Y에 저장된 현재 티켓 값을 되돌려주게 한다. 리퀘스터(R)는, 메모리 위치 Y 내의 현재 티켓 값이 리퀘스터(R)에 할당된 티켓 값과 동일할 때까지, 메모리 위치(Y)에 저장된 현재 티켓 값을 계속 확인한다. 메모리 위치 X에의 접근권을 얻고 그것을 변형시킨 후, 리퀘스터(R)는 Increment_Ticket() 명령을 발하여 메모리 위치 X 내의 현재 티켓 필드를 증가시키고 순서상 다음 리퀘스터가 메모리 위치 Y 내의 록을 획득하고 메모리 위치 X에 접근하도록 한다.
도 5들 내에 도시된 실시예들에 있어서, OCM(108)은 EM(106) 내의 대응하는 메모리 위치들에 대한 록 엔트리들을 저장할 수 있다. 또 다른 실시예에 있어서, OCM(108)은, 이에 제한되는 것은 아니나, 캐시들, 디스크 드라이브들 등과 같은 EM(106)을 포함하는 메모리 위치들에 대한 록 엔트리들을 저장한다. 또 다른 실시예에 있어서, OCM(108)과 다른 메모리 모듈들이 메모리 록들을 저장한다. 예를 들 어, EM(106)의 일부가 EM(106)의 나머지 부분 내의 메모리 위치들을 위한 메모리 록들을 저장하도록 할당될 수 있다.
<구체적인 컴퓨터 시스템 실시예들>
이 명세서에서, "컴퓨터 프로그램 매체"(computer program medium) 및 "컴퓨터 이용 매체"라는 표현은 제거가능한 저장 유닛, 하드 디스크 드라이브에 설치된 하드 디스크 및 신호들(즉, 전자, 전자기, 광학 또는 통신 인터페이스에 의해 수신될 수 있는 다른 유형의 신호들)과 같은 매체를 일반적으로 언급하기 위해 사용된다. 이들 컴퓨터 프로그램 제품들은 컴퓨터 시스템에 소프트웨어를 제공하기 위한 수단이다. 본 발명은, 일 실시예에 있어서, 이러한 컴퓨터 프로그램 제품에 관련된다.
본 발명의 태양들이 소프트웨어를 사용하여 구현되는 실시예에 있어서, 소프트웨어는 컴퓨터 프로그램 제품에 저장될 수 있으며, 제거가능 저장 드라이브, 하드 드라이브 또는 통신 인터페이스를 사용하여 컴퓨터 시스템(예컨대, 리더 또는 호스트) 내로 로딩될 수 있다. 제어 로직(소프트웨어)은, 프로세서에 의해 실행될 때, 프로세서가 여기에서 설명된 바와 같은 본 발명의 기능들을 수행하게 한다. 나아가, 센서가 컴퓨터로 판독가능한 지시들을 실행하여 데이터를 수집할 수 있다. 더욱이, 근거리 송수신기(near field transceiver)가 컴퓨터로 판독가능한 지시들을 실행하여 센서들 및/또는 태그들과 통신할 수 있다.
구체적인 실시예에 따르면, 리더(reader)가 컴퓨터로 판독가능한 지시들을 실행하여 위에서 설명된 바와 같은 태그들을 읽을 수 있다. 또한, 일 실시예에 있어서, 태그는 컴퓨터로 판독가능한 지시들을 실행하여, 본 명세서의 다른 부분에서 더 설명된 바와 같이, 리더 송신 신호에 응답할 수 있다.
<결론>
위에서 본 발명의 다양한 실시예들이 설명되었는데, 이들 실시예들은 한정이 아닌, 단지 예를 들기 위한 수단으로서 제시되었다는 점이 이해되어야 한다. 관련된 기술 분야에서 숙련된 자들에게 본 발명의 사상 및 영역으로부터 벗어나지 않으면서 형식적이거나 구체적인 다양한 변경이 이뤄질 수 있음은 명백할 것이다. 따라서, 본 발명의 외연 및 범위가 상술한 예시적인 실시예들 중 어느 것에 의해서도 한정되지 않아야 할 것이며, 오직 후술하는 청구범위 및 그 균등 범위에 부합하게 한정되어야 할 것이다.
여기에 포함되고 명세서의 일부를 형성하는 다음 도면들은 본 발명을 예시하고, 나아가 상세한 설명과 함께 본 발명의 원리들을 설명하고 본 발명이 속하는 기술 분야에서 숙련된 자로 하여금 본 발명품을 제조하고 사용할 수 있게 한다.
도 1은 구체적인 시스템-온-칩(System On Chip; SOC)을 예시한다.
도 2a는 본 발명의 일 실시예에 따른 구체적인 SOC 및 연관된 전역 주소 공간(global address space)을 예시한다.
도 2b는 본 발명의 일 실시예에 따른 전역 주소 공간을 이용하여 SOC 내의 노드 컨트롤러에 의해 수행되는 단계들을 보여주는 구체적인 흐름도를 예시한다.
도 3a는 구체적인 공유 메모리 시스템(300)을 예시한다.
도 3b는 본 발명의 일 실시예에 따른 공유 메모리 시스템(300)에서 메모리 일관성을 유지하는 예를 예시한다.
도 3c1-3c2는 본 발명의 일 실시예에 따른 공유 메모리 시스템에서 독점 요청에 대해 메모리 일관성을 유지하는 예들을 예시한다.
도 3d는 본 발명의 일 실시예에 따른 공유 메모리 시스템에서 국부 SOC에 의해 수행되는 단계들을 보여주는 전형적인 흐름도를 예시한다.
도 3e는 본 발명의 일 실시예에 따른 공유 메모리 시스템에서 국부 SOC 및/또는 원격 SOC에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 3f는 본 발명의 일 실시예에 따른 메모리 접근 요청을 수신했을 때 국부 SOC에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 4a는 구체적인 클러스터(cluster) 시스템을 예시한다.
도 4b는 본 발명의 일 실시예에 따른 풀(pull) 모델 메시징(messaging)을 예시한다.
도 4c는 본 발명의 일 실시예에 따른 푸쉬(push) 모델 메시징을 예시한다.
도 4d는 본 발명의 일 실시예에 따른 풀 모델 메시징을 구현하여 국부 SOC에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 4e는 본 발명의 일 실시예에 따른 풀 모델 메시징을 구현하여 원격 SOC에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 4f는 본 발명의 일 실시예에 따른 푸쉬 모델 메시징을 구현하여 원격 SOC에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 5a는 본 발명의 일 실시예에 따른 메모리 위치들과 메모리 록들(locks) 사이의 구체적인 연관성을 예시한다.
도 5b는 구체적인 록 엔트리(lock entry)를 예시한다.
도 5c1~5c3은 본 발명의 일 실시예에 따른 테스트 및 세팅 모드에서 메모리 록들의 구체적인 작동을 예시한다.
도 5c4는 본 발명의 일 실시예에 따른 테스트 및 세팅 모드에서 노드 컨트롤러에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 5d1~5d3은 본 발명의 일 실시예에 따른 시퀀서 모드(sequencer mode)에서 메모리 록들의 구체적인 작동을 예시한다.
도 5d4는 본 발명의 일 실시예에 따른 시퀀서 모드(sequencer mode)에서 노 드 컨트롤러에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.
도 5d5는 본 발명의 일 실시예에 따른 시퀀서 모드(sequencer mode)에서 리퀘스터(requester)에 의해 수행되는 단계들을 보여주는 흐름도를 예시한다.

Claims (10)

  1. 국부 컨트롤러; 및
    온칩 메모리를 포함하고,
    메모리 위치에 접근하기 위한 원격 SOC의 원격 컨트롤러로부터의 요청을 수신한 것에 응답하여, 상기 국부 컨트롤러가, 상기 국부 SOC가 상기 메모리 위치의 독점권을 갖는지를 결정하고, 상기 국부 SOC가 상기 메모리 위치의 독점권(exclusive ownership)을 가지면 상기 메모리 위치로부터 데이터를 전송하고, 상기 원격 SOC를 상기 요청을 발생시킨 것으로서 식별하는 엔트리를 상기 온칩 메모리에 저장하는 국부 시스템 온 칩(SOC) 유닛.
  2. 청구항 1에 있어서, 상기 엔트리는 상기 요청이 상기 메모리 위치의 독점권에 대한 것인지를 특정하는 국부 시스템 온 칩(SOC) 유닛.
  3. 청구항 1에 있어서, 상기 엔트리 내의 특정 필드(field)가 상기 원격 SOC를 식별하는 데이터를 저장하는 국부 시스템 온 칩(SOC) 유닛.
  4. 청구항 3에 있어서, 상기 필드의 각 비트가 다중 SOC들을 포함하는 공유 메모리 시스템 내의 어느 SOC에 대응하고, 그 결과, 어느 비트가 1로 설정되면, 그것은 그 비트에 대응하는 SOC를 상기 메모리 위치에 접근을 요청한 것으로서 지시하 는 국부 시스템 온 칩(SOC) 유닛.
  5. 청구항 1에 있어서, 다중 프로세서들 및 상기 국부 SOC의 외부에 있는 메모리에 결합된 메모리 컨트롤러를 더 포함하는 국부 시스템 온 칩(SOC) 유닛.
  6. 청구항 1에 있어서, 상기 국부 SOC 및 원격 SOC는 CC-NUMA(Cache Coherent Non Uniform Memory Access) 내의 SCI(Scalable Coherent Interface)를 통해 연결된 국부 시스템 온 칩(SOC) 유닛.
  7. 청구항 1에 있어서, 상기 온칩 메모리는 SRAM(Static Random Access Memory)이고, 상기 국부 컨트롤러는 노드 컨트롤러인 국부 시스템 온 칩(SOC) 유닛.
  8. 공유 메모리 시스템의 부분인 국부 시스템 온칩(SOC) 내에서 메모리 일관성(coherency)을 유지하기 위한 방법으로,
    원격 SOC의 원격 컨트롤러로부터 메모리 위치에 접근하기 위한 요청을 수신하고;
    상기 메모리 위치로부터 상기 원격 SOC의 상기 원격 컨트롤러에 요청된 데이터를 전송하고;
    상기 원격 SOC를 식별하는 엔트리를 국부 온칩 메모리에 저장하는 것을 포함하는 메모리 일관성 유지 방법.
  9. 청구항 8에 있어서, 상기 요청은 상기 원격 SOC가 상기 메모리 위치에 저장된 상기 데이터의 복제본을 원격에서 변형하도록 하는 독점권(exclusive ownership) 요청인 메모리 일관성 유지 방법.
  10. 청구항 8에 있어서, 국부 노드 컨트롤러를 통해 상기 요청을 수신하는 것을 더 포함하는 메모리 일관성 유지 방법.
KR1020070096972A 2006-09-29 2007-09-21 공유 메모리 시스템 내의 메모리 운영 KR100952589B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/529,356 US7631150B2 (en) 2006-09-29 2006-09-29 Memory management in a shared memory system
US11/529,356 2006-09-29

Publications (2)

Publication Number Publication Date
KR20080030496A true KR20080030496A (ko) 2008-04-04
KR100952589B1 KR100952589B1 (ko) 2010-04-15

Family

ID=38871792

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070096972A KR100952589B1 (ko) 2006-09-29 2007-09-21 공유 메모리 시스템 내의 메모리 운영

Country Status (6)

Country Link
US (2) US7631150B2 (ko)
EP (1) EP1906313B1 (ko)
KR (1) KR100952589B1 (ko)
CN (1) CN101183338B (ko)
HK (1) HK1121824A1 (ko)
TW (1) TWI380174B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8492828B2 (en) 2007-11-08 2013-07-23 Samsung Electronics Co., Ltd. Vertical-type non-volatile memory devices

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system
US7698523B2 (en) * 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks
US7636816B2 (en) * 2006-09-29 2009-12-22 Broadcom Corporation Global address space management
US20080082622A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Communication in a cluster system
FR2945396A1 (fr) * 2009-05-07 2010-11-12 St Microelectronics Grenoble 2 Procede et dispositif d'analyse de la propagation de transactions dans un reseau multi-protocoles d'un systeme sur puce
KR20120026052A (ko) * 2009-05-15 2012-03-16 톰슨 라이센싱 메모리를 공유하기 위한 시스템 및 방법
JP5553111B2 (ja) * 2010-09-02 2014-07-16 富士通株式会社 ノードコントローラ、ノードコントローラの制御方法及びコンピュータシステム
US10061534B2 (en) 2011-12-01 2018-08-28 Intel Corporation Hardware based memory migration and resilvering
US9009541B2 (en) 2012-08-20 2015-04-14 Apple Inc. Efficient trace capture buffer management
CN103294611B (zh) * 2013-03-22 2015-06-17 浪潮电子信息产业股份有限公司 一种基于有限数据一致性状态的服务器节点数据缓存方法
CN105190576A (zh) * 2013-03-28 2015-12-23 惠普发展公司,有限责任合伙企业 共享的存储器系统
WO2015047112A1 (en) * 2013-09-27 2015-04-02 Mariusz Oriol Sharing embedded hardware resources
US9141486B2 (en) 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
US9411542B2 (en) * 2014-02-21 2016-08-09 Analog Devices Global Interruptible store exclusive
US11068420B2 (en) 2015-05-12 2021-07-20 Hewlett Packard Enterprise Development Lp Scalable software stack
CN105068786B (zh) * 2015-07-30 2018-03-23 浪潮(北京)电子信息产业有限公司 一种处理访存请求的方法和节点控制器
US10783160B2 (en) * 2015-10-09 2020-09-22 Futurewei Technologies, Inc. System and method for scalable distributed real-time data warehouse
US9934120B2 (en) 2016-02-10 2018-04-03 Western Digital Technologies, Inc. Method and apparatus for updating a system on chip (SOC) image from a host computer system without using DMA
WO2018063266A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Object coherence in distributed shared memory systems
CN107219874B (zh) * 2017-06-27 2019-06-04 新昌县美曼慧造机械科技有限公司 一种共享设备温度控制系统
TWI777219B (zh) * 2020-08-12 2022-09-11 鴻海精密工業股份有限公司 分散式存儲方法、伺服器及存儲介質
US11372800B2 (en) * 2020-10-15 2022-06-28 Silicon Motion, Inc. System on chip comprising a plurality of central processing units whose mailboxes are set in tightly-coupled memories
WO2023212105A1 (en) * 2022-04-26 2023-11-02 Motional Ad Llc Distributed computing architecture with shared memory for autonomous robotic systems

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5749095A (en) * 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US5878268A (en) * 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
KR100253192B1 (ko) * 1997-09-05 2000-04-15 구자홍 분산 공유 메모리 구조에서의 시스템 버스 제어방법
US6085295A (en) * 1997-10-20 2000-07-04 International Business Machines Corporation Method of maintaining data coherency in a computer system having a plurality of interconnected nodes
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6226718B1 (en) * 1999-02-26 2001-05-01 International Business Machines Corporation Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
US20020194251A1 (en) * 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
US20020059274A1 (en) * 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US20020049608A1 (en) * 2000-03-03 2002-04-25 Hartsell Neal D. Systems and methods for providing differentiated business services in information management environments
US20020174227A1 (en) * 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US20020120741A1 (en) * 2000-03-03 2002-08-29 Webb Theodore S. Systems and methods for using distributed interconnects in information management enviroments
US20020152305A1 (en) * 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US20020049841A1 (en) * 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing differentiated service in information management environments
US20020065864A1 (en) * 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US20020095400A1 (en) * 2000-03-03 2002-07-18 Johnson Scott C Systems and methods for managing differentiated service in information management environments
US20030236745A1 (en) * 2000-03-03 2003-12-25 Hartsell Neal D Systems and methods for billing in information management environments
US6697919B2 (en) * 2000-06-10 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US6640289B2 (en) * 2000-11-15 2003-10-28 Unisys Corporation Software controlled cache line ownership affinity enhancements in a multiprocessor environment
US6976108B2 (en) * 2001-01-31 2005-12-13 Samsung Electronics Co., Ltd. System on a chip having a system bus, an external bus, and a bus arbiter with programmable priorities for both buses, software, and method for assigning programmable priorities
US6886079B2 (en) * 2001-06-21 2005-04-26 International Business Machines Corporation Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system
US6615322B2 (en) * 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7296174B2 (en) * 2002-10-11 2007-11-13 Broadcom Corporation Apparatus and method to interface two different clock domains
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
EP1619572A1 (en) * 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
US7404044B2 (en) * 2004-09-15 2008-07-22 Broadcom Corporation System and method for data transfer between multiple processors
KR100758281B1 (ko) * 2004-12-20 2007-09-12 한국전자통신연구원 다중 서비스 타입 관리 기능을 가지는 컨텐츠 분배 관리시스템 및 그 방법
US7849315B2 (en) * 2006-05-22 2010-12-07 General Dynamics C4 Systems, Inc. Method for managing operability of on-chip debug capability
US7636816B2 (en) * 2006-09-29 2009-12-22 Broadcom Corporation Global address space management
US7698523B2 (en) * 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks
US20080082622A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Communication in a cluster system
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8492828B2 (en) 2007-11-08 2013-07-23 Samsung Electronics Co., Ltd. Vertical-type non-volatile memory devices

Also Published As

Publication number Publication date
US7631150B2 (en) 2009-12-08
CN101183338B (zh) 2010-09-01
HK1121824A1 (en) 2009-04-30
CN101183338A (zh) 2008-05-21
EP1906313A1 (en) 2008-04-02
TWI380174B (en) 2012-12-21
KR100952589B1 (ko) 2010-04-15
TW200832136A (en) 2008-08-01
US20080082758A1 (en) 2008-04-03
US8001333B2 (en) 2011-08-16
US20100070718A1 (en) 2010-03-18
EP1906313B1 (en) 2018-11-07

Similar Documents

Publication Publication Date Title
KR100952589B1 (ko) 공유 메모리 시스템 내의 메모리 운영
US7636816B2 (en) Global address space management
US7698523B2 (en) Hardware memory locks
US6189078B1 (en) System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
JP3987162B2 (ja) 読取り−共有トランザクションのための強化ブロッキング・メカニズムを含むマルチプロセス・システム
US6971098B2 (en) Method and apparatus for managing transaction requests in a multi-node architecture
US7334089B2 (en) Methods and apparatus for providing cache state information
JP3470951B2 (ja) 非一様メモリ・アクセス・コンピュータ・システム及びその操作方法
US6112281A (en) I/O forwarding in a cache coherent shared disk computer system
US7797588B2 (en) Mechanism to provide software guaranteed reliability for GSM operations
US20080082622A1 (en) Communication in a cluster system
WO1995025306A2 (en) Distributed shared-cache for multi-processors
JP4660064B2 (ja) 分散処理システムにおけるロックの実行
US20070150665A1 (en) Propagating data using mirrored lock caches
JP2005519391A (ja) 共有ベクトルの増加を伴わないdsmマルチプロセッサシステムにおけるキャッシュコヒーレンスのための方法およびシステム
US20040088496A1 (en) Cache coherence directory eviction mechanisms in multiprocessor systems
US6950913B2 (en) Methods and apparatus for multiple cluster locking
US20090199191A1 (en) Notification to Task of Completion of GSM Operations by Initiator Node
US20040088494A1 (en) Cache coherence directory eviction mechanisms in multiprocessor systems
US20090199200A1 (en) Mechanisms to Order Global Shared Memory Operations
US7337279B2 (en) Methods and apparatus for sending targeted probes
JPH07152647A (ja) 共有メモリマルチプロセッサ
US7346744B1 (en) Methods and apparatus for maintaining remote cluster state information

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130325

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140327

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160329

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee