KR102204751B1 - 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜 - Google Patents

클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜 Download PDF

Info

Publication number
KR102204751B1
KR102204751B1 KR1020160163593A KR20160163593A KR102204751B1 KR 102204751 B1 KR102204751 B1 KR 102204751B1 KR 1020160163593 A KR1020160163593 A KR 1020160163593A KR 20160163593 A KR20160163593 A KR 20160163593A KR 102204751 B1 KR102204751 B1 KR 102204751B1
Authority
KR
South Korea
Prior art keywords
node
memory
nodes
lock
shared
Prior art date
Application number
KR1020160163593A
Other languages
English (en)
Other versions
KR20160143619A (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 KR20160143619A publication Critical patent/KR20160143619A/ko
Application granted granted Critical
Publication of KR102204751B1 publication Critical patent/KR102204751B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • 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/2017Error 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 where memory access, memory control or I/O control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
    • G11C14/009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 명세서에서는 데이터 일관성을 제공하기 위한 장치가 설명된다. 장치는 글로벌 영구 메모리를 포함한다. 글로벌 영구 메모리는 입/출력(I/O) 시맨틱스 및 메모리 시맨틱스를 포함하는 프로토콜을 이용하여 액세스된다. 장치 또한 반사 메모리 영역을 포함한다. 반사 메모리 영역은 글로벌 영구 메모리의 일부이며, 복수의 노드의 각각의 노드는 반사 메모리 영역을 캐싱 불가능한 공간으로 맵핑한다. 또한, 장치는 세마포어 메모리를 포함한다. 세마포어 메모리는 실시되는 데이터 일관성에 대한 하드웨어 지원을 제공한다.

Description

클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜{DATA COHERENCY MODEL AND PROTOCOL AT CLUSTER LEVEL}
본 발명은 일반적으로 다중 노드 시스템에 관한 것이다. 구체적으로, 본 발명은 메모리 공유에 관한 것이다.
다중 노드 시스템은 복수의 노드를 포함할 수 있으며, 메모리가 다양한 노드들 사이에 공유될 수 있다. 일부 예들에서, 노드들은 접속되며, 따라서 그들은 단일 시스템으로 간주될 수 있다. 시스템은 클러스터로서 지칭될 수 있으며, 네트워크 또는 랙(rack) 서버 시스템 등을 포함하지만 이에 한정되지 않는다. 클러스터의 노드들은 접속될 수 있으며, 따라서 메모리가 노드들 사이에 공유될 수 있다. 그러나, 하나의 노드에서의 장애는 전체 클러스터의 장애를 유발할 수 있다. 또한, 메모리는 입/출력(I/O) 드라이버를 통해 메시지들을 전송함으로써 클러스터 내의 다양한 노드들을 통해 액세스된다.
아래의 상세한 설명은 개시되는 발명의 다양한 목적들 및 특징들의 특정 예들을 포함하는 첨부 도면들을 참조하여 더 잘 이해될 수 있다.
도 1은 데이터 일관성을 보증하는 아키텍처의 도면이다.
도 2는 글로벌 메모리 맵, 노드 주소 맵 및 다른 노드 주소 맵의 도면이다.
도 3은 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜을 제공하는 프로세스 흐름도이다.
명세서 및 도면 전체에서 동일한 번호들이 동일한 컴포넌트들 및 특징들을 참조하는 데 사용된다. 100 시리즈의 번호들은 도 1에 처음 발견되는 특징들을 지칭하고, 200 시리즈의 번호들은 도 2에서 처음 발견되는 특징들을 지칭하며, 기타 등등이다.
컴퓨팅 클러스터들이 여러 구성 또는 아키텍처를 이용하여 구현될 수 있다. 일부 예들에서, 클러스터의 노드들은 근거리 네트워크(LAN)를 이용하여 접속된다. 미들웨어가 각각의 노드 사이의 활동들을 조정하는 데 사용될 수 있다. 데이터를 공유하기 위해, I/O 스택과 같은 소프트웨어를 이용하여 클러스터의 각각의 노드 사이에서 메시지들 및 데이터를 전송한다. I/O 스택을 통해 전송되는 메시지와 관련된 높은 지연이 존재할 수 있다. 더구나, 더 높은 지연은 각각의 노드가 최종 데이터에 액세스하는 것을 방해할 수 있으므로, 노드들 사이에서 데이터가 일치하지 않을 수 있다. 게다가, 각각의 노드가 개별적으로 관리되므로, 그러한 클러스터의 유지와 관련된 비용이 높을 수 있다.
본 명세서에서 설명되는 실시예들은 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜과 관련된다. 실시예들에서, 글로벌 영구 메모리, 반사 메모리 영역(reflected memory region) 및 세마포어 메모리 영역(semaphore memory region)이 제공된다. 글로벌 영구 메모리는 입/출력(I/O) 시맨틱스(semantics) 및 메모리 시맨틱스를 포함하는 프로토콜을 이용하여 액세스된다. 반사 메모리 영역은 글로벌 영구 메모리의 일부이며, 복수의 노드의 각각의 노드는 반사 메모리 영역을 캐싱 불가능한 공간으로 맵핑한다. 또한, 세마포어 메모리는 실시되는 데이터 일관성을 위한 하드웨어 지원을 제공한다. 다양한 메모리 영역들을 통해, 데이터 일관성이 인에이블되며, 이 경우에 노드들의 클러스터는 메모리 로드 저장 시맨틱스를 지원하고 데이터 일관성을 위한 하드웨어 지원을 제공하는 저지연 패브릭을 통해 접속된다. 클러스터의 노드들은 저지연 로드 저장 메커니즘을 이용하여 노드들 사이에서 정보를 전송할 수 있다. 그러한 저지연 전송은 공유 데이터가 각각의 클러스터의 노드들 사이에서 일치하는 것을 보증한다.
아래의 설명 및 청구항들에서, 용어 "결합" 및 "접속"은 이들의 파생어들과 함께 사용될 수 있다. 이러한 용어들은 서로에 대한 동의어인 것을 의도하지 않는다는 것을 이해해야 한다. 오히려, 특정 실시예들에서, "접속"은 둘 이상의 요소가 물리적으로 또는 전기적으로 서로 직접 접촉하는 것을 나타내는 데 사용될 수 있다. "결합"은 둘 이상의 요소가 물리적으로 또는 전기적으로 직접 접촉하는 것을 의미할 수 있다. 그러나, "결합"은 둘 이상의 요소가 서로 직접 접촉하지 않지만, 여전히 서로 협력하거나 상호작용하는 것도 의미할 수 있다.
일부 실시예들은 하드웨어, 펌웨어 및 소프트웨어 중 하나 또는 조합에서 구현될 수 있다. 일부 실시예들은 본 명세서에서 설명되는 동작들을 수행하기 위해 컴퓨팅 플랫폼에 의해 판독 및 실행될 수 있는, 기계 판독 매체 상에 저장된 명령어들로서 구현될 수도 있다. 기계 판독 가능 매체는 기계, 예로서 컴퓨터에 의해 판독 가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 메커니즘을 포함할 수 있다. 예를 들어, 기계 판독 가능 매체는 많은 가운데 특히 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스를 포함할 수 있다.
일 실시예는 일 구현 또는 일례이다. 본 명세서에서 "일 실시예", "하나의 실시예", "일부 실시예들", "다양한 실시예들" 또는 "다른 실시예들"에 대한 참조는 실시예들과 관련하여 설명되는 특정 특징, 구조 또는 특성이 반드시 모든 실시예들이 아니라 적어도 일부 실시예들에 포함된다는 것을 의미한다. "일 실시예", "하나의 실시예" 또는 "일부 실시예들"의 다양한 출현들은 반드시 모두가 동일 실시예들을 지칭하지는 않는다. 일 실시예로부터의 요소들 또는 양태들은 다른 실시예의 요소들 또는 양태들과 결합될 수 있다.
본 명세서에서 설명되고 도시되는 모든 컴포넌트, 특징, 구조, 특성 등이 특정 실시예 또는 실시예들에 포함될 필요는 없다. 명세서가 예를 들어 컴포넌트, 특징, 구조 또는 특성이 포함"될 수 있다"고 설명하는 경우, 그러한 특정 컴포넌트, 특징, 구조 또는 특성은 포함될 필요는 없다. 명세서 또는 청구항이 "하나"의 요소를 지칭하는 경우, 이것은 하나의 요소만이 존재한다는 것을 의미하지 않는다. 명세서 또는 청구항들이 "추가" 요소를 지칭하는 경우, 이것은 둘 이상의 추가 요소가 존재하는 것을 배제하지 않는다.
일부 실시예들은 특정 구현들을 참조하여 설명되지만, 일부 실시예들에 따라 다른 구현들이 가능하다는 점에 유의해야 한다. 게다가, 도면들에 도시되고/되거나 본 명세서에서 설명되는 회로 요소들 또는 다른 특징들의 배열 및/또는 순서는 도시되고 설명되는 특정 방식으로 배열될 필요는 없다. 일부 실시예들에 따라 많은 다른 배열이 가능하다.
도면에 도시된 각각의 시스템에서, 일부 예들에서의 요소들 각각은 표현된 요소들이 상이하고/하거나 동일할 수 있다는 것을 암시하기 위해 동일한 참조 번호 또는 상이한 참조 번호를 가질 수 있다. 그러나, 요소는 상이한 구현들을 갖고, 본 명세서에서 도시되거나 설명되는 시스템들의 일부 또는 전부와 함께 동작할 수 있을 만큼 충분히 유연할 수 있다. 도면들에 도시된 다양한 요소들은 동일하거나 상이할 수 있다. 어느 것이 제1 요소로서 지칭되고, 어느 것이 제2 요소로서 지칭되는 것은 임의적이다.
도 1은 데이터 일관성을 보증하는 아키텍처의 도면이다. 부분 일관성 시스템(100)은 노드(102) 및 노드(104)를 포함한다. 노드(102)는 패브릭 메모리 제어기(FMC)(106)를 포함하고, 노드(104)는 FMC(108)를 포함한다. 게다가, 노드(102)는 노드 메모리(114) 및 로컬 메모리(118)를 포함한다. 노드(104)는 노드 메모리(116) 및 로컬 메모리(120)를 포함한다. 각각의 FMC(106, 108)는 도 1에 도시된 바와 같이 그들 각각의 노드를 갖는 개별 컴포넌트일 수 있다. 일부 실시예들에서, FMC들(106, 108)은 다중 노드 시스템의 각각의 노드 내의 CPU(들) 내에 통합될 수 있다. 따라서, 일부 실시예들에서, FMC(106)는 노드(102)의 CPU(110A) 및 CPU(110B) 내에 통합될 수 있고, FMC(108)는 노드(104)의 CPU(112A) 및 CPU(112B) 내에 통합될 수 있다. CPU들(110A, 110B, 112A, 112B) 각각은 SMI3과 유사한 (시스템 메모리 맵에 대한) 메모리 시맨틱스와 블록 타입 메모리 액세스에 대한 (PCIe와 같은) I/O 프로토콜의 결합인 PLM(Plattsmouth) 프로토콜을 이용하여 글로벌 메모리에 액세스한다. 글로벌 메모리는 노드 메모리(114) 및 노드 메모리(116)를 포함한다. 실시예들에서, 글로벌 메모리는 공유 메모리 또는 블록 메모리로서 액세스될 수 있다. 글로벌 메모리는 다수의 영역으로 분할될 수 있다. 구체적으로, 글로벌 메모리는 반사 메모리 영역 및 세마포어 메모리 영역을 포함한다.
FMC(106) 및 FMC(108)는 장애 차단 경계(107A) 및 장애 차단 경계(107B)를 각각 구현하며, 이 경우에 글로벌 메모리는 그의 로컬 노드가 다운될 때에도 다른 노드들에 의해 액세스될 수 있다. FMC는 다른 FMC들에 걸치는 (다양한 형태의 RAID를 포함하는) 메모리 복제를 지원하며, FMC(또는 그와 관련된 글로벌 메모리)가 다운되는 경우에, 복제된 메모리의 내용을 재구성하기 위한 능력도 제공한다.
Plattsmouth(PLM) 링크를 이용하여 각각의 CPU를 FMC에 접속할 수 있다. 따라서, 노드(102)는 CPU(110A) 및 CPU(110B)를 FMC(106)에 접속하기 위한 한 쌍의 PLM 링크들(122)을 포함한다. 유사하게, 노드(104)는 CPU(112A) 및 CPU(112B)를 FMC(108)에 접속하기 위한 한 쌍의 PLM 링크들(124)을 포함한다. 또한, PLM 링크(126A) 및 PLM 링크(126B)를 이용하여, 노드(102) 및 노드(104)를 각각 스위치(128)에 접속할 수 있다. 각각의 PLM 링크는 SMI3과 같은 옵션인 디렉토리 정보를 갖는 메모리 시맨틱스 및 주변 컴포넌트 상호접속 익스프레스(PCIe) 프로토콜과 같이 로드 및 저장 기능을 갖는 I/O 프로토콜 양자를 지원할 수 있다. 실시예들에서, 핀들의 일반 세트를 이용하여 메모리 시맨틱스 및 I/O 프로토콜을 지원할 수 있는 임의의 링크를 이용하여 노드를 SMC에 접속할 수 있다. 더욱이, 핀들의 일반 세트를 이용하여 메모리 시맨틱스 및 I/O 프로토콜을 지원할 수 있는 임의의 링크를 이용하여 CPU를 FMC에 접속할 수 있다. 게다가, PLM 링크들은 PCIe 아키텍처의 물리 계층을 이용하여 구현될 수 있다.
글로벌 메모리는 스위치(128)를 통해 액세스될 수 있다. 스위치(128)는 다중 노드 시스템 내의 복수의 노드로부터의 다수의 FMC를 접속하는 데 사용될 수 있다. 일부 예들에서, 스위치(128)는 Stormlake(STL) 스위치, 스위치로서 사용되는 다른 FMC 또는 직접 부착 메커니즘일 수 있다. 일부 예들에서는 백업 스위치가 포함된다. 스위치(128)는 하나 이상의 노드 사이에서 글로벌 데이터에 대한 요청들을 라우팅하는 데 사용될 수 있다. 임의의 이벤트에서, 스위치(128)는 글로벌 메모리를 통해 저지연 메시지 시맨틱스를 전송하는 데 사용된다. 실시예들에서, 다수의 FMC는 PLM 링크들을 이용하여 직접 또는 다른 FMC 스위치를 통해 서로 접속된다. 더욱이, 실시예들에서, 다수의 FMC는 STL 스위치를 통해 STL과 같은 네트워킹 스택을 통해 PLM 프로토콜을 터널링함으로써 접속될 수 있다.
FMC들이 복수의 노드를 접속한 결과로서, 글로벌 메모리가 공유되며, 로드 저장 시맨틱스를 통해 액세스될 수 있다. 노드에 로컬인 계산들의 경우, 노드는 그러한 계산들을 위해 그 자신의 예약된 메모리에 액세스할 수 있다. 일부 예들에서, 노드의 로컬 메모리는 로컬 영구 메모리이다. 복수의 노드 상에 존재하는 글로벌 메모리는 동일 특성 메모리를 가질 수 있으며, 각각의 노드는 이 메모리 상에서 동작들을 수행할 수 있다. 글로벌 메모리는 DIMM, 비휘발성 메모리, 휘발성 메모리 등과 같은 임의의 저장 디바이스를 이용하여 구현될 수 있다. 게다가, 노드들은 정책들을 통해 글로벌 메모리의 특정 부분들에 할당될 수 있으며, 정책들은 각각의 노드에 의해 또는 복수의 노드의 FMC들을 접속하는 스위치에 의해 유지될 수 있다.
RMDA를 통해 메시지들을 전송하는 대신에, 로드 저장 시맨틱스를 이용하여 FMC를 통해 노드들 사이에서 통신한다. 각각의 FMC는 장애 차단 경계를 구현하며, 이 경우에 노드의 CPU들이 실패하는 경우에도 각각의 노드의 글로벌 메모리는 FMC를 통해 액세스될 수 있다. 전술한 바와 같이, 공유 메모리는 STL 네트워킹 스택 또는 PLM 링크를 통해 액세스될 수 있다. 복수의 노드의 각각의 FMC는 로드/저장 시맨틱스를 이용하여 노드들 사이에서 메시지들을 전송할 수 있지만, 복수의 노드의 트래픽을 묶어 두지(tie up) 않는다.
FMC의 장애 차단 경계들은 다양한 기술을 이용하여 구현될 수 있다. 일부 실시예들에서는, 하드웨어를 이용하여, 각각의 CPU가 동일 노드 및 시스템 내의 다른 CPU들과 독립적인 것을 보증한다. 이러한 방식으로, 독립적인 CPU들의 장애는 다른 CPU들의 동작에 영향을 주지 않는다. 다른 실시예들에서, CPU의 장애는 다른 CPU들의 장애를 유발할 수 있지만, 장애 노드 내의 글로벌 메모리는 파워 온되고 활성화될 수 있으며, 따라서 노드는 다른 노드들의 처리에 영향을 주지 않고서 실패할 수 있고, 실패한 노드의 메모리는 액세스 가능하게 유지된다.
도 2는 글로벌 메모리 맵(200), 노드 주소 맵(202) 및 다른 노드 주소 맵(204)의 도면이다. 글로벌 메모리 맵(200)은 노드들에 걸쳐 글로벌 메모리에 대한 액세스를 조정하기 위해 라우터 또는 스위치로서 작용하는 하나 이상의 FMC에 의해 관찰되는 것으로 도시된다. 전술한 바와 같이, 글로벌 메모리의 부분들은 하나 이상의 노드 상에 저장될 수 있다. 따라서, 노드 주소 맵(202)은 제1 노드의 메모리를 나타내고, 노드 주소 맵(204)은 제2 노드의 메모리를 나타낸다.
글로벌 메모리는 다수의 공유 메모리 영역(206)으로 분할될 수 있다. 노드 주소 맵(202) 및 노드 주소 맵(204) 각각은 공유 메모리 영역(208, 210)을 각각 포함한다. 공유 메모리 영역들(208, 210)은 글로벌 메모리에 의해 맵핑된다. 따라서, 글로벌 메모리 맵(200)은 공유 메모리 영역(206)을 포함한다. 각각의 노드는 각각의 공유 메모리 영역에 대해 상이한 액세스 권리들을 가질 수 있다.
노드 주소 맵(202)의 공유 메모리 영역(208)은 1에서 n까지의 범위에 걸치는 임의 수의 공유 메모리 영역들을 포함할 수 있다. 노드(204)의 공유 메모리 영역(210)은 1에서 p까지의 범위에 걸치는 다른 수의 공유 메모리 영역들을 포함할 수 있다. 게다가, 글로벌 메모리에 의해 맵핑되는 공유 메모리 영역(206)은 1에서 n까지의 범위에 걸치는 공유 메모리 영역(208)의 맵핑 및 1에서 p까지의 범위에 걸치는 공유 메모리 영역(210)의 맵핑을 포함한다. 각각의 공유 메모리 영역은 하나의 FMC에 물리적으로 부착될 수 있거나, 다수의 FMC에 걸쳐 스트라이핑(striping)될 수 있다. 더욱이, 메모리 영역들의 크기는 가변적이거나 고정될 수 있다. 실시예들에서, 각각의 영역은 페이지 레벨 입도로 유지될 수 있으며, 따라서 전체 메모리 영역이 메모리 관리 스킴의 일부로서 페이징될 수 있다. 도 1에 도시된 바와 같이, 각각의 노드는 FMC에 의해 액세스될 수 없고 글로벌 메모리 맵(200)에 의해 표현되지 않는 로컬 메모리를 포함할 수 있다. 글로벌 클러스터 메모리 맵(200)은 로컬 일관성 메모리 영역(214) 및 로컬 일관성 메모리 영역(216)을 각각의 개별 노드의 비공개 메모리로서 인식하고 로드-저장 패브릭을 통해 액세스될 수 없는 부분(212)을 포함한다.
공유 메모리 영역(208) 및 공유 메모리 영역(210)은 글로벌 클러스터 메모리 맵(200)과 동일한 주소 범위를 갖는 노드들 각각에 보인다. 각각의 공유 메모리 영역은 노드들의 각각의 세트에 대해 상이한 액세스 권리들을 가질 수 있다. 액세스 권리들은 정책들의 세트에 기초할 수 있다. 더욱이, 각각의 공유 메모리 영역의 주소 범위는 물론, 임의의 액세스 권리들도 범위 레지스터들의 세트에 의해 실시된다. 일부 예들에서, 각각의 공유 메모리 영역의 주소 범위 및 액세스 권리들은 영역들이 FMC(들) 내의 (수퍼) 페이지들인 경우에 메모리 내에 존재하는 페이지-테이블에 의해 구현될 수 있다. 글로벌 메모리는 노드가 적절한 액세스 권리들을 갖는 경우에 임의의 노드 내에 캐싱될 수 있다. 그러나, 글로벌 메모리를 관리하는 하나 이상의 FMC는 노드들 사이에서 하드웨어 기반 캐시 일관성 메커니즘을 실시하지 못할 수 있다. 대신, 데이터 일관성은 노드들 각각에서 실행되는 소프트웨어에 의해 실시된다.
로컬 일관성 메모리 영역들(214, 216)은 메시지 영역으로 사용될 수 있다. 따라서, 로컬 일관성 메모리 영역들(214, 216) 각각은 메시지 영역(218) 및 메시지 영역(220)을 각각 포함한다. 로컬 메시지 영역(218) 및 메시지 영역(220)은 노드들 사이에 메모리를 공유하기 위해 스위치 또는 라우터로서 작용하는 FMC에 의해 직접 액세스될 수 없지만, FMC는 각각의 노드에 의해 전송되는 직접 메모리 액세스(DMA) 메시지들을 통해 글로벌 메모리 맵(200) 내에 도시된 바와 같은 메시지 영역(222)을 통해 로컬 메시지 영역(218) 및 메시지 영역(220)에 간접적으로 액세스할 수 있다. 일부 예들에서, DMA 메시지들은 메일박스 메커니즘을 구현하며, 이 경우에 각각의 노드는 다른 노드들로부터의 메시지들을 위해 그의 "메일박스"를 검사할 수 있다.
메시지 영역(218) 및 메시지 영역(220)은 노드 주소 맵(202) 및 노드 주소 맵(204)에 대응하는 노드들에 걸치는 데이터 일관성을 보증하는 데 사용될 수 있다. 각각의 노드는 메모리의 특정 부분에 대한 액세스를 갖고 메모리의 특정 부분의 상태에 관한 정보를 요청하는 다른 노드들로 메시지를 방송할 수 있다. 예를 들어, 제1 노드는 그가 메모리의 특정 영역에 속하는 데이터를 갖는 경우에 메모리의 그 영역에 속하는 데이터를 갖는 임의의 노드가 메모리의 그 영역을 갱신하도록 요청할 수 있다. 메모리의 그 영역을 갖는 임의의 노드는 메시지에 응답하여, 메모리의 영역이 갱신 및 대체되었다는 것을 요청 제1 노드에 통지할 수 있다. 일부 예들에서, 글로벌 메모리에 액세스하기 위한 메시지들의 전송은 소프트웨어 기반 핸드쉐이크이며, 이는 직접 메모리 액세스이고, 데이터에 액세스하기 위해 I/O 스택을 사용하지 않는다.
글로벌 클러스터 주소 맵(200)은 각각의 노드가 로컬 일관성 메모리 영역들(214, 216)과 같은 비공개 메모리 영역들을 유지하도록 인에이블하면서, 공유 메모리 영역들(208, 210)을 통해 글로벌 공유 메모리 영역을 인에이블한다. 글로벌 메모리의 부분들은 노드간 통신을 위해 사용된다. 노드간 통신에 사용될 수 있는 두 가지 타입의 통신 메커니즘에 대응하는 두 가지 상이한 타입의 메모리가 존재한다. 반사 메모리 영역은 노드들 사이에 전송되는 메시지에 대해 사용될 수 있고, 세마포어 메모리 영역은 세마포어 시맨틱스를 구현하는 데 사용될 수 있다. 반사 메모리 영역 및 세마포어 메모리 영역 양자는 물리 메모리에 의해 백킹된다(backed).
노드 주소 맵(202)은 반사 메모리 영역(224)을 포함하며, 노드 주소 맵(206)은 반사 메모리 영역(226)을 포함한다. 각각의 반사 메모리 영역은 2개의 하위 영역, 즉 메시지 영역 및 인터럽트 영역을 포함한다. 따라서, 노드 주소 맵(202)은 인터럽트 영역(228) 및 메시지 영역(230)을 포함한다. 노드 주소 맵(204)은 인터럽트 영역(232) 및 메시지 영역(234)을 포함한다. 각각의 노드는 반사 메모리 영역을 그의 "캐싱 불가" 공간으로 맵핑한다. 현재 사용되는 바와 같이, 캐싱 불가 공간은 글로벌 메모리에 맵핑되지 않는 각각의 노드의 부분을 지시한다. 따라서, 노드 주소 맵(202)은 반사 메모리 영역(224)을 로컬 일관성 메모리 영역(214)으로 맵핑한다. 유사하게, 노드 주소 맵(204)은 반사 메모리 영역(226)을 로컬 일관성 메모리 영역(216)으로 맵핑한다. 일부 예에서, 각각의 노드는 메모리 기록 시맨틱스를 이용하여 그의 DMA 메시지 영역에 기록한다. 일부 예들에서, 반사 메모리 영역에 기록할 때 사용되는 주소들은 목적지 노드의 로컬 일관성 메모리 영역 내의 주소들과 비교될 때 상이할 수 있다. 이어서, DMA 메시지 영역은 글로벌 메모리로 맵핑되며, 다른 노드들은 글로벌 메모리의 DMA 메시지 영역 내의 데이터 및 메시지들에 액세스할 수 있다. 일부 예들에서, DMA 메시지 영역은 정책에 기초하여 노드들에 이용 가능하다. 인터럽트 영역은 DMA 메시지 영역들과 유사하게 사용될 수 있다. 그러나, 인터럽트 영역에 대한 기록은 노드로부터의 즉석 어텐션을 유발한다. 글로벌 메모리를 관리하는 FMC는 하나 이상의 목적지 노드에 대한 인터럽트 메시지들을 생성한다.
반사 메모리 영역을 통해, 각각의 노드는 그의 로컬 일관성 메모리 영역으로부터 다른 노드들로 메시지들 또는 데이터를 전송할 수 있다. 반사 메모리 영역은 주소 범위에 따라 유니캐스트 또는 멀티캐스트일 수 있다. 유니캐스트 어드레싱 스킴에서, 반사 메모리 영역의 메시지 영역에 대한 기록은 목적지 노드에서만 캐싱될 수 있는 목적지 노드의 비공개 메모리 영역에 대한 기록을 유발할 것이다. 멀티캐스트 어드레싱 스킴에서, 반사 메모리 영역의 메시지 영역에 대한 기록은 목적지 노드에서만 캐싱될 수 있는 목적지 노드의 비공개 메모리 영역에 대한 다수의 기록을 유발할 것이다. 일 실시예에서, 반사 메모리 영역에 대한 기록은 목적지 노드에서 PCIe 하드웨어 스택을 통과하는 DMA 기록으로서 나타날 수 있다. 다른 실시예에서, 반사 메모리 영역에 대한 기록은 일관성 및 메모리 시맨틱스의 결합을 이용하여 목적지 노드로 갈 수 있다. 메모리 시맨틱스는 블록 어드레싱 가능한, 통상적으로 블록당 4KB 액세스인 캐시라인 대 I/O 액세스와 같이 작은 단위로 어드레싱 가능한 액세스들을 지칭할 수 있다. 일관성 시맨틱스는 사본이 프로세서 캐시 내에만 존재하는 경우에도 최종 사본을 반환하는 것이 항상 보증된다는 점에서 프로세서 캐시들에 대해 일관성이 있는 액세스를 지칭할 수 있다. 이것은 QPI 또는 KTI(Keizer Technology Interconnect) 또는 SMI3으로도 알려진 고속 경로 상호접속 기술(Quick Path Interconnect technology)과 같은 일관성 소켓간 패브릭을 필요로 하는 일관성 시맨틱스를 포함한다. 글로벌 메모리를 관리하는 FMC는 하나 이상의 목적지 노드 각각 내에 하나의 (또는 그 이상의) 순환 메시지 큐 구조를 구현할 수 있으며, 따라서 FMC는 메시지를 목적지 노드의 적절한 꼬리 포인터(tail pointer)에 첨부한다. FMC는 기록을 수행하는 데 사용되는 소스 노드의 주소 범위에 기초하여 목적지 노드를 결정할 수 있다.
세마포어 영역은 데이터 일관성 모델에 의해 인에이블되는 로드 저장 아키텍처를 충분히 이용하기 위해 로드 또는 저장 동작들을 이용하여 액세스될 수 있다. 세마포어 영역은 메모리 시맨틱스를 이용하여 액세스될 수 있다. 세마포어 영역은 하드웨어 일관성이 없다. 오히려, 세마포어 영역은 각각의 노드 내의 소프트웨어 실시 데이터 일관성 메커니즘에 대한 하드웨어 지원을 인에이블한다. 일부 예들에서, 공유 메모리의 각각의 블록은 메모리의 세마포어 영역 내의 디렉토리에 대응한다. 각각의 노드는 메모리의 각각의 공유 블록에 대한 디렉토리의 주소에 관한 정보를 갖는다. 노드가 데이터의 블록에 액세스하기를 원할 때, 노드는 세마포어 영역 내의 디렉토리를 이용하여, 노드가 데이터에 대한 액세스를 갖는지를 결정할 수 있다. 노드는 또한 데이터의 블록에 대한 디렉토리를 갱신하여, 노드가 데이터를 갖고, 데이터가 보호된다는 것을 나타낼 수 있다. 더욱이, 디렉토리는 노드가 데이터에 대한 액세스를 갖지만, 데이터가 현재 사용중이라는 것을 노드에 통지할 수 있다. 일부 예들에서, DMA 메시지 또는 인터럽트는 데이터가 이용가능하다는 것을 노드에 통지하는 데 사용될 수 있다.
각각의 노드는 록(lock)의 사용을 통해 공유 데이터를 보호할 수 있다. 모든 공유 데이터가 록에 의해 보호될 수 있다. 일부 예들에서, 록들은 록 관리기에 의해 관리된다. 노드는 공유 데이터에 액세스하기 전에 록을 요청함으로써 FMC에서 디렉토리 정보를 갱신할 수 있다. 록은 록에 의해 보호되는 데이터를 기록 또는 갱신하기 위한 "배타적" 록 또는 록에 의해 보호되는 데이터를 판독하기 위한 "공유" 록일 수 있다. 노드가 배타적 록을 승낙받는 경우, 록 관리기는 노드가 공유 블록 내의 데이터에 대한 록을 갖는 유일한 노드인 것을 보증한다. 노드가 공유 록을 갖는 경우, 다른 노드들도 특정 블록에서 데이터에 대한 공유 록들을 가질 수 있지만, 어떠한 노드도 그 공유 블록에 대한 배타적 록을 유지할 수 없다.
FMC는 소정의 기능들을 이용하여 세마포어 영역 내의 각각의 세마포어에 대응하는 메타데이터를 조작하여, 이 영역의 주어진 부분에 대한 액세스의 이력을 유지할 수 있다. 기능들은 고정되거나 프로그래밍될 수 있다. 예를 들어, 원격 노드가 세마포어 메모리 주소에 대한 판독을 발행함으로써 록(공유 또는 배타적, 판독 또는 기록)을 요청한다(공유 대 배타적, 판독 대 기록은 판독되는 세마포어 주소의 하위 주소 비트들에 의해 결정된다). 이어서, FMC는 록 요청이 승낙될 수 있는지를 결정하고, 승낙되는 경우에 요청자의 노드 ID를 노드로 반환한다. 세마포어가 이미 록킹된 경우에는 록 소유자의 노드 ID를 반환한다. 또한, FMC는 록 요청자들의 큐, 각각의 요청자에 의해 요청된 록의 타입, 록의 현재 소유자 및 타임아웃 카운터를 추적하는 각각의 세마포어와 관련된 메타데이터를 유지한다.
록을 요청한 원격 노드가 록을 승낙받은 경우, FMC는 요청 노드의 노드 ID를 그 자신에게 반환하여 록이 승낙된 것을 나타낼 것이다. FMC가 0을 반환하여 록 승낙을 지시하고, 1을 반환하여 록이 소정의 다른 노드에 의해 소유된다는 것을 나타내는 다른 스킴들도 가능하다.
록 소유자는 세마포어 주소에 기록함으로써 록을 포기한다. FMC는 기록을 해석하고, 기록이 록 소유자로부터 발생하였다는 것을 비교한 후에, 록을 다음 요청자에게 할당한다. 세마포어에 대한 액세스를 제공하기 위한 정책은 구성될 수 있는 FMC 파라미터이다. 예를 들어, 선착순(First Come First Served), 라운드 로빈, 가중 라운드 로빈 등은 FMC 논리에 의해 지원될 수 있는 정책들의 일부 예들이다.
일부 예들에서, 32-노드 시스템은 512B 레벨 입도(블록 크기)에서 글로벌 공유 저장소 상의 데이터 일관성을 유지하기를 원한다. FMC는 각각의 공유 블록에 대해 16B "디렉토리"를 구현할 수 있다. 각각의 노드에서 실행되는 소프트웨어는 각각의 공유 블록에 대한 16B 주소를 알며, 그에 따라 액세스를 행한다. 16B 주소의 비트들 [33:32]는 (2'b00 "무효", 2'b01 "공유", 2'b010 "배타적"과 같은) 전체 디렉토리 정보를 구현할 수 있다. 16B 주소의 비트들 [31:0]은 어느 노드(들)가 이 블록을 가질 수 있는지(공유 또는 배타적)를 식별할 수 있다. 다른 비트들(예로서, 16B 주소의 비트들 58:34)은 전체 디렉토리를 "무효화"할 수 있는 특권 기록과 같은 관리 정보를 포함할 수 있다. 무효 디렉토리는 예를 들어 복구 소프트웨어가 노드 장애에 후속하는 라인을 제거한 후에 발생할 수 있다. 관리 정보는 요청 노드가 다른 메커니즘들을 통해 데이터 일관성을 처리하였음을 보증한 경우에 디렉토리를 무효화하는 데에도 사용될 수 있다. 더욱이, 관리 정보는 다음 액세스를 위해 우선순위 포인터가 위치하는 곳과 같은 정보를 포함할 수 있다.
예들에서, 16B 주소의 비트들 [95:64]는 데이터에 대한 요청들의 큐를 저장할 수 있다. 노드가 "공유" 액세스를 원하는 경우, 0의 오프셋에서 16B 주소를 판독할 수 있다. 배타적 액세스를 위해 노드는 4B의 오프셋에서 16B 주소를 판독할 수 있으며, 관리 액세스를 위해 노드는 8B의 오프셋에서 16B 주소를 판독할 수 있다. 노드가 데이터의 블록에 대한 공유 액세스를 원하는 것으로 가정한다. 이것은 오프셋 0B에 대한 "판독"을 발행한다. 공유 액세스에 대한 요청에 응답하여, FMC는 16B 디렉토리를 판독한다. 블록이 "무효" 또는 "공유"인 경우, FMC는 성공을 지시하는 사전 결정된 값을 요청 노드로 반환한다. 일부 예들에서, 사전 결정된 값은 모두 0들일 수 있다. 이어서, FMC는 비트들 [31:0] 내에 설정된 요청 노드의 ID 비트를 이용하여 그 블록의 상태를 "공유"로서 저장한다. 블록이 "배타적"인 경우, FMC는 "나중 시도" 데이터를 요청 노드로 반환할 수 있다. 일부 예들에서, 나중 시도 데이터는 모두 1들일 수 있다. 대안으로서, FMC는 블록을 가진 노드(들)를 식별하는 32-비트 벡터를 반환할 수 있으며, 따라서 요청자 노드는 DMA 메시지 영역에 의해 설명되는 메일박스 메커니즘을 이용하여 메시지를 전송할 수 있다. 노드는 또한 인터럽트 영역을 이용하여 블록에 대한 액세스를 획득할 수 있다. 다른 대안에서, FMC는 "플러시(flush)" 요청을 전송할 수 있다. 일부 예들에서, 플러시 요청은 인터럽트 영역의 DMA 메시지 영역을 이용하여 전송된다. 플러시 요청 후에, FMC는 요청 노드를 그의 "큐" 내에 배치할 수 있다. 블록이 공유될 준비가 된 때, FMC는 메시지를 전송하거나, 노드가 액세스했었던 16B 세마포어 영역에 대한 DMA 기록을 발행함으로써 판독-반환을 겹쳐 쓸 수 있다. 이 경우, 각각의 노드는 세마포어에 한 번 액세스하고, 이어서 적절한 액세스 권리를 획득할 때까지 세마포어의 그의 로컬 캐시 사본 상에서 스핀한다. 노드는 FMC에 상이한 주소 오프셋들을 제공함으로써 이러한 액세스 메커니즘들 중 어느 하나를 동적으로 선택할 수 있다는 점에 유의한다. 노드는 16B 디렉토리에 기록함으로써 블록의 소유권을 포기할 수 있다. FMC는 단지 16B 디렉토리를 판독한 후에, 필요한 경우에 디렉토리 정보 비트들을 갱신하고, 그가 유지하는 소유권 리스트로부터 노드를 제거할 것이다.
따라서, 글로벌 메모리는 약정을 포함할 수 있고, 그에 따라 노드들은 글로벌 메모리에서 데이터를 취하고 갱신할 수 있으며, 노드들 사이의 핸드쉐이킹을 이용하는 메모리의 클러스터링 모델이 존재한다. 게다가, FMC들은 각각의 노드에 대한 적절한 액세스 권리들을 보증하는 것은 물론, 죽은 임의의 노드의 데이터에 대한 액세스를 제공할 수도 있다. 이러한 액세스는 I/O 소프트웨어 스택의 지연 없이 로드/저장 시맨틱스 및 하드웨어를 이용하여 이루어진다. 더욱이, 메모리는 블록 액세스가 아니라 플랫 메모리와 같이 선형 방식으로 바이트별로 액세스될 수 있다. 일부 예들에서, 공유 메모리 영역들은 캐싱 가능하다.
도 3은 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜을 제공하는 프로세스 흐름도(300)이다. 참조 번호 302에서, 캐싱 가능한 글로벌 메모리가 인에이블된다. 일부 예들에서, 글로벌 메모리는 복수의 노드에 걸쳐 저장된다. 참조 번호 304에서, 복수의 노드에 걸쳐 데이터 일관성이 유지된다. 일부 예들에서, 데이터 일관성은 복수의 노드의 각각의 노드에 저장된 소프트웨어 및 복수의 노드의 각각의 노드를 접속하는 패브릭 메모리 제어기 상의 하드웨어 지원 메커니즘을 이용하여 유지된다. 일부 예들에서, 패브릭 메모리 제어기는 차세대 인텔® 고성능 컴퓨팅 호스트 패브릭 인터페이스의 일부로서 통합된다. 참조 번호 306에서, 복수의 노드의 각각의 노드에 대해 독립적인 장애 도메인들이 구현된다. 독립적인 장애 도메인들은 복수의 노드 중 제1 노드 상의 공유 메모리가 제1 노드의 장애 시에도 다른 노드들에 의해 액세스될 수 있도록 구현될 수 있다.
본 기술들은 사용자 공간에 맵핑될 수 있는 노드들 사이에서 메시지들을 전송하기 위한 매우 낮은 지연의 메커니즘을 제공한다. 본 기술들은 세마포어들을 구현하고, 기본 프로세서 하드웨어가 캐싱 불가 영역에 대한 세마포어 동작을 지원하지 않을 수 있을 때에도 정보를 교환하기 위한 저지연 메커니즘도 제공한다. 이것은 저지연 메시지 전송 및 노드들 사이의 공유 저장소에 대한 데이터 일관성을 포함하는 효율적인 클러스터링 솔루션을 생성한다. 더욱이, 본 기술들은 임의의 고밀도 랙 스케일 아키텍처(rack scale architecture; RSA)와 함께 이용될 수 있다.
예 1
여기서는 데이터 일관성을 제공하기 위한 장치가 설명된다. 장치는 글로벌 영구 메모리, 반사 메모리 영역 및 세마포어 메모리를 포함한다. 글로벌 영구 메모리는 입/출력(I/O) 시맨틱스 및 메모리 시맨틱스를 포함하는 프로토콜을 이용하여 액세스된다. 반사 메모리 영역은 글로벌 영구 메모리의 일부이며, 복수의 노드의 각각의 노드는 반사 메모리 영역을 캐싱 불가능한 공간으로 맵핑한다. 게다가, 세마포어 메모리는 실시되는 데이터 일관성에 대한 하드웨어 지원을 제공한다.
입/출력(I/O) 시맨틱스 및 메모리 시맨틱스는 Plattsmouth 링크를 이용하여 구현될 수 있다. 글로벌 영구 메모리의 일부는 노드간 통신을 위해 사용될 수 있다. 게다가, 글로벌 메모리는 메시지 영역을 포함할 수 있으며, 글로벌 메모리의 메시지 영역에 대한 기록은 목적지 노드의 비공개 메모리 영역에 대한 기록을 유발할 수 있다. 메시지 영역은 메모리 시맨틱스를 이용하여 액세스될 수 있다. 게다가, 글로벌 메모리의 각각의 공유 메모리 블록에 대한 세마포어 영역 내에 디렉토리가 유지될 수 있다. 글로벌 메모리는 DIMM, 비휘발성 메모리, 휘발성 메모리, 임의의 저장 디바이스, 메모리 디바이스 또는 이들의 임의 조합을 이용하여 구현될 수 있다. 더욱이, 반사 메모리 영역 및 세마포어 메모리 영역은 물리 메모리에 의해 백킹될 수 있다. 또한, 각각의 노드는 반사 메모리 영역을 그의 캐싱 불가 공간으로 맵핑할 수 있다.
예 2
여기서는 클러스터 레벨에서 데이터 일관성을 제공하기 위한 시스템이 설명된다. 시스템은 복수의 노드를 포함하고, 복수의 노드는 소프트웨어 일관성 메커니즘을 포함한다. 시스템은 글로벌 공유 메모리도 포함하고, 글로벌 공유 메모리는 메시지 영역, 세마포어 영역 및 공유 메모리 영역을 포함한다. 또한, 시스템은 하나 이상의 패브릭 메모리 제어기를 포함하고, 하나 이상의 패브릭 메모리 제어기는 복수의 노드를 접속하고, 클러스터 레벨에서의 데이터 일관성을 위한 하드웨어 지원을 제공한다.
패브릭 메모리 제어기는 메모리 로드 저장 시맨틱스 및 로드 및 저장 기능을 갖는 입/출력 프로토콜을 지원하는 저지연 패브릭일 수 있다. 패브릭 메모리 제어기는 Plattsmouth 프로토콜을 지원하는 저지연 패브릭일 수도 있다. 패브릭 메모리 제어기는 CPU의 호스트 패브릭 인터페이스의 일부로서 통합될 수 있다. 게다가, 패브릭 메모리 제어기는 인텔® 고성능 컴퓨팅 호스트 패브릭 인터페이스의 일부로서 통합될 수 있다. 더욱이, 패브릭 메모리 제어기는 CPU 소켓 내에 통합될 수 있다.
글로벌 메모리는 DIMM, 비휘발성 메모리, 휘발성 메모리, 임의의 저장 디바이스, 메모리 디바이스 또는 이들의 임의 조합을 이용하여 구현될 수 있다. 글로벌 메모리는 비휘발성 기술이 차세대 비휘발성 기술인 비휘발성 메모리 또는 저장소를 이용하여 구현될 수 있다. 글로벌 메모리는 비휘발성 기술이 상변화 메모리 및 스위치(PCMS) 디바이스들인 비휘발성 메모리 또는 저장소를 이용하여 구현될 수도 있다.
복수의 노드 각각의 로컬 메모리는 로컬 메시지 영역을 포함할 수 있으며, 글로벌 메모리는 복수의 노드 각각에 의해 전송되는 DMA 메시지들을 통해 로컬 메시지 영역에 간접적으로 액세스한다. 게다가, 로컬 메모리 영역들은 직접 메모리 액세스이고 데이터에 액세스하기 위해 I/O 스택을 사용하지 않는 소프트웨어 기반 핸드쉐이크를 이용하여 글로벌 메모리에 액세스하기 위한 메시지들을 전송할 수 있다. 세마포어 메모리 영역은 노드간 통신을 위한 세마포어 시맨틱스를 구현하는 데 사용될 수 있다. 반사 메모리 영역은 노드들 사이의 메시지 전송을 위해 사용될 수 있다. 또한, 반사 메모리 영역은 노드간 통신을 위해 사용되는 인터럽트 영역을 포함할 수 있다.
예 3
여기서는 클러스터 레벨에서의 데이터 일관성을 위한 방법이 설명된다. 방법은 캐싱 가능한 글로벌 메모리를 인에이블하는 단계를 포함하며, 글로벌 메모리는 복수의 노드에 걸쳐 저장된다. 방법은 복수의 노드에 걸쳐 데이터 일관성을 유지하는 단계도 포함한다. 또한, 방법은 복수의 노드의 각각의 노드에 대한 독립적인 장애 도메인들을 구현하는 단계를 포함한다. 복수의 노드의 각각의 노드 상에 저장된 소프트웨어 및 복수의 노드의 각각의 노드를 접속하는 패브릭 메모리 제어기 상의 하드웨어 지원 메커니즘을 이용하여 데이터 일관성이 유지될 수 있다. 게다가, 독립적인 장애 도메인들은 복수의 노드 중 제1 노드 상의 공유 메모리가 제1 노드의 장애 시에도 다른 노드들에 의해 액세스될 수 있도록 구현될 수 있다.
위의 설명에서는 개시되는 발명의 다양한 양태들이 설명되었다. 설명의 목적을 위해, 특정 숫자들, 시스템들 및 구성들을 설명하여 본 발명의 충분한 이해를 제공하였다. 그러나, 본 발명의 이익을 갖는 이 분야의 기술자에게는 본 발명이 특정 상세 없이도 실시될 수 있다는 것이 명백하다. 다른 예들에서는 개시되는 발명을 불명확하게 하지 않기 위해 공지 특징들, 컴포넌트들 또는 모듈들이 생략되거나, 간소화되거나, 결합되거나, 분할되었다.
개시되는 발명의 다양한 실시예들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있으며, 기계에 의해 액세스될 때 기계로 하여금 작업들을 수행하거나, 추상 데이터 타입들 또는 저레벨 하드웨어 상황들을 정의하거나, 결과를 생성하게 하는 명령어들, 함수들, 프로시저들, 데이터 구조들, 논리, 애플리케이션 프로그램들, 설계의 시뮬레이션, 에뮬레이션 및 구성을 위한 설계 표현들 또는 포맷들과 같은 프로그램 코드를 참조하여 또는 그와 관련하여 설명될 수 있다.
시뮬레이션을 위해, 프로그램 코드는 설계되는 하드웨어가 어떻게 동작할 것으로 예상되는지에 대한 모델을 본질적으로 제공하는 하드웨어 서술 언어 또는 다른 기능 서술 언어를 이용하여 하드웨어를 표현할 수 있다. 프로그램 코드는 컴파일 및/또는 해석될 수 있는 어셈블리 또는 기계 언어 또는 데이터일 수 있다. 더구나, 이 분야에서는 일반적으로 소프트웨어가 하나의 형태 또는 다른 형태에서 액션을 취하거나 결과를 생성한다는 말을 쓴다. 그러한 표현들은 프로세서로 하여금 액션을 수행하거나 결과를 생성하게 하는 처리 시스템에 의한 프로그램 코드의 실행을 설명하는 간단한 방법일 뿐이다.
프로그램 코드는 예를 들어 반도체 메모리, 하드 드라이브, 플로피 디스크, 광학 저장 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 디지털 다기능 디스크(DVD) 등은 물론, 기계 액세스 가능 생체 상태 유지 저장소와 같은 더 새로운 매체들을 포함하는 저장 디바이스들 및/또는 관련 기계 판독 가능 또는 기계 액세스 가능 매체와 같은 휘발성 및/또는 비휘발성 메모리에 저장될 수 있다. 기계 판독 가능 매체는 안테나, 광섬유, 통신 인터페이스 등과 같은 기계에 의해 판독 가능한 형태로 정보를 저장, 전송 또는 수신하기 위한 임의의 유형 메커니즘을 포함할 수 있다. 프로그램 코드는 패킷, 직렬 데이터, 병렬 데이터 등의 형태로 전송될 수 있으며, 압축되거나 암호화된 포맷으로 사용될 수 있다.
프로그램 코드는 프로세서, 프로세서에 의해 판독 가능한 휘발성 및/또는 비휘발성 메모리, 적어도 하나의 입력 디바이스 및/또는 하나 이상의 출력 디바이스를 각자 포함하는 이동 또는 고정 컴퓨터, 개인 휴대 단말기, 셋톱 박스, 셀룰러 전화 및 페이저, 및 다른 전자 디바이스와 같은 프로그래밍 가능 기계들 상에서 실행되는 프로그램들 내에 구현될 수 있다. 프로그램 코드는 입력 디바이스를 이용하여 입력되는 데이터에 적용되어, 설명되는 실시예들을 수행하고 출력 정보를 생성할 수 있다. 출력 정보는 하나 이상의 출력 디바이스에 적용될 수 있다. 이 분야의 통상의 기술자는 개시되는 발명의 실시예들이 멀티프로세서 또는 다중 코어 프로세서 시스템, 미니 컴퓨터, 메인 프레임 컴퓨터는 물론, 사실상 모든 디바이스 내에 내장될 수 있는 퍼베이시브(pervasive) 또는 미니어처 컴퓨터 또는 프로세서를 포함하는 다양한 컴퓨터 시스템 구성들을 이용하여 실시될 수 있다는 것을 알 수 있다. 개시되는 발명의 실시예들은 통신 네트워크를 통해 링크되는 원격 처리 디바이스들에 의해 작업들을 수행할 수 있는 분산 컴퓨팅 환경들에서도 실시될 수 있다.
동작들이 순차적인 프로세스로서 설명될 수 있지만, 동작들 중 일부는 사실상 병렬로, 동시에 그리고/또는 분산 환경에서 그리고 단일 또는 다중 프로세서 기계들에 의한 액세스를 위해 국지적으로 그리고/또는 원격적으로 저장된 프로그램 코드를 이용하여 수행될 수 있다. 게다가, 일부 실시예들에서, 동작들의 순서는 개시되는 발명의 사상으로부터 벗어나지 않고서 재배열될 수 있다. 프로그램 코드는 내장된 제어기들에 의해 또는 그들과 연계하여 사용될 수 있다.
개시되는 발명이 실시예들을 참조하여 설명되었지만, 이러한 설명은 한정으로 해석되는 것을 의도하지 않는다. 실시예들에 대한 다양한 변경들은 물론, 개시되는 발명과 관련된 분야의 기술자들에게 명백한 본 발명의 다른 실시예들은 개시되는 발명의 범위 내에 있는 것으로 간주된다.

Claims (20)

  1. 데이터 일관성을 제공하기 위한 노드로서,
    중앙 처리 장치(CPU);
    노드 주소 맵을 포함하는 노드 메모리 - 상기 노드 주소 맵은 (i) 상기 노드와 다른 노드들 사이에 공유되는 글로벌 메모리에 맵핑되는 공유 메모리 영역, (ii) 상기 글로벌 메모리의 일부를 형성하고 상기 노드 메모리의 캐싱 불가능한 공간에 맵핑되는 반사 메모리 영역, 및 (iii) 상기 글로벌 메모리의 실시되는 데이터 일관성을 위한 하드웨어 지원을 제공하는 세마포어 영역을 포함함 -; 및
    상기 다른 노드들에 의한 상기 노드 메모리에의 액세스를 관리하는 패브릭 메모리 제어기
    를 포함하는 노드.
  2. 제1항에 있어서, 상기 세마포어 영역은 상기 글로벌 메모리의 메모리의 각각의 공유 블록에 대한 디렉토리를 포함하는, 노드.
  3. 제2항에 있어서, 상기 패브릭 메모리 제어기는 또한,
    상기 다른 노드들 중의 다른 노드로부터, 상기 공유 메모리 영역에 저장된 요청된 데이터와 연관된 록(lock)에 대한 요청을 수신하고;
    상기 디렉토리에 포함된 데이터에 기초하여 상기 요청된 데이터와 연관된 록을 상기 다른 노드에 대해 승낙하고;
    상기 록의 승낙에 응답하여 상기 디렉토리를 갱신하는, 노드.
  4. 제3항에 있어서, 상기 록에 대한 요청을 수신하는 것은 상기 다른 노드로부터 상기 디렉토리 내의 주소로의 판독 요청을 수신하는 것을 포함하는, 노드.
  5. 제4항에 있어서, 상기 판독 요청은 주소 오프셋을 포함하고 상기 록의 타입은 상기 오프셋의 값에 의해 정의되는, 노드.
  6. 제4항에 있어서, 상기 록을 승낙하는 것은 상기 요청된 데이터가 저장되는 목적지 노드의 식별자를 전송하는 것을 포함하는, 노드.
  7. 제1항에 있어서, 상기 패브릭 메모리 제어기는 또한 상기 CPU가 장애 상태에 있는 동안 상기 다른 노드들에 의한 상기 노드 메모리에의 액세스를 용이하게 하는, 노드.
  8. 복수의 명령어가 저장되어 있는 하나 이상의 머신 판독가능 저장 매체로서,
    상기 복수의 명령어들은, 실행 될 때, 노드로 하여금:
    상기 노드의 노드 메모리에서 노드 주소 맵을 확립하고 - 상기 노드 주소 맵은 (i) 상기 노드와 다른 노드들 사이에 공유되는 글로벌 메모리에 맵핑되는 공유 메모리 영역, (ii) 상기 글로벌 메모리의 일부를 형성하고 상기 노드 메모리의 캐싱 불가능한 공간에 맵핑되는 반사 메모리 영역, 및 (iii) 상기 글로벌 메모리의 실시되는 데이터 일관성을 위한 하드웨어 지원을 제공하는 세마포어 영역을 포함함 -;
    상기 노드의 패브릭 메모리 제어기에 의해, 상기 다른 노드들에 의한 상기 노드 메모리에의 액세스를 관리하게 하는, 하나 이상의 머신 판독가능 저장 매체.
  9. 제8항에 있어서, 상기 세마포어 영역은 상기 글로벌 메모리의 메모리의 각각의 공유 블록에 대한 디렉토리를 포함하는, 하나 이상의 머신 판독가능 저장 매체.
  10. 제9항에 있어서, 상기 복수의 명령어는, 실행 될 때, 또한 상기 노드로 하여금:
    상기 다른 노드들 중의 다른 노드로부터, 상기 공유 메모리 영역에 저장된 요청된 데이터와 연관된 록에 대한 요청을 수신하고;
    상기 디렉토리에 포함된 데이터에 기초하여 상기 요청된 데이터와 연관된 록을 상기 다른 노드에 대해 승낙하고;
    상기 록의 승낙에 응답하여 상기 디렉토리를 갱신하게 하는, 하나 이상의 머신 판독가능 저장 매체.
  11. 제10항에 있어서, 상기 록에 대한 요청을 수신하는 것은 상기 다른 노드로부터 상기 디렉토리 내의 주소로의 판독 요청을 수신하는 것을 포함하는, 하나 이상의 머신 판독가능 저장 매체.
  12. 제11항에 있어서, 상기 판독 요청은 주소 오프셋을 포함하고 상기 록의 타입은 상기 오프셋의 값에 의해 정의되는, 하나 이상의 머신 판독가능 저장 매체.
  13. 제11항에 있어서, 상기 록을 승낙하는 것은 상기 요청된 데이터가 저장되는 목적지 노드의 식별자를 전송하는 것을 포함하는, 하나 이상의 머신 판독가능 저장 매체.
  14. 제8항에 있어서, 상기 패브릭 메모리 제어기는 또한 상기 CPU가 장애 상태에 있는 동안 상기 다른 노드들에 의한 상기 노드 메모리에의 액세스를 용이하게 하는, 하나 이상의 머신 판독가능 저장 매체.
  15. 방법으로서,
    노드의 노드 메모리에서 노드 주소 맵을 확립하는 단계 - 상기 노드 주소 맵은 (i) 상기 노드와 다른 노드들 사이에 공유되는 글로벌 메모리에 맵핑되는 공유 메모리 영역, (ii) 상기 글로벌 메모리의 일부를 형성하고 상기 노드 메모리의 캐싱 불가능한 공간에 맵핑되는 반사 메모리 영역, 및 (iii) 상기 글로벌 메모리의 실시되는 데이터 일관성을 위한 하드웨어 지원을 제공하는 세마포어 영역을 포함함 -; 및
    상기 노드의 패브릭 메모리 제어기에 의해, 상기 다른 노드들에 의한 상기 노드 메모리에의 액세스를 관리하는 단계
    를 포함하는 방법.
  16. 제15항에 있어서, 상기 세마포어 영역은 상기 글로벌 메모리의 메모리의 각각의 공유 블록에 대한 디렉토리를 포함하는, 방법.
  17. 제16항에 있어서,
    상기 다른 노드들 중의 다른 노드로부터, 상기 공유 메모리 영역에 저장된 요청된 데이터와 연관된 록에 대한 요청을 수신하는 단계;
    상기 디렉토리에 포함된 데이터에 기초하여 상기 요청된 데이터와 연관된 록을 상기 다른 노드에 대해 승낙하는 단계; 및
    상기 록의 승낙에 응답하여 상기 디렉토리를 갱신하는 단계
    를 더 포함하는 방법.
  18. 제17항에 있어서, 상기 록에 대한 요청을 수신하는 단계는 상기 다른 노드로부터 상기 디렉토리 내의 주소로의 판독 요청을 수신하는 단계를 포함하는, 방법.
  19. 제18항에 있어서, 상기 판독 요청은 주소 오프셋을 포함하고 상기 록의 타입은 상기 오프셋의 값에 의해 정의되는, 방법.
  20. 제18항에 있어서, 상기 록을 승낙하는 단계는 상기 요청된 데이터가 저장되는 목적지 노드의 식별자를 전송하는 단계를 포함하는, 방법.
KR1020160163593A 2013-12-27 2016-12-02 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜 KR102204751B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,733 2013-12-27
US14/142,733 US9383932B2 (en) 2013-12-27 2013-12-27 Data coherency model and protocol at cluster level

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020140167414A Division KR101684490B1 (ko) 2013-12-27 2014-11-27 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜

Publications (2)

Publication Number Publication Date
KR20160143619A KR20160143619A (ko) 2016-12-14
KR102204751B1 true KR102204751B1 (ko) 2021-01-19

Family

ID=53372167

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020140167414A KR101684490B1 (ko) 2013-12-27 2014-11-27 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜
KR1020160163593A KR102204751B1 (ko) 2013-12-27 2016-12-02 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020140167414A KR101684490B1 (ko) 2013-12-27 2014-11-27 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜

Country Status (4)

Country Link
US (2) US9383932B2 (ko)
KR (2) KR101684490B1 (ko)
CN (1) CN104750624B (ko)
DE (1) DE102014117463A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014101108A1 (zh) * 2012-12-28 2014-07-03 华为技术有限公司 分布式存储系统的缓存方法、节点和计算机可读介质
CN105793830B (zh) * 2013-12-26 2019-12-24 英特尔公司 一种在节点之间共享存储器和i/o服务的装置、方法、系统
US9588855B2 (en) * 2015-04-22 2017-03-07 PernixData, Inc. Management and utilization of fault domains in distributed cache systems
US20170078367A1 (en) * 2015-09-10 2017-03-16 Lightfleet Corporation Packet-flow message-distribution system
US10296580B1 (en) 2015-09-18 2019-05-21 Amazon Technologies, Inc. Delivering parsed content items
US10127210B1 (en) * 2015-09-25 2018-11-13 Amazon Technologies, Inc. Content rendering
US10601894B1 (en) 2015-09-28 2020-03-24 Amazon Technologies, Inc. Vector-based encoding for content rendering
US10241983B1 (en) 2015-09-28 2019-03-26 Amazon Technologies, Inc. Vector-based encoding for content rendering
US10691750B1 (en) 2015-09-28 2020-06-23 Amazon Technologies, Inc. Browser configured to efficiently store browsing session state
US10341345B1 (en) 2015-12-15 2019-07-02 Amazon Technologies, Inc. Network browser configuration
US10348797B1 (en) 2015-12-15 2019-07-09 Amazon Technologies, Inc. Network browser configuration
US10162770B2 (en) 2016-06-30 2018-12-25 Intel Corporation Virtual machine migration in rack scale systems
US10585818B2 (en) 2017-04-05 2020-03-10 International Business Machines Corporation Low overhead exclusive control for shared memory objects
CN107704212B (zh) * 2017-10-31 2019-09-06 新华三信息技术有限公司 一种数据处理方法及装置
US10540227B2 (en) 2018-01-03 2020-01-21 Hewlett Packard Enterprise Development Lp Sequential memory access on a high performance computing system
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes
US11573898B2 (en) * 2020-08-17 2023-02-07 Hewlett Packard Enterprise Development Lp System and method for facilitating hybrid hardware-managed and software-managed cache coherency for distributed computing
CN112486703B (zh) * 2020-11-27 2024-02-06 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局数据存储器管理方法
CN112612422B (zh) * 2020-12-29 2022-08-23 重庆邮电大学 移动边缘计算中副本的动态一致性维护方法
US11966590B2 (en) 2022-02-25 2024-04-23 Samsung Electronics Co., Ltd. Persistent memory with cache coherent interconnect interface
CN117950599A (zh) * 2024-03-27 2024-04-30 国家超级计算天津中心 基于分布式系统的i/o栈构建方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5245703A (en) 1988-06-27 1993-09-14 Bull S.A. Data processing system with multiple communication buses and protocols
US20010052054A1 (en) 1999-03-29 2001-12-13 Hubertus Franke Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US20050223265A1 (en) 2004-03-29 2005-10-06 Maclaren John Memory testing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826653B2 (en) * 2002-02-06 2004-11-30 Hewlett-Packard Development Company, L.P. Block data mover adapted to contain faults in a partitioned multiprocessor system
JP4338075B2 (ja) * 2003-07-22 2009-09-30 株式会社日立製作所 記憶装置システム
CN101057223B (zh) * 2004-10-15 2011-09-14 索尼计算机娱乐公司 支持多处理器系统中的多个配置的方法和设备
US7237149B2 (en) * 2005-02-25 2007-06-26 Freescale Semiconductor, Inc. Method and apparatus for qualifying debug operation using source information
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8775880B2 (en) * 2009-06-11 2014-07-08 STMicroelectronics Intenational N.V. Shared fuse wrapper architecture for memory repair
US8370712B2 (en) * 2009-07-23 2013-02-05 International Business Machines Corporation Memory management in a non-volatile solid state memory device
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
US9697223B2 (en) * 2013-07-08 2017-07-04 International Business Machines Corporation Providing identifiers to data files in a data deduplication system
US9842015B2 (en) * 2013-09-27 2017-12-12 Intel Corporation Instruction and logic for machine checking communication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5245703A (en) 1988-06-27 1993-09-14 Bull S.A. Data processing system with multiple communication buses and protocols
US20010052054A1 (en) 1999-03-29 2001-12-13 Hubertus Franke Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US20050223265A1 (en) 2004-03-29 2005-10-06 Maclaren John Memory testing

Also Published As

Publication number Publication date
KR101684490B1 (ko) 2016-12-09
KR20160143619A (ko) 2016-12-14
US10296399B2 (en) 2019-05-21
CN104750624A (zh) 2015-07-01
DE102014117463A1 (de) 2015-07-02
US20170046208A1 (en) 2017-02-16
KR20150077296A (ko) 2015-07-07
CN104750624B (zh) 2018-07-17
US9383932B2 (en) 2016-07-05
US20150186057A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
KR102204751B1 (ko) 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜
JP6202756B2 (ja) 支援型コヒーレント共有メモリ
CN109154910B (zh) 用于存储器中处理的高速缓存一致性
US6826653B2 (en) Block data mover adapted to contain faults in a partitioned multiprocessor system
US8180996B2 (en) Distributed computing system with universal address system and method
CN103294612B (zh) 在多级缓存一致性域系统局部域构造Share-F状态的方法
US9952975B2 (en) Memory network to route memory traffic and I/O traffic
TWI431475B (zh) 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法
CN101097545B (zh) 独占所有权探听过滤器
US10402327B2 (en) Network-aware cache coherence protocol enhancement
CN103119571B (zh) 用于目录高速缓存的分配和写策略的装置和方法
US20110004729A1 (en) Block Caching for Cache-Coherent Distributed Shared Memory
US20180095906A1 (en) Hardware-based shared data coherency
CN103294611B (zh) 一种基于有限数据一致性状态的服务器节点数据缓存方法
CN117059147A (zh) 以高速缓存行粒度跟踪存储器修改
US9495292B1 (en) Cache management
Jain et al. Memory Sharing with CXL: Hardware and Software Design Approaches
Singh et al. THE FEEDING OF HIGH-PERFORMANCE PROCESSOR CORES--QUICKPATH INTERCONNECTS AND THE NEW I/O HUBS.
BR112017017306B1 (pt) Método para acessar dados em um sistema com múltiplos núcleos, dispositivo de cache de diretório, sistema com múltiplos núcleos, e unidade de armazenagem de diretório

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant