KR20060044631A - 지속성 메모리 액세스 시스템, 지속성 메모리의 직접액세스 방법 및 지속성 메모리 시스템을 액세스하는 시스템 - Google Patents

지속성 메모리 액세스 시스템, 지속성 메모리의 직접액세스 방법 및 지속성 메모리 시스템을 액세스하는 시스템 Download PDF

Info

Publication number
KR20060044631A
KR20060044631A KR1020050024121A KR20050024121A KR20060044631A KR 20060044631 A KR20060044631 A KR 20060044631A KR 1020050024121 A KR1020050024121 A KR 1020050024121A KR 20050024121 A KR20050024121 A KR 20050024121A KR 20060044631 A KR20060044631 A KR 20060044631A
Authority
KR
South Korea
Prior art keywords
npmu
area
region
mirror
persistent memory
Prior art date
Application number
KR1020050024121A
Other languages
English (en)
Inventor
사무엘 파인버그
판카즈 메흐라
로저 한센
Original Assignee
휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피 filed Critical 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피
Publication of KR20060044631A publication Critical patent/KR20060044631A/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01DSEPARATION
    • B01D25/00Filters formed by clamping together several filtering elements or parts of such elements
    • B01D25/12Filter presses, i.e. of the plate or plate and frame type
    • B01D25/21Plate and frame presses
    • B01D25/215Construction of the filter plates, frames
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01DSEPARATION
    • B01D25/00Filters formed by clamping together several filtering elements or parts of such elements
    • B01D25/30Feeding devices ; Discharge devices
    • B01D25/305Feeding devices ; Discharge devices for discharging filtrate
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/28Treatment of water, waste water, or sewage by sorption
    • C02F1/281Treatment of water, waste water, or sewage by sorption using inorganic sorbents
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/28Treatment of water, waste water, or sewage by sorption
    • C02F1/285Treatment of water, waste water, or sewage by sorption using synthetic organic sorbents
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/58Treatment of water, waste water, or sewage by removing specified dissolved compounds
    • C02F1/62Heavy metal compounds
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/68Treatment of water, waste water, or sewage by addition of specified substances, e.g. trace elements, for ameliorating potable water
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F11/00Treatment of sludge; Devices therefor
    • C02F11/12Treatment of sludge; Devices therefor by de-watering, drying or thickening
    • C02F11/121Treatment of sludge; Devices therefor by de-watering, drying or thickening by mechanical de-watering
    • C02F11/122Treatment of sludge; Devices therefor by de-watering, drying or thickening by mechanical de-watering using filter presses

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Water Supply & Treatment (AREA)
  • Organic Chemistry (AREA)
  • Environmental & Geological Engineering (AREA)
  • Hydrology & Water Resources (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Mechanical Engineering (AREA)
  • Medicinal Chemistry (AREA)
  • Inorganic Chemistry (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

네트워크 지속성 메모리 유닛(nPMU)를 액세스하는 시스템 및 방법이 설명되어 있다. 일 실시예는 통신 시스템(106)을 통해 적어도 하나의 클라이언트 프로세서 노드(810)에 통신가능하게 결합된 주 네트워크 지속성 메모리 유닛(nPMU)(802)의 사전정의된 부분에 대응하는, 클라이언트 프로세서 노드(810) 상에서 실행되는 클라이언트 프로세스(112)에 할당되고 클라이언트 프로세스(112)로부터 수신된 정보를 저장하도록 구성도는 주 영역과, 통신 시스템(106)을 통해 클라이언트 프로세서 노드(810)에 통신가능하게 결합된 미러 nPMU(804)의 사전정의된 부분에 대응하는, 클라이언트 프로세스(112)에 할당되고 클라이언트 프로세스(112)로부터 수신된 정보를 저장하도록 구성되는 미러 영역을 포함하되, 주 nPMU(802) 및 미러 nPMU(804)는 물리적으로 구분된 유닛이며 별개의 결함 영역에 의해 특징지어진다.

Description

지속성 메모리 액세스 시스템, 지속성 메모리의 직접 액세스 방법 및 지속성 메모리 시스템을 액세스하는 시스템{COMMUNICATION-LINK-ATTACHED PERSISTENT MEMORY SYSTEM}
도 1은 네트워크 부착식 지속성 메모리 유닛(nPMU)을 포함하는 시스템의 일 실시예에 대한 블록도,
도 2는 네트워크 부착식 지속성 메모리 유닛(nPMU)의 일 실시예에 대한 블록도,
도 3은 배터리를 사용하는 네트워크 부착식 지속성 메모리 유닛(nPMU)의 일 실시예에 대한 블록도,
도 4는 지속성 메모리의 가상 어드레스 공간으로부터 지속성 메모리의 물리적 어드레스 공간으로 매핑하는 것을 도시하는 블록도,
도 5는 하나의 지속성 메모리의 가상 어드레스 공간을 갖는 네트워크 부착식 지속성 메모리 유닛(nPMU)의 일 실시예에 대한 블록도,
도 6은 다수의 지속성 메모리의 가상 어드레스 공간을 갖는 네트워크 부착식 지속성 메모리 유닛(nPMU)의 일 실시예에 대한 블록도,
도 7은 네트워크 부착식 지속성 메모리 유닛(nPMU)이 구현되는 예시적인 컴 퓨터 시스템의 블록도,
도 8은 주 및 미러 네트워크 부착식 지속성 메모리 유닛(nPMU)을 갖는 예시적인 시스템의 블록도,
도 9는 주 및/또는 미러 네트워크 부착식 지속성 메모리 유닛(nPMU)의 부가적인 세부사항을 예시하는 일 실시예의 블록도,
도 10은 배터리 백업을 사용하는 주 및/또는 미러 네트워크 부착식 지속성 메모리 유닛(nPMU)의 부가적인 세부사항을 예시하는 또 다른 실시예의 블록도,
도 11은 네트워크 부착식 지속성 메모리 유닛(nPMU)이 구현되는 예시적인 프로세서 노드의 블록도,
도 12는 네트워크 부착식 지속성 메모리 유닛(nPMU)이 구현되는 예시적인 프로세서 노드의 블록도,
도 13은 지속성 메모리 시스템의 일 실시예에 의해 지속성 메모리 영역을 생성하는데 사용되는 프로세스를 예시하는 흐름도,
도 14는 클라이언트 프로세스에 의해 지속성 메모리 시스템을 액세스하는데 사용되는 프로세스를 예시하는 흐름도.
도면의 주요 부분에 대한 부호의 설명
102 : 프로세서 노드 110 : 네트워크 지속성 메모리 유닛
112 : 클라이언트 프로세스 202 : 비휘발성 메모리
304 : 배터리 310 : 비휘발성 부 저장소
전통적으로, 컴퓨터는 그들의 데이터를 메모리 또는 자기 테이프 또는 디스크와 같은 다른 입/출력(I/O) 저장 장치에 저장하였다. I/O 저장 장치는 PCI(최초에 주변 구성요소의 상호연결)와 같은 I/O 버스를 통해, 또는 섬유 채널, 인피니밴드, 서버네트 또는 이더넷과 같은 네트워크를 통해 시스템에 부착될 수 있다. I/O 저장 장치는 전형적으로 액세스 시간이 1000분의 1초 이상일 정도로 느리다. 이들 장치는 소형 컴퓨터 시스템 인터페이스(SCSI) 프로토콜 또는 전송 제어 프로토콜/인터넷 프로토콜과 같은 특별한 I/O 프로토콜을 이용하고, 전형적으로 블록 교환 장치로서 동작한다(예를 들어, 데이터는 고정된 크기의 블록으로 판독 및 기록된다). 이러한 유형의 저장 I/O 장치의 특징은 이 장치가 전력을 손실하거나 또는 재시작되는 경우 이전에 저장된 정보를 유지할 수 있도록 지속적이라는 것이다. 또한, 네트워크 I/O 저장 장치는 공유 I/O 네트워크를 통해 다수의 프로세서로부터 액세스될 수 있고, 몇몇 프로세서가 실패한 이후에도 액세스될 수 있다.
시스템 메모리는 일반적으로 시스템 버스를 통해 프로세서에 연결되며, 이러한 메모리는 10 나노초로 측정된 보증된 액세스 시간을 가지고 있어 빠르다. 또한, 시스템 메모리는 바이트-레벨의 보장성으로 직접 액세스될 수 있다. 그러나, 시스템 메모리는 보통 비휘발성이어서 메모리의 콘텐츠는 전력이 손실되거나 또는 이러한 메모리를 구현하는 시스템이 재시작되는 경우 손실된다. 또한, 시스템 메모리는 보통 프로세서와 동일한 결함 영역 내에 있으므로, 프로세서가 부착된 메모리를 실패하는 경우 이 시스템 메모리 또한 실패하고 더 이상 액세스될 수 없다.
그러므로, 이들 기술과는 달리, 시스템 메모리의 속도 및 바이트로 세분화되는 액세스(byte-grained access)와 함께 저장 I/O 장치의 지속성성 및 내구성을 제공하는 방안을 갖는 것이 바람직하다. 또한, 다수의 프로세서 상에서 동작하는 다수의 클라이언트 프로세스가 메모리를 공유하도록 허용하기 위해 원격 직접 메모리 액세스(RDMA) 가능 네트워크를 구비하고, 따라서 네트워크화된 RDMA 메모리의 고장-내성적인 특성을 제공하는 것이 바람직하다.
종래의 시스템은 배터리 지원 동적 랜덤 액세스 메모리(BBDRAM), 고체 상태 디스크 및 네트워크 부착식 휘발성 메모리를 사용하였다. 예를 들어, 종래의 직접 부착식 BBDRAM은 진정한 지속성 메모리에 걸쳐 몇몇 성능 장점을 가질 수 있다. 그러나, 이들은 전역적으로 액세스가능하지 않아서, 직접 부착식 BBDRAM은 부착된 CPU와 동일한 결함 영역 내에 놓여 있다. 그러므로, 직접 부착 BBDRAM은 CPU 고장 또는 운영 시스템 고장의 경우에 액세스를 불허할 것이다. 따라서, 직접 부착된 BBDRAM은 흔히 모든 시스템 메모리가 지속적이어서 전력이 고장 또는 재부팅된 후 신속히 재시작될 수 있는 경우에 사용된다. BBDRAM은 여전히 긴 전력 정지 동안 휘발성이어서 또 다른 수단이 제공되어 배터리 고갈 전에 메모리의 콘텐츠를 저장해야 한다. BBDRAM의 RDMA 부착은 존재하지 않는 것으로 알려져 있다. 중요하게, 직접 부착된 BBDRAM의 이러한 사용은 매우 제한적이고 예를 들어 네트워크 부착식 지속성 메모리 애플리케이션에 사용되도록 적절하게 수정하는 것은 불가능하다.
배터리 지원 고체 상태 디스크(BBSSD)는 다른 구현에서 제안되었다. 이들 BBSSD는 지속성 메모리를 제공하지만, 기능적으로 이들은 디스크 드라이브에 필적한다. 이러한 접근방식의 중요한 단점은 I/O 어댑터를 이들 장치로의 액세스와 연관된 부가적인 지연(latency)이 있다는 것이다. 이 지연은 디스크 및 BBSSD에 의해 사용되는 블록 지향 및 파일 지향 저장 모델에 있어 고유하다. 이들은 운영 시스템이 통과하지 않는 하위 최적 데이터 경로를 통해 진행한다. 몇몇 단점을 제거하기 위해 고체 상태 디스크를 수정할 수 있지만, 고유한 지연은 제거될 수 없는데, 그 이유는 I/O 프로토콜 및 그들의 관련 장치 드라이버에 의해 성능이 제한되기 때문이다. 직접 부착식 BBDRAM에서와 같이, 연장된 기간 동안의 전력 손실을 다루기 위한 부가적인 기술이 필요하다.
그러므로, 장기간의 전력 손실 기간에서도 또는 운영 시스템이 고장난 경우에도 지속적인(비휘발성인) 메모리를 제공하는 것이 바람직하다. 또한, 이러한 메모리의 전부 또는 일부를 멀리(즉, 고장 프로세서의 결함 영역 밖에) 위치시켜 프로세서 결함에 강해지도록 하는 것이 바람직하다. 또한, 시스템 영역 네트워크(SAN)를 걸쳐 이러한 지속성 메모리에 대한 액세스를 제공(확장)하는 것이 바람직하며, 이 네트워크에서는 반드시 동시일 필요는 없지만 메모리는 다수의 프로세서에 의해 효과적으로 액세스될 수 있다. 이러한 지속성 메모리에 있어서, 개선된 컴퓨터 시스템이 구현될 수 있다.
네트워크 지속성 메모리 유닛(nPMU)을 액세스하는 시스템 및 방법이 설명된다. 일 실시예는 통신 시스템을 통해 적어도 하나의 클라이언트 프로세서 노드에 통신가능하게 결합된 주(primary) 네트워크 지속성 메모리 유닛(nPMU)의 사전결정된 부분에 대응하는 주 영역- 이 주 영역은 클라이언트 노드 상에서 동작하는 클라이언트 프로세스에 할당되고 클라이언트 프로세스로부터 수신된 정보를 저장하도록 구성됨 -과, 통신 시스템을 통해 클라이언트 프로세서 노드에 통신가능하게 결합된 미러(mirror) nPMU의 사전결정된 부분에 대응하는 미러 영역- 이 미러 영역은 클라이언트 프로세스에 할당되고 클라이언트 프로세스로부터 수신된 정보를 저장하도록 구성됨 -을 포함한다.
본 발명의 여러 관점은 후속하는 도면을 참조하여 더 잘 이해될 수 있다. 도면의 구성요소들은 반드시 본래의 크기대로 도시되어 있지 않고 본 발명의 실시예의 원리를 분명하게 예시하기 위해 강조될 수 있다. 또한, 도면에서, 유사한 참조번호는 몇몇 도면에 걸쳐 대응 부분을 나타낸다.
본 발명은 저장소 I/O의 내구성 및 복원력과 시스템 메모리의 섬세한 액세스를 결합한 지속성 메모리 장치를 설명한다. 저장소와 같이, 그 콘텐츠는 전력 손실 또는 시스템 재시작에서도 보존될 수 있다. 원격 메모리와 같이, 메모리는 시스템 영역 네트워크(SAN)를 통해 액세스될 수 있다. 그러나, 직접 연결된 메모리 와는 달리, 이 장치는 메모리를 액세스하는 프로세서가 고장난 이후에도 계속 액세스될 수 있다.
원격 직접 메모리 액세스(RDMA)는 네트워크의 다른 부류로부터 SAN을 구별하는 핵심 성능이며, 이것은 메모리가 멀리 위치해 있는 경우에도(즉, 프로세서에 직접 연결되어 있지 않는 경우에도) 연속 사용 메모리 시맨틱스를 지원한다. 그러므로, SAN은 RDMA 가능 네트워크로서 알려져 있다. 이들은 특성상 바이트 세분성(byte granularity)으로 고속 제로-카피 메모리 동작을 허용한다.
네트워크 부착 지속성 메모리 장치는 메모리의 콘텐츠가 전력 고장뿐만아니라 운영 시스템 고장, 다른 소프트웨어 고장, 하드웨어 또는 소프트웨어 업그레이드 및 시스템 유지 재부팅이 경우에도 보존되어야 하는 디스크형 지속성 특성을 필요로한다. 본 발명은 매우 어려운 설계 세트 및 휘발성 메모리에 비교해 구현 제약조건을 갖는 지속성(또는 비휘발성) 메모리의 사용에서 있어서 독보적이다. 예를 들어, 메타 데이터(즉, 메모리의 상태에 대한 데이터)의 관리 및 가상 어드레스에서 물리적 어드레스로 변환하기 위한 정보의 관리는 이 두 가지의 경우에서 꽤 상이하다. 또한, 본 발명은 지속성 메모리를 RDMA 가능 네크워크에 부착함에 있어서 독보적이다.
본 명세서에서 보다 상세하게 설명되는 일 실시예에서, 시스템은 네트워크 부착 지속성 메모리 유닛(nPMU)을 포함한다. 이 시스템은 판독 및 기록 동작과 같은 메모리 동작을 초기화하는 프로세서 노드를 포함한다. 이 프로세서 유닛은 지속성 메모리 어드레스 공간에 대응하는 가상 어드레스 공간에 대한 어드레스 동작 을 참조한다. 프로세서 노드는 nPMU에 통신하는데 사용되는 네트워크 인터페이스를 더 포함하며 이 nPMU는 자신의 네트워크 인터페이스를 갖는다. 따라서, 프로세서 노드 및 지속성 메모리 유닛은 네트워크, 바람직하게는 시스템 영역 네트워크와 같은 통신 링크를 걸쳐 통신한다. 지속성 메모리 유닛은 프로세서 노드에 알려져 있는 가상 어드레스 공간과 nPMU에만 알려져 있는 물리적 어드레스 공간 사이를 변환하도록 더 구성된다. 다른 실시예에서, 다수의 어드레스 공간이 제공되며 nPMU는 또한 이들 다수의 어드레스 공간을 물리적 어드레스 공간으로의 변환을 제공한다.
다른 실시예에서, 지속성 메모리의 가상 어드레스에서 지속성 메모리의 물리적 어드레스로의 변환은 제각기의 프로세서 노드에서 일어난다. 또 다른 실시예에서, 이 변환은 링크, 포트, 스위치, 라우터, 브리지, 펌웨어, 소프트웨어 또는 SAN과 연관된 서비스 내에서 일어난다. 본 발명은 다음의 경우만을 가정한다. 즉, 이러한 변환에 필요한 매핑 정보가 nPMU에 저장된 데이터와 일치하도록 유지되고, 일부 엔티티는 저장된 매핑 정보를 이용하여 효과적으로 어드레스 변환을 수행할 수 있고, 이 엔티티 및 필요한 매핑 정보는 정보가 nPMU로부터 복원될 필요가 있을 때마다 이용가능할 것이다.
또 다른 실시예에서, 서버넷, 기가넷, 인피밴드, PCI(Peripheral Component Interconnect) 익스프레스, RDMA 가능 이더넷 및 가장 인터페이스 아키텍쳐(VIA) 네트워크와 같은 다른 유형의 네트워크가 사용된다. 또한, 자기 랜덤 액세스 메모리(MRAM), 자기 저항성 랜덤 액세스 메모리(MRRAM), 폴리머 강유전성 랜덤 액세스 메모리(PFRAM), 오보닉스 통합 메모리(OUM) 및 플래시 메모리와 같은 다양한 유형의 지속성 메모리가 사용된다.
본 발명은 전통적인 I/O 저장 장치와 유사하지만, 섬세한 세분성 및 낮은 지연을 갖는 시스템 메모리와 같이 액세스될 수 있는 지속성 메모리를 설명한다. 도 1에 도시되어 있는 바와 같이, 네트워크 부착 지속성 메모리를 사용하는 지속성 메모리 시스템(100)은 RDMA 가능 시스템 영역 네트워크(SAN)(106)를 통해 하나 이상의 프로세서 노드(102)에 의해 액세스될 수 있는 네트워크 부착식 지속성 메모리 유닛(nPMU)(110)으로 구성된다. nPUM(110)의 지속성 메모리를 액세스하기 위해, 프로세스 노드(102) 상에서 동작하는 클라이언트 프로세스(112)(실행 소프트웨어 등)는 프로세서 노드의 네트워크 인터페이스(NI)(104)를 통해 원격 판독 또는 기록 동작을 초기화한다. 이러한 방식에 있어서, 판독 또는 기록 명령은 RDMA 가능 SAN(106) 상에서 nPMU의 네트워크 인터페이스(NI)(108)로 수행된다. 따라서, 프로세싱 이후, 적절한 데이터가 RDMA 가능 SAN(106)을 통해 통신된다. RDMA 데이터 이동 동작에 덧붙여, nPMU(110)는 이하에서 설명되는 다양한 관리 명령에 응답하도록 구성될 수 있다. 예를 들어, 프로세서 노드(102)에 의해 초기화되는 기록 동작에 있어서, 데이터가 nPMU에 성공적으로 저장되었으면, 이들 데이터는 내구성이 있고 정전 또는 프로세서 노드(102) 고장에서 보존될 것이다. 특히, 메모리 콘텐츠는 전원이 장기간 차단되거나 또는 프로세서 노드(102) 상의 운영 시스템이 재부팅되는 경우에도 nPMU(110)가 올바르게 계속 기능하는 한 유지될 것이다.
이 실시예에서, 프로세서 노드(102)는 적어도 하나의 중앙 처리 장치(CPU) 및 CPU가 운영 시스템을 구동하도록 구성되는 메모리로 구성된 컴퓨터 시스템이다. 프로세서 노드(102)는 또한 데이터베이스와 같은 애플리케이션 소프트웨어를 실행하도록 구성된다. 프로세서 노드(102)는 SAN(106)을 사용하여 다른 프로세서 노드(102)와, nPMU 및 I/O 제어기(도시되어 있지 않음)와 같은 장치와 통신한다.
이 실시예의 일 구현에 있어서, RDMA 가능 SAN(106)은 두 개의 프로세서 노드 사이, 또는 프로세서 노드와 장치 사이에서의 카피 동작과 같은 바이트-레벨의 메모리 동작을 CPU에 프로세서 노드(102)를 알리지 않고서 수행할 수 있는 네트워크이다. 이 경우에 있어서, SAN(106)은 인접한 네트워크 가상 어드레스 공간을 비인접한 물리적 어드레스 공간으로의 매핑을 가능하게 하기 위해 가상 어드레스 공간에서 물리적 어드레스 공간으로의 변환을 수행하도록 구성된다. 이러한 유형의 어드레스 변환은 nPMU(110)의 동적 관리를 허용한다. RDMA 성능을 갖는 상업적으로 입수가능한 SAN(106)은 서버넷, 기가넷, 인피밴드 및 가상 인터페이스 아키텍쳐를 따른 SAN을 포함하나 여기에 제한되는 것은 아니다.
프로세서 노드(102)는 일반적으로 NI(104)를 통해 SAN(106)에 부착되지만, 다수의 변형이 가능하다. 그러나, 보다 일반적으로, 프로세서 노드는 판독 및 기록 동작을 통신하는 장치에만 연결될 필요가 있다. 예를 들어, 이 실시예의 다른 구현에 있어서, 프로세서 노드(102)는 마더보드 상의 다양한 CPU이고, SAN을 사용하는 대신, 예를 PCI 버스와 같은 데이터 버스가 사용된다. 본 발명은 보다 큰 또는 보다 작은 구현을 수용하기 위해 필요에 따라 확대 또는 축소될 수 있다.
네트워크 인터페이스(NI)(108)는 nPMU(110)에 통신가능하게 결합되어 nPMU(110)에 포함된 지속성 메모리로의 액세스를 허용한다. 지속성 메모리 유형을 포함하는 도 1의 다양한 구성요소에 대해 다수의 기술이 이용가능하다. 따라서, 도 1의 실시예는 지속성 메모리를 구현하는 특정 기술에 제한되지 않는다. 실제로, 자기 랜덤 액세스 메모리(MRAM), 자기 저항성 랜덤 액세스 메모리(MRRAM), 폴리머 강유전성 랜덤 액세스 메모리(PFRAM), 오보닉스 통합 메모리(OUM), 배터리 지원 동적 랜덤 액세스 메모리(BBDRAM) 및 모든 종류의 플래시 메모리를 포함하는 다수의 메모리 기술이 적절하다. 배터리 지원 고체 상태 디스크(BBSSD)는 블록 레벨의 전달을 수행하는 반면, 이러한 접근방법은 바이트 레벨의 메모리 액세스를 포함하는 보다 섬세한 세분성의 메모리 액세스를 허용한다. 특히, 다양한 실시예를 사용하여 메모리 액세스는 보다 섬세하게 또는 보다 조잡하게 이루어질 수 있다. SAN(106)이 사용되는 경우, 메모리 액세스는 RDMA 액세스를 지원하기에 충분하도록 빨라야 한다. 이러한 방식에 있어서, RDMA 판독 및 기록 동작은 SAN(106)을 통해 이루어질 수 있다. 또 다른 유형의 통신 장치가 사용되는 경우, 사용되는 메모리의 액세스 속도는 통신 장치를 수용하도록 충분히 빨라야 한다. 지속성적인 정보는 사용 중인 지속성 메모리가 데이터를 보존할 수 있는 범위까지 제공된다. 예를 들어, 일 실시예에서, 지속성 메모리는 전력이 손실되는 시간의 양과는 상관없이 데이터를 저장하는 반면, 다른 실시예에서, 지속성 메모리는 몇 초 또는 몇 시간 동안 데이터를 저장한다.
이러한 접근 방법과 관련하여, 단일 또는 다수의 독립적인, 간접적으로 어드레싱되는 메모리 영역에 대해 메모리 관리 기능이 제공된다. 또한, 전력 손실 또 는 프로세서 고장 이후에 메모리 복원을 위해 nPMU 메타 데이터가 제공된다. 메타 정보는 예를 들어 nPMU(110) 내의 보호된 메모리 영역의 콘텐츠 및 레이아웃을 포함한다. 이러한 방법에 있어서, nPMU(110)는 데이터 및 데이터 사용 방법을 저장한다. 필요하게 되는 경우, nPMU(110)는 전력 또는 시스템 고장으로부터 복원을 허용할 수 있다.
버스와 같은 통신 링크를 통해 NI(204)에 통신가능하게 결합된 비휘발성 메모리(202)를 사용하는 nPMU(110)의 간단한 실시예가 도 2에 도시되어 있다. 본 명세서에서, 비휘발성 메모리(202)는 예를 들어 MRAM 또는 플래시 메모리일 수 있다. NI(204)는 자신의 RDMA 요청을 초기화하지 않지만, 대신 NI(204)는 네트워크로부터 명령을 수신하고 요청된 동작을 수행한다. 구체적으로, nPMU(110)는 요청이 들어오는 경우 어드레스를 변환하고 그런 다음 요청된 동작을 수행한다. 명령 프로세싱에 대한 보다 상세한 내용은 이하에서 설명될 것이다.
휘발성 메모리(302)와 배터리(304) 및 비휘발성의 부(secondary) 저장소(310)를 결합한 nPMU(110)의 비교적 복잡한 실시예가 도 3에 도시되어 있다. 이 실시예에서, 전력이 고장난 경우, 휘발성 메모리(302) 내의 데이터는 이러한 데이터가 비휘발성의 부 저장소(310)에 저장될 수 있을 때까지 배터리(304)의 전력을 사용하여 보존된다. 비휘발성의 부 저장소(310)는 예를 들어 자기 디스크 또는 저속의 플래시 메모리일 수 있다. 적절히 동작하는 nPMU(110)(도 1)에 대해, 휘발성 메모리(302)에서 비휘발성의 부 메모리 저장소(310)로의 데이터 전달은 외부 간섭 또는 배터리(304) 이외의 임의의 또 다른 전력없이 이루어져야 한다. 따라서, 배터리(304)가 방전될 수 있기 전에 임의의 필요한 작업이 완료되어야 한다. 도시되어 있는 바와 같이, nPMU(110)는 내장형 운영 시스템을 구동시키는 선택적 CPU(306)를 포함한다. 따라서, 백업 작업(즉, 휘발성 메모리(302)에서 비휘발성의 부 메모리 저장소(310)로의 데이터 전달)은 CPU(306) 상에서 실행되는 소프트웨어에 의해서 수행될 수 있다. CPU(306) 상에서 실행되는 소프트웨어의 제어 하에 RDMA 요청을 초기화하는 NI(308)도 포함되어 있다. 본 명세서에서 또한, CPU(306)는 네트워크로부터 관리 명령을 수신하고 이 요청된 관리 동작을 수행한다.
nPMU(110)의 실시예는 리소스 할당 및 공유를 용이하게 하기 위해 관리되는 엔티티이어야 한다. 이 실시예에서, nPMU 관리는 지속성 메모리 관리자(PMM)에 의해 수행된다. PMM은 nPMU 내에 또는 nPMU 밖에서 예를 들어 앞서 설명한 프로세서 노드 중 하나의 상에 위치할 수 있다. 프로세서 노드가 nPMU의 지속성 메모리를 할당 또는 할당해제할 필요가 있는 경우, 또는 지속성 메모리의 현존하는 영역을 사용할 필요가 있는 경우, 프로세서 노드는 먼저 PMM과 통신하여 요청한 관리 작업을 수행한다. nPMU는 내구성이 있기 때문에(디스크와 같이), 또한 nPMU는 지속성 데이터의 자기 기술 본체(self-describing body)를 포함하고 있기 때문에, 현존하는 지속성 메모리 영역에 대한 메타 데이터는 nPMU 장치 그 자체에 저장되어야 한다. 그러므로, nPMU는 nPMU 상에 저장된 지속성 데이터와 일치하는 nPMU 상의 메타 데이터를 항상 유지하여, nPMU의 저장된 데이터가 nPMU 저장된 메타 데이터를 사용하여 항상 해석될 수 있고 따라서 가능한 시스템 정지 또는 고장 이후에 복원될 수 있도록 하는 방식으로 관리 작업을 수행한다. 이러한 방식에 있어서, nPMU 는 조작되는 데이터뿐만 아니라 이러한 데이터의 프로세싱 상태도 지속성적인 방식으로 유지한다. 복원 필요성이 있는 경우, nPMU(110)를 사용하는 지속성 메모리 시스템(100)(도 1)은 복원할 수 있고 전력 고장 또는 운영 시스템 고장이 발생한 메모리 상태로부터 동작을 계속할 수 있다.
도 1을 참조하여 설명한 바와 같이, SAN(106)은 기본적인 메모리 관리 및 가상 메모리 지원을 제공한다. 이러한 구현에 있어서, PMM은 SAN(106) 상의 선택된 엔티티 세트를 제외한 모두에 의한 비허가된 또는 부적절한 액세스로부터 nPMU(110)의 지속성 메모리를 동시에 보호하면서, 원격 판독 및 기록 동작을 가능하게 하기 위해 nPMU(110)의 NI(108) 내의 로직을 프로그램할 수 있어야 한다. 또한, 도 4에 도시되어 있는 바와 같이, nPMU는 가상-물리적 어드레스 변환을 지원할 수 있다. 예를 들어, 지속성 메모리(PM) 가상 어드레스(402 내지 416)와 같은 연속적인 가상 어드레스 공간은 비연속적인 지속성 메모리의 물리적 어드레스(418-448)로 매핑 또는 변환될 수 있다. nPMU 네트워크 가상 어드레스는 기본 어드레스에서 N 증분 어드레스까지 참조한다. 그러나, 이러한 nPMU 네트워크 가상 어드레스는 비연속적인 nPMU 물리적 어드레스에 대응한다. 도시되어 있는 바와 같이, nPMU 네트워크 가상 어드레스(402)는 실제로 nPMU 물리적 어드레스(436)에 대응할 수 있다. 따라서, nPMU는 nPMU 네트워크 가상 어드레스 공간에서 nPMU 물리적 어드레스 공간으로의 적절한 변환을 제공할 수 있어야 한다. 이러한 방식에 있어서, 변환 메카니즘은 nPMU로 하여금 프로세서에 대해 연속적인 가상 어드레스 범위를 제공하도록 허용하면서, 여전히 nPMU 물리적 메모리의 동적 관리를 허용한다. 이 것은 특히 중요한데, 그 이유는 nPMU 상에서의 데이터의 지속성적 특성 때문이다. 구성의 변환로 인해, 특정 nPMU를 액세스하는 프로세스의 수 또는 그들의 제각기의 할당의 크기는 시간에 따라 달라질 수 있다. 어드레스 변환 메카니즘은 nPMU로 하여금 데이터의 손실 없이 이러한 변화를 쉽게 수용할 수 있도록 해준다. 어드레스 변환 메카니즘은 할당에 앞서 향후 메모리 필요량을 프로세서 노드가 예상하도록 강요하지 않거나 또는 비관적인 할당을 통해 지속성 메모리 용량을 프로세서 노드가 낭비하지 않도록 강제함으로써 지속성 메모리 용량의 용이하고 효율적인 사용을 더 허용한다.
다시 도 1을 참조하면, 자신 고유의 액세스 확인 및 변환/블록 전달 엔진(AVT/BTE) 모드로 동작하는 서버넷 SAN은 단일 어드레스 공간 SAN(106)의 일 예이다. 이러한 SAN 상의 각 타겟은 동일한, 평탄한 네트워크의 가상 어드레스 공간을 프로세서 노드(102)와 같은 RDMA 요청 개시자 모두에 제공한다. 네트워크 가상 어드레스 범위는 타겟에 의해 nPMU 네트워크 가상 어드레스로부터 페이지 세분성을 갖는 nPMU 물리적 어드레스 범위로 매핑된다. 네트워크 nPMU 네트워크 가상 어드레스 범위는 단일 개시자(예를 들어, 프로세서 노드(102))에 독점적으로 할당되거나 또는 다수의 개시자(예를 들어, 클라이언트의 주 및 백업 프로세스 상에서 실행되는 프로세서)에 할당될 수 있다. 일 실시예는 서버넷의 AVT 엔트리 보호의 제약을 받는다. 이것이 가능하지 않는 경우, 또는 개시자가 다른 액세스 권리를 필요로하는 경우, 다수의 nPMU 네트워크 가상 어드레스는 동일한 물리적 페이지를 지적할 수 있다.
프로세서 노드(102) 상에서 동작하는 클라이언트 프로세스(102)가 PMM이 nPMU 내의 지속성 메모리 영역을 개방(즉, 사용을 개시)하도록 요청하는 경우, nPMU의 NI(108)는 클라이언트 프로세스(112)를 실행시키는 프로세서 노드(102)가 적절한 영역을 액세스할 수 있도록 PMM에 의해 프로그램된다. 이 프로그램은 네트워크 가상 어드레스 블록을 할당하고 이들을 물리적 메모리의 물리적 페이지 세트에 매핑(즉, 변환)한다. nPMU 네트워트 가상 어드레스의 범위는 PM의 물리적 메모리 내에 존재하는 위치와는 상관없이 인접할 수 있다. 성공적으로 변환되는 경우, PMM는 요청 프로세서 노드(102)에 인접 블록이 매핑되는 nPMU 네트워크 가상 어드레스를 알려준다. 개방되는 경우, 프로세서 노드(102)는 RDMA 판독 또는 기록 동작을 매핑된 범위 내의 네트워크 가상 어드레스로 nPMU에 발행함으로써 nPMU 메모리 페이지를 액세스할 수 있다. 프로세서 노드(102) 상의 모든 클라이언트 프로세스가 개방 영역을 사용하여 완료된 경우, 이 매핑은 제거되고 nPMU 네트워크 가상 어드레스는 향후 영역 매핑용으로 재사용될 수 있다. 이것은 영역 그 자체가 더 이상 사용중이지 않다는 것을 의미하는 것은 아니다. 대신, 또 다른 프로세서(또는 동일한 프로세서) 상에 상주하는 하나 이상의 프로세스에 의해, 그러나 상이한 nPMU 네트워크 가상 어드레스 매핑에 의해 여전히 개방될 수 있다.
이제 도 5를 참조하면, nPMU(110) 동작은 단일 가상 어드레스 공간의 문맥에서 설명될 것이다. nPMU 물리적 어드레스 공간(562)으로 변환하는 단일 nPMU 네트워크 가상 어드레스 공간(560)이 도시되어 있다. 지속성 메모리의 범위가 일단 개방되면, CPU(0 550)는 NI(552 및 558)의 동작과 연계하여 이러한 범위의 지속성 메 모리를 액세스할 수 있다. PMM은 가상 어드레스의 범위를 CPU에 이용가능하도록 함으로써 지속성 메모리의 범위를 개방한다. nPMU 네트워크 가상 어드레스 공간의 개방 범위에 대한 액세스를 요청하는 경우, CPU(0 550)는 NI(552)를 거쳐 NI(558)로 명령(예를 들어, 판독 또는 기록)을 전달한다. 일 실시예의 동작에 있어서, CPU(0 550)만이 지정된 범위의 nPMU 네트워크 가상 어드레스를 액세스할 수 있다. 다른 실시예에서, nPMU 네트워크 가상 어드레스의 범위는 둘 이상의 CPU에 의해 공유될 수 있고, 또는 하나 이상의 CPU 상의 프로세스의 서브세트로만 제한될 수 있다. 따라서, PMM 구성 기능의 일부분으로서, NI(558)는 먼저 요청된 nPMU 네트워크 가상 어드레스(560)를 목표지정하는 CPU(0 550)의 능력을 확인한다. CPU(0 550)의 허용된 범위 내에서, NI(558)는 요청된 어드레스 변환을 수행하고, 끝으로 nPMU 물리적 어드레스(562)에 대하여 요청된 동작(예를 들어, 판독 또는 기록)을 수행한다.
도 6에 도시되어 있는 바와 같이, nPMU(620)는 제각기의 nPMU 네트워크 가상 어드레스 공간을 갖는 다수의 가상 어드레스 콘텍스트(공간)(670 및 672)를 수용할 수 있고 각 공간을 독립적으로 nPMU 물리적 어드레스 공간(674)으로 변환한다. 다수의 어드레스 공간을 구현하는 SAN은 VI 아키텍쳐(VIA) SAN을 포함하며, 이 SAN은 기가넷 및 서버넷Ⅱ(VIA 모드) 및 인피밴드를 포함한다. 도 6의 nPMU(620)와 도 5의 nPMU(110) 사이에서는 유사성이 있다. 그러나, nPMU(620)에 있어서, nPMU(620) 또는 보다 구체적으로 nPMU의 NI(668)는 다수의 가상 어드레스 콘텍스트(670 및 672) 사이를 구별하고 그런 다음 이 가상 어드레스 콘텍스트(670 및 672)를 적절한 nPMU 물리적 어드레스(674)로 변환할 필요가 있다.
이 실시예에서, NI(668)는 프로세스 등가 가상 어드레스를 제공한다. 따라서, NI(668)는 nPMU 가상 메모리 및 nPMU 물리적 메모리에 대한 사용자 모드 및 커널-모드 액세스용으로 설계된다. 다수의 독립적인 네트워크 가상 어드레스 공간은 상이한 어드레스 콘텍스트를 사용하여 이용가능해질 수 있다. 두 개의 어드레스 콘텍스트만이 도시되어 있지만, 그 이상도 가능하다. 사실, 본 발명이 인터넷 애플리케이션에서 적용될 수 있는 범위까지, 수천의 어드레스 콘텍스트가 가능하다. 특정 어드레스 공간을 지정하기 위해, RDMA 명령(예를 들어, 판독 또는 기록)은 원하는 가상 어드레스에 따른 콘텍스트 식별자를 지정한다. 그러므로, NI(668)는 동일한 콘텍스트 식별자를 공유하는 다양한 프로세서 노드(예를 들어, CPU(0 660) 및 CPU(1 664))를 수용할 수 있다. 또한, 상이한 콘텍스트로부터의 별개의 가상 페이지는 동일한 물리적 메모리 페이지로 변환될 수 있다.
앞에서와 같이, 클라이언트 프로세스(112)(도 1)는 액세스를 위해 지속성 메모리 영역을 개방하는 경우, NI(668)는 요청 프로세서 노드가 영역에 대한 액세스를 갖고 있는지를 PMM가 확인한 후에 이 PMM에 의해 프로그래밍된다. 그런 다음, 앞서와 같이, 이 PMM은 NI(668)를 프로그래밍한다. 그러나, 이 경우에 있어서 프로그래밍은 이제 NI(668)에 콘텍스트를 생성한다. 이 콘텍스트는 물리적 페이지 세트로 변환되는 네트워크 가상 어드레스 블록을 포함한다. 그러나, 도 5에서 설계된 경우와는 달리, 이들 가상 어드레스는 새로운 콘텍스트 내에서만 유효하고, 이는 임의의 네트워크 동작의 일부분으로서 확인되어야 한다. 예를 들어, 콘텍스 트(0 670)의 nPMU 네트워크 가상 어드레스(602)는 nPMU 물리적 어드레스(612)로 변환되고, 콘텍스트(1 672)의 nPMU 네트워크 가상 어드레스(606)는 nPMU 물리적 어드레스(610)로 변환된다. 앞에서와 같이, nPMU 네트워크 가상 어드레스는 할당되는 nPMU 물리적 페이지의 수와는 상관없이 인접하다. 그러나, 이 물리적 페이지는 nPMU 물리적 메모리 내의 어느 곳에서도 위치할 수 있다.
예를 들어 도 1에 도시되어 있는 본 접근방식의 또 다른 기능이 이제 이해될 수 있다. 예를 들어, 프로세서 노드(102)가 PMM과 통신하여 메모리 영역을 개방하면, PMM을 다시 거치지 않고서 nPMU(110)의 메모리를 직접 액세스할 수 있다. 예를 들어, 이하에서 더 자세히 설명되는 원력 판독 명령은 개시용의 네트워크 가상 어드레스 및 오프셋과 또한 콘텍스트 식별자(다수의 어드레스 공간의 경우)를 제공한다. 적절한 동작을 위해, 이 어드레스 범위는 PMM에 의해 할당된 범위 내에 있어야 한다. 프로세서 노드(102)는 로컬 물리적 메모리 위치에 대한 포인터를 포함하는 원격 판독 명령을 노드(102)에서 NI(104)에 제공한다. 요청 프로세서 노드(102)의 NI(104)는 이 원격 판독 명령을 SAN(106)을 통해 nPMU(110)의 NI(108)에 전송한다. NI(108)는 개시용의 네트워크 가상 어드레스를 영역과 연관된 변환 테이블 엔트리를 사용하여 nPMU(110) 내의 물리적 어드레스로 변환한다. NI(108)에 의해, nPMU(110)는 데이터를 변환된 물리적 어드레스에서 개시하는 판독 프로세서 노드에 반환한다. NI(108)는 판독이 페이지 경계를 가로질러 이루어지는 경우에도 어드레스 변환을 계속하는데, 그 이유는 어드레스 변환 하드웨어는 가상 페이지 어드레스를 인접한 것처럼 보이게 하기 때문이다. 판독 명령이 완료되는 경우, NI(104)는 판독 전달을 완료된 것으로 표시한다. 또한, 임의의 대기 프로세스가 인지될 수 있고 그런 후 처리될 수 있다.
이하에서 더 자세히 설명되는 지속성 메모리로의 원격 기록은 유사하다. 프로세서 노드(102)는 개시용의 PM 네트워크 가상 어드레스 및 오프셋과 또한 콘텍스트 식별자(다수의 어드레스 공간의 경우)를 nPMU(110)에 제공한다. 앞서와 같이, PM 네트워크 가상 어드레스 범위는 할당된 범위 내에 있어야 한다. 프로세서 노드(102)는 또한 전송될 데이터의 물리적 어드레스에 대한 포인터를 제공한다. 프로세서 노드(102) 내의 NI(104)는 원격 기록 명령을 nPMU(110) 내의 NI(108)에 발행하고 데이터 전송을 시작한다. NI(108)는 개시 어드레스를 영역과 연관된 변환 테이블 엔트리를 사용하여 nPMU(110) 내의 물리적 어드레스로 변환한다. 또한, nPMU(110)는 변환된 물리적 어드레스에서 개시하는 데이터를 저장한다. NI(108)는 기록이 페이지 경계를 가로질러 이루어지는 경우에도 어드레스 변환을 계속하는데, 그 이유는 어드레스 변환 하드웨어는 가상 페이지를 인접하는 것처럼 보이게 하기 때문이다. 기록 명령이 완료되는 경우, NI(104)는 기록 전달을 완료된 것으로 표시한다. 또한, 임의의 대기 프로세스가 인지될 수 있고 그런 후 처리될 수 있다.
본 발명에 따른 nPMU의 지연 테스팅에 있어서, 매우 바람직하게 800 마이크로초 이상을 필요로하는 I/O 동작에 비교해 80 마이크로초 내에 메모리 액세스가 달성될 수 있다는 것을 발견하였다. 사실, 이 결과는 I/O 동작의 지연을 피할 수 있기 때문에 가능하다. 그러므로, 본 발명에 따른 nPMU는 시스템 메모리의 섬세한 세분화된 액세스와 함께 저장의 지속성을 갖는다.
디스크 판독 및 기록을 가속화하는 애플리케이션을 포함하는, nPMU에 대한 다양한 애플리케이션이 존재한다. 또한, nPMU는 전력 또는 프로세서 고장으로부터 복원을 용이하게 할 수 있다. 판독과 기록 동작 사이의 고유한 차이로 인해, nPMU는 판독 동작보다 기록 동작에 보다 큰 개선을 제공하는데, 그 이유는 nPMU는 훨씬 빠른 버스를 통한 시스템 RAM보다 느리고 보다 작은 메모리를 네트워크에 걸쳐 사용하기 때문이다. 반면, 카피본이 nPMU에 있을지라도, 빈번히 판독될 데이터 구조는 시스템 RAM 내에 캐시될 수 있고, 보다 적게 사용되는 데이터 구조는 nPMU에 적합하다.
예를 들어, 트랜잭션 대 트랜잭션에 기초하여 유지되는 데이터베이스 잠금은 nPMU에서의 저장에 적합하다. nPMU 내에서 트랜잭션에 의해 유지되는 업데이트된 잠금을 추적함으로써, 계획되지 않은 정전(및/또는 트랜잭션 관리자에 의해 계획된 차단)으로부터 복원은 가속화될 수 있다. 또한, nPMU는 고장에 있어서도 지속성적인 새로운 잠근 유형의 제공을 용이하게 하여, 불일치한 상태로 남겨진 데이터베이스 리소스를 트랜잭션에 의해 고장시의 프로세스 내로 안내한다.
물리적 재수행 캐시(a physical redo cache)는 또한 nPMU 구현에 적합하다. 두 번째에서 마지막 제어 지점 전에 손상되었지만(부분적으로 처리됨) 제거되지 않은 데이터베이스 블록의 캐시를 유지하면 볼륨 복원 동안 퍼지 체크포인팅을 사용하여 물리적 재수행을 가속화된다. 일 구현에 있어서, 이러한 캐시는 각 제어 지점이 전진함에 따라 제거된다. 복원 동안, 디스크 볼륨을 판독하는 대신, 흔히 랜덤하게, 감사 추적(audit trail)에서 재수행 기록와 연관된 데이터에 대해, nPMU에 서 재수행 캐시를 참조함으로써, 복원은 훨씬 빨리 달성될 수 있다. 이것은 특히 데이터베이스 캐시가 크고 트랜잭션이 비교적 작으나 고속으로 발생하는 경우에 중요할 수 있다. 이러한 경우에 있어서, 대량의 감사 정보는 연속적인 제어 지점 사이에서 형성될 수 있고, 그럼에도 불구하고 가속화된 복원을 위해 nPMU에 저장에 저장될 수 있다.
nPMU는 또한 지속성적인 로그 테일을 사용하여 효과적인 데이터베이스 커미트를 제공할 수 있다. 예를 들어, 데이터베이스 트랜잭션을 커미팅하기 전에 플러시(flush)하기 위한 예비 감사 추적에 대응하는 디스크 기록 동작을 대기하는 대신에, nPMU는 nPMU에 기록하고 다른 플러시 동작을 대기할 필요가 없는 경우 데이터베이스 커미트를 허용할 수 있다. nPMU는 디스크 저장보다 10배 낮은 지연을 가질 수 있기 때문에, 데이터베이스 트랜잭션 지연은 상당히 단축될 수 있다. 또한, 트랜잭션 처리량도 그와 같이 개선된다. 예를 들어, 정보가 디스크에 커미팅되어야 하는 범위까지, nPMU는 상당한 양의 정보를 축적할 수 있고, 이어서 이 정보를 디스크에 보다 효과적으로 기록할 수 있다.
데이터베이스 큐 및 이벤트 프로세싱은 nPMU를 사용하여 개선될 수 있다. 예를 들어, 큐 및 이벤트는 임의의 고장 또는 정지를 피하기 위해 nPMU 내의 리스트 데이터 구조를 사용하여 인터-엔터프라이즈 또는 인터프라이즈-와이드 배치 형태로 유지될 수 있다. nPMU 내에 이벤트 또는 큐를 유지하면 원활한 작업흐름의 프로세싱이 가능하고 또한 정보를 능동적으로 처리하는 CPU가 고장난 경우에도 이벤트를 적시에 처리할 수 있다.
일 실시예에서, 본 접근방식은 도 7에 도시된 컴퓨터 시스템(700) 상에 실행된다. 도 7을 참조하면, 본 발명이 실행될 수 있는 예시적인 컴퓨터 시스템(700)(예를 들어, 개인용 컴퓨터, 워크스테이션, 메인프레임 등)이 도시되어 있다. 컴퓨터 시스템(700)은 다양한 구성요소들을 통신가능하게 결합하는 데이터 버스(714)로 구성된다. 도 7에 도시되어 있는 바와 같이, 프로세서(702)는 정보 및 인스트럭션을 처리하는 버스((714)에 결합되어 있다. 프로세서(702)용의 정보 및 인스트럭션을 저장하는 컴퓨터 판독가능 휘발성 메모리, 예를 들어 RAM(704)도 버스(714)에 결합되어 있다. 또한, 프로세서(702)용의 정적 정보 및 인스트럭션을 저장하는 컴퓨터 판독가능 판독 전용 메모리(ROM)(706)도 버스(714)에 결합되어 있다. 데이터 저장 장치(708)는 대량의 정보 및 인스트럭션을 저장하는데 사용된다. 정보 명령 선택을 프로세서(702)에 전달하는 수문자 및 기능 키를 갖는 수문자 입력 장치(710)는 버스(714)에 결합되어 있다. 사용자 입력 정보 및 명령 선택을 중앙 프로세서(702)에 전달하는 마우스와 같은 커서 제어 장치(712)는 버스(714)에 결합되어 있다. 네트워크, 다른 컴퓨터 또는 예를 들어 다른 프로세서와 통신하는 입/출력 통신 포트(716)는 버스(714)에 결합되어 있다. 정보를 컴퓨터 사용자에게 디스플레이하는 디스플레이(718)는 버스(714)에 결합되어 있다. 사용자에 의해 인식가능한 그래픽 이미지 및 수문자를 생성하는데 적합한 디스플레이 장치(718)는 액정 장치, 음극선관 또는 다른 디스플레이 장치일 수 있다. 수문자 입력(710) 및 커서 제어 장치(712)는 컴퓨터 사용자가 디스플레이(718) 상에서 가시 심볼(포인터)의 2차원 이동을 동적으로 지시할 수 있도록 해준다.
도 8은 주 네트워크 부착식 지속성 메모리 유닛(nPMU)(802) 및 미러 nPMU(804)의 실시예를 구비한 예시적인 지속성 메모리 시스템(100)의 블록도이다. 주 nPMU(802) 및 미러 nPMU(804)는 제각각 NI(806 및 808)를 통해 RDMA 가능 SAN(106)에 통신가능하게 결합된다. 주 nPMU(802) 및 미러 nPMU(804)는 별도의 장치이다. 따라서, 주 nPMU(802) 및 미러 nPMU(804)는 별개의 결합 영역을 갖는다. 즉, 공유되는 물리적 구성요소가 없기 때문에, 주 nPMU(802) 또는 미러 nPMU(804)의 고장(결함)은 다른 nPMU에 악영향을 주지 않아 결함에 내성이 있는 중복 지속성 메모리 시스템을 제공한다.
다수의 프로세서 노드는 RDMA 가능 SAN(106)을 통해 주 nPMU(802) 및/또는 미러 nPMU(804)와 통신한다. 따라서, 프로세서 노드(A 810) 내지 프로세서 노드(i 812)는 제각각 NI(814 및 816)을 통해 RDMA 가능 SAN(106)에 통신가능하게 결합된다. 각 프로세서 노드는 메모리(1104)(도 11)에 거주하는 소프트웨어로 구현되는 지속성 메모리 유닛(PMU) 라이브러리(818)를 포함한다. 일 실시예에서, PMU 라이브러리(818)는 프로세서 노드 상에서 실행되는 애플리케이션과 주 nPMU(802) 및/또는 미러 nPMU(804) 사이에서 인터페이스 기능을 수행하는 애플리케이션 프로그램 인터페이스(API)(820)를 포함한다. 또 다른 실시예에서, API(820)는 독립형 소프트웨어로서 상주한다.
지속성 메모리 관리자(PMM)(822)는 NI(824)를 통해 RDMA 가능 SAN(106)에 통신가능하게 결합된다. 본 명세서에서 설명하는 바와 같이, PMM(822)는 지속성 메모리의 사용에 적합한 프로세서 노드로부터의 nPMU 관리 기능에 응답한다. 편리한 예시를 위해, PMM(822)은 장치(826) 내에 상주하는 것으로 예시되어 있다. 장치(826)는 본 명세서에서 더 자세히 설명되는 바와 같이 PMM(822)의 기능을 지원하는 프로세서 기반 장치이다. 다른 실시예에서, PMM(822)은 다른 편리한 위치에 상주한다. 예를 들어, PMM(826)은 주 nPMU(802) 또는 미러 nPMU(804)에 상주할 수 있고, 또는 프로세서 노드에도 상주할 수 있다. 또 다른 실시예에서, PMM(822)은 적절한 장치에서 펌웨어로서 구현된다.
PMM(822)은 프로세서 노드로부터의 요청에 응답하여 주 nPMU(802) 및 미러 nPMU(804)에 대한 관리 기능을 수행한다. 관리 기능의 예를 들면, nPMU 메모리 부분을 생성, 삭제, 개방 및 폐쇄하는 기능 및 어떤 지속성 메모리 영역이 주 nPMU(802) 및 미러 nPMU(804)의 현존하는 영역으로부터 삭제되었는지를 나열하는 동작과 같은 메타데이터 조작 동작이 있으나, 여기에 제한되는 것은 아니다. 이들 기능은 이하에서 더 설명된다.
융통성 있는 메모리 관리를 가능하게 하기 위해, PMM(822)은 프로세서 노드에서 지원되는 가상 어드레스 공간에서 주 nPMU(802) 및 미러 nPMU(804)의 물리적 메모리로 매핑하는 단계를 생성한다. 이들 매핑은 또한 nPMU 영역(906)(도 9)에 대한 액세스 제어를 실행하는데 사용된다. 이들 매핑의 특성 및/또는 포맷은 프로세서 노드와 nPMU(802/804) 사이의 상호 접속에 따라 달라진다. 제한적인 않은 예로서, RDMA 스타일의 상호접속 네트워크에 있어서, 매핑단계의 생성은 nPMU(802/804)NI(806/808)에서 변환 테이블의 생성을 포함할 수 있다. 직접 부착식 메모리의 경우에서, 매핑의 생성은 시스템의 페이지 테이블의 조작을 포함할 수 있다.
도 9는 주 nPMU(802) 및/또는 미러 nPMU(804)의 일 실시예의 부가적인 세부사항을 예시하는 실시예의 블록도이다. 모든 다른 시스템 구성요소와 같이 nPMU는 고장날 수 있다. 그러므로, nPMU는 쌍, 즉 주 nPMU(802) 및 미러 nPMU(804)로 관린된다. 일 실시예에서, 각 PMM(822)(도 8)는 단일 쌍의 nPMU(802/804)을 담당한다. 또 다른 실시예에서, 다른 nPMU 쌍을 관리하는 다른 PMM이 존재할 수 있다. 또 다른 실시예에서, 하나의 PMM(822)은 다수의 nPMU 쌍을 제어할 수 있다.
주 nPMU(802) 및 미러 nPMU(804)의 메모리 일부분은 본 명세서에서 메타데이터(902)에 대응하는 정보가 저장되는 메타데이터 영역으로서 지칭되기도 하는 메터데이터(902)를 포함한다. 메타데이터(902)는 "무엇"이 주 nPMU(802) 및/또는 미러 nPMU(804) 상에 존재하는지를 나타낸다. 예를 들어, 메타데이터(902)는 할당된 nPMU 영역을 식별하는 정보, 베이스 포인터 값 정보 및/또는 각 영역의 소자유 및 다른 속성의 식별을 포함하나 여기에 제한되는 것은 아니다. 메타데이터(902)는 주 nPMU(802) 및 미러 nPMU(804) 모두에 저장된다. 따라서, 주 nPMU(802) 또는 미러 nPMU(804)가 고장난 경우, 메타데이터(902)는 보존된다. 또 다른 실시예에서, 메타데이터(902)는 다른 적절한 저장 매체에 저장된다.
주 nPMU(802) 및 미러 nPMU(804)의 메모리의 또 다른 부분은 물리적 데이터(904)를 포함한다. 본 명세서에서 보다 상세히 설명되는 바와 같이, PMM은 PMM 클라이언트를 대신해 주 nPMU(802) 및 미러 nPMU(804) 모두에 물리적 데이터(904)의 영역(906)을 생성한다. 주 nPMU(802)에 상주하는 영역(906)은 편의상 주 영역으로 지칭되고, 미러 nPMU(804)에 상주하는 영역(906)은 편의상 미러 영역으로 지칭된다. 따라서, "영역(906)"이라는 용어는 본 명세서에서 주 영역 또는 미러 영역을 지칭하는 것으로 상호교환가능하게 사용된다. 주 nPMU(802) 및 미러 nPMU(804)는 클라이언트 프로세스에 의해 직접 메모리 액세스를 지원하기 때문에, 데이터는 nPMU 메모리 영역(906)에 영역을 개방한 클라이언트 프로세스에 의해 직접 기록될 수 있다. 또한, nPMU 메모리 영역(906)에 상주하는 데이터는 또한 영역을 개방한 클라이언트 프로세스에 의해 직접 판독될 수 있다.
영역(906)이 생성, 개방 또는 폐쇄되는 경우, 이 동작은 주 nPMU(802) 및 미러 nPMU(804) 내의 영역(906)에 영향을 미칠 것이며, 본 명세서에서 편의상 "미러링"으로 지칭된다. 관리 명령이 PMM(822)에 의해 주 nPMU(802) 및 미러 nPMU(804)에 미러링된다. 따라서, PMM(822)은 주 nPMU(802) 또는 미러 nPMU(804)의 고장 이후에 관린 정보를 복원할 수 있다. 따라서, 프로세스는 현존하는 영역(906)을 정확히 개방할 수 있을 것이다.
도 10은 배터리 백업을 사용하는 주 및/또는 미러 네트워크 부착식 지속성 메모리 유닛(nPMU)의 부가적인 세부사항을 예시하는 또 다른 실시예의 블록도이다. 위에서 설명한 휘발성 메모리는 메타데이터(902), 물리적 데이터(904) 및 다수의 영역(906)을 포함한다. 주 nPMU(802) 및/또는 미러 nPMU(804)의 일 실시예의 다른 구성요소는 위에서 설명되어 있고 도 3에 예시되어 있다.
도 11은 nPMU(802/804)(도 8-10)이 구현되는 예시적인 프로세서 노드(100)(위에서 설명되고 도 8에 예시되어 있는 프로세서 노드(A 810 내지 i 812) 에 대응 함)의 블록도이다. 프로세서 노드(1100)는 프로세서(1102), 메모리(1104) 및 NI(1106)를 포함한다. 프로세서(1102), 메모리(1104) 및 NI(1106)는 접속부(1110)를 거쳐 버스(1108)에 의해 통신가능하게 결합된다. 프로세서 노드(1100)의 또 다른 실시예에서, 위에서 설명한 구성요소들은 도 11에서와는 다른 방식으로 서로 결합되어 있다. 예를 들어, 하나 이상의 위에서 설명한 구성요소들은 프로세서(1102)에 직접 결합될 수 있고 또는 중간 구성요소(도시되어 있지 않음)를 통해 프로세서(1102)에 결합될 수 있다.
메모리(1104)는 PMU 라이브러리(818), API(820), 속성 캐시(1112), 영역 처리(1114) 및 적어도 하나의 프로세서(1116)를 포함한다. 프로세서(1116)는 본 명세서에서 설명한 nPMU(802/804)의 메모리를 이용하는 프로그램 등일 수 있다. 다른 실시예에서, 위에서 설명한 소자들은 다른 적절한 메모리 매체에 상주할 수 있다.
영역 처리(1114)는 베이스 포인터 값(1118), 영역이 주 nPMU에서 매핑된 주 베이스 네트워크 가상 어드레스(1120), 영역이 미러 nPMU에서 매핑된 미러 베이스 네트워크 가상 어드레스(1122), 주 nPMU 네트워크 식별자(ID)(1124) 및 미러 nPMU 네트워크 ID(1126)를 포함한다. 주 nPMU ID(1124) 및 미러 nPMU ID(1126)는 프로세서 노드(1100)와 nPMU(802/804)(도 8) 사이에서 통신을 안내하는 네트워크 ID에 대응한다. 영역 처리(1114)는 PMM(822)(도 8)이 상주하는 장치(826)용의 ID를 포함할 수 있다. 영역 처리(1114)(본 명세서에서 편의상 "영역_처리"로서 지칭함)는 파일 서술자와 유사하다. 영역 처리(1114)는 영역(906)(도 9)을 식별 및 액세스하 기 위해 이하에서 설명되는 기능에서 파라메터로서 통한다. 영역 처리(114)는 개방 영역(906)을 지정 및 액세스하기 위해 실행 API(1130)에 의해 필요한 모든 정보(총괄적으로 편의상 액세스 정보로 칭함)를 포함 또는 지적한다.
영역(906)은 다수의 속성으로 기술될 수 있다. 영역 속성은 nPMU(802/804)의 영역(906)에 대한 정보이다. 영역 속성의 예는 영역 크기를 나타내는 정보(본 명세서에서 편의상 파라메터 "영역_크기"로 지칭함), 생성 데이터 등을 포함하나 여기에 제한되는 것은 아니다. 영역 속성의 특성은 지속성 메모리 시스템(100)의 특정 및/또는 고유한 요건에 따라 달라질 것이다.
영역의 베이스 네트워크 가상 어드레스는 nPMU 영역이 클라이언트 프로세스에 의해 개방되었을 때 매핑된 개시용의 네트워크 가상 어드레스이다. 이 어드레스는 영역이 개방되어 있는 한에서만 유효하고, 다수의 클라이언트 프로세스가 동일한 네트워크 가상 어드레스 매핑을 공유할 수 있다. nPMU에서 네트워크 가상 어드레스에서 물리적 어드레스로의 매핑은 PMM에 의해 관리되고 이것은 클라이언트 프로세스로부터의 요청에 응답하여 이들 매핑을 생성 및 파기하는 PMM의 책임이다. 다수의 어드레스 공간 NIC를 이용하는 실시예에 있어서, 베이스 네트워크 가상 어드레스는 가상 어드레스 및 어드레스 콘텍스트 식별자(ID), 또는 특정 범위의 nPMU 네트워크 가상 어드레스를 지정하는 콘텍스트 처리를 포함할 수 있다. 다수의 어드레스 공간 호환가능 NIC에 있어서, 임의의 주어진 nPMU 네트워크 가상 어드레스로 구성된 다수의 경우가 존재할 수 있다. 예를 들어, 가상 인터페이스 아키텍쳐 기반 시스템에 대한 콘텍스트 ID는 "메모리 처리"로서 지칭된다. 인피밴드 기반 시스템에 대한 콘텍스트 ID는 "R_key"로서 지칭된다. 네트워크 상의 개시자(즉, 클라이언트 프로세서 내의 NI)가 nPMU 영역에 데이터를 판독 또는 기록하기를 원하는 경우, 이 개시자는 액세스하고자 하는 위치를 네트워크 가상 어드레스를 이용해 지정한다.
nPMU 베이스 포인터는 포인터를 포함하는 데이터 구조를 저장하는 클라이언트 프로세스(1128)를 지원한다. 영역(906)은 네트워크 가상 어드레스의 인접 범위로서 액세스된다. 클라이언트 프로세스가 베이스 nPMU 네트워크 가상 어드레스(영역을 개발할 때마다 달라질 수 있음)를 알 필요가 없도록 하기 위해, 클라이언트의 포인터 값은 영역이 생성된 경우 지정된 어드레스 범위에 대응하도록 조정된다. 그러므로, 영역 베이스 포인터 값(1118)은 클라이언트가 nPMU 영역(906)의 제 1 바이트를 액세스하기 위해 사용하게 될 어드레스에 대응하는 값이다(편의상 "베이스_포인터"로 지칭함). 이 베이스 포인터 파라메터는 후속하는 판독 및 기록 명령에 사용되는 오프셋에 대한 베이스를 설정하는데 사용된다. 이 베이스 포인터 값은 실시예에 따라 영역의 베이스 nPMU 네트워크 가상 어드레스에 대응할 수 있고 그렇지 않을 수도 있다. 또한, 베이스 포인터 값(1118)은 클라이언트 프로세스가 어떤 CPU에 상주하는 것과는 상관없이 영역을 사용하는 모든 클라이언트 프로세스에 대해 동일하다. 또한, 베이스 포인터 값(1118)은 영역(906)이 생성되고 이후에 변경될 수 없는 경우 지정된다. 제로가 아닌 베이스 포인터 값은 포인터를 포함하는 영역에서의 데이터 저장을 용이하게 하는데 사용될 수 있다. 그러므로, 베이스 포인터 값(1118)은 nPMU 영역 데이터 내의 포인터를 클라이언트 프로세스가 따라가도 록 허용한다. 또 다른 실시예에서, 영역(906)이 파일과 같이 제로-기반 오프셋으로 액세스되는 경우, 베이스 포인터 값(1118)은 제로로 설정될 수 있다.
프로세서(1102)는 프로세서(1116)를 검색하고 그런 다음 프로세서(1116)를 실행하며, 편의상 "클라이언트 프로세스"(1128)(도 1 및 도 8의 클라이언트 프로세스(112)에 대응함)로 도시되어 있다. 프로세서 노드(1100)의 능동 클라이언트 프로세스 메모리(1132)와 nPMU(802/804)(도 8) 사이의 RDMA 기록 또는 판독을 용이하게 하기 위해, 프로세서(1102)는 API(820)를 검색하고 그런 다음 이 API(820)를 실행하며, 편의상 "실행 API"(1130)로 도시되어 있다. 따라서, 클라이언트 프로세스가 지속성 메모리 시스템(100)에 액세스하기를 원하는 경우, 실행 API(1130)는 실행 프로세스에 의해 앞서 개방된 nPMU(802/804)의 영역(906)을 식별하는 영역 처리(114)를 검색하고, 실행 프로세스가 필요로 하는 함수와 연관된 적어도 하나의 영역 함수를 검색하며, 이 함수와 연관된 적어도 하나의 파라메터를 검색한다. 이들 함수 및 파라메터는 이하에서 더 자세히 설명된다. 이 정보는 필요에 따라 포맷되고 그런 다음 액세스 요청이 지속성 메모리 시스템(100)에 통신된다.
다수의 클라이언트 프로세스가 프로세서 노드 상에서 동시에 실행될 수 있다. 다수의 실행 클라이언트 프로세스는 nPMU의 동일한 영역을 액세스(판독/기록)할 수 있고, 또는 동일한 nPMU 및/또는 상이한 nPMU의 상이한 영역을 액세스할 수 있다.
클라이언트 프로세스 메모리(1132)는 프로세서(1102) 내에 거주하는 메모리 매체 및/또는 랜덤 액세스 메모리(RAM) 등과 같은 부착식 메모리 매체 유닛일 수 있다. 클라이언트 프로세스 메모리(1132)는 편의상 실행 클라이언트 프로세스(1128)의 동작을 용이하게 하기 위해 프로세서(1102)에 의해 사용되는 동작 메모리로서 예시되어 있고, 임의의 적절한 동작 메모리 매체일 수 있다.
도 12는 실행 클라이언트 프로세스(1128)(도 11)에 의해 사용되는 클라이언트 프로세스 메모리(1132)의 메모리 바이트(1204)에 상주하는 포인터 및 데이터와 같은 정보의 위치에 대응하는 클라이언트 어드레스(1202)와, 또한 nPMU(802/804)의 메모리 바이트(1208)에 상주하는 포인터 및 데이터와 같은 정보의 물리적 위치에 대응하는 대응 가상 네트워크 어드레스(1206)의 예시도이다. 위에서 설명한 바와 같이, nPMU(802/804)의 메모리 바이트(1208)의 물리적 위치를 식별하는 물리적 어드레스는 반드시 네트워크 가상 어드레스(1206)에 대응할 필요는 없다. 또한, 위에서 설명한 영역(909)(도 9)은 nPMU(802/804) 내에 다수의 물리적 메모리 바이트(1208)를 포함하는 것으로 이해되며, 영역에 할당된 메모리 바이트(1208)의 수는 이하에서 자세히 설명되는 바와 같이 영역(906)이 생성되는 경우 지정된 영역_크기 파라메터에 의해 결정된다. 편의상, 어드레스(1202 및 1206)는 16진법(HEX) 시스템으로 표현되지만, 임의의 적절한 베이스 시스템도 사용될 수 있다.
실행 API(1130)(도 11)는 데이터를 정렬할 필요없이 nPMU 영역(906)(도 9 및 도 10) 내에서 포인터 데이터를 저장 및 액세스하는 메카니즘을 제공한다. 실행 클라이언트 프로세스(1128)가 자신의 휘발성 메모리 기반 데이터 구조를 nPMU 영역(906)에 반영하기를 원하고, 이 데이터 구조가 고정된 어드레스로 인접 메모리에 저장되는 경우, 베이스 포인터 값(1118)은 데이터 구조의 개시용 어드레스로 설정 될 수 있다. 그런 다음, 도 12에 도시되어 있는 바와 같이, nPMU(802/804) 상주 데이터 구조 내의 포인터는 실행 클라이언트 프로세스(1128)를 위해 또한 임의의 다른 인증된 클라이언트 프로세스에 의한 이어지는 영역의 개방을 위해 동작할 것이다. 도 12에 도시된 베이스 포인터 계산은 판독/기록 동사 내에서, 또는 다수의 메모리 콘텍스트(예를 들어, VIA, 인피밴드 또는 직접 메모리 버스 부착)를 지원하는 보다 가요성의 접속 메카니즘에 의해 달성될 수 있으며, nPMU(802/804)는 베이스 포인터의 값에 일치하도록 영역의 베이스 어드레스를 간단히 매핑할 수 있다.
일 실시예에서, 각 nPMU 쌍(802/804)은 볼륨(편의상 본 명세서에서 "pm_volume"으로서 지칭됨)으로서 식별된다. 이 파라메터는 디스크 볼륨과 대체로 유사하다. nPMU 볼륨은 nPMU 영역(906)의 명칭공간을 포함한다. 일 실시예에서, 각 nPMU 볼륨은 단일 PMM(822)에 의해 제어되고 지속성 메모리의 단일 유닛으로서 관리된다. nPMU 볼륨에 대한 액세스는 두 개의 물리적 nPMU(802/804)를 가로질러 미러링될 것이다. 편의상, nPMU 볼륨은 nPMU 쌍(802/804) 내에서 미러링되기 때문에, 이하에서 나열된 동사의 pm_volume 파라메터에서 지정된 단일 명칭은 단일 PMM에 의해 관리되는 nPMU의 미러링된 쌍을 식별하는데 사용된다. 다른 실시예는 다른 적절한 식별자를 이용하여 nPMU 쌍을 식별한다.
nPMU 영역(906)은 nPMU 볼륨의 할당된 영역(즉, 지속성 메모리의 할당된 부분)이다. 본 명세서에서 특정 영역은 편의상 파라메터 "영역_명칭"에 지칭된다. 일 실시예에서, 영역(906)은 주 nPMU(802) 및 미러 nPMU(804) 모두에 미러링된 쌍으로서 생성되어, 동일한 영역(906)이 양 미러 절반에 생성될 것이다. 두 개의 영 역은 제각기의 nPMU(802/804)에서 물리적으로 반드시 인접할 필요는 없다. 그러나, 영역(906)은 이들이 인접한 경우 클라이언트 프로세스가 본 명세서에서 설명한 네트워크 가상 어드레스를 사용함으로써 액세스된다. 따라서, 영역은 네트워크 가상 어드레스의 인접한 범위로 매핑된다.
프로세서 노드(1100) 상의 클라이언트 프로세스와 nPMU(802/804) 사이에서 판독 또는 기록이 발생하는 경우, 또는 프로세스 노드(1100) 상에서 실행되는 클라이언트 프로세스가 영역(906)의 생성 또는 삭제를 요청하는 경우, 실행 API(1130)는 대응 지속성 메모리 함수의 실행을 야기한다. 이 함수는 nPMU 라이브러리에서 정의된다. 이들 함수는 이하에서 더 자세히 설명된다.
"생성_영역" 함수는 프로세서 노드(1100) 상에서 클라이언트 프로세스가 nPMU(802/804)의 메모리 영역(906)을 생성하도록 요청하는 경우 초기화된다. 클라이언트 프로세스가 지속성 메모리의 새로운 영역을 필요로하는 경우, 실행 API(1130)는 영역(906)(도 9)의 생성을 요청하는, PMM(822)(도 8)로의 통신을 생성한다. 실행 API(1130)는 nPMU 라이브러리(818)로부터 필요한 인스트럭션 및 필요한 파라메타 리스트를 획득한다. 일 실시예에서, pm_volume 파라메터(영역이 생성되는 볼륨의 명칭을 지정함), 영역_명칭 파라메터(지속성 메모리 영역의 명칭을 지정함), 영역_크기 파라메터(할당될 영역의 크기를 바이트로 지정하되, 이 크기는 nPMU에서의 이용가능한 공간까지의 임의의 값을 가질 수 있음), 및 베이트_포인터 파라메터(새로운 영역에 대한 베이스 포인터 값을 지정함)는 PMM(822)에 전달된다(이들은 편의상 총괄적으로 영역 정보로 지칭됨). 즉, 클라이언트 프로세스는 초기 의 영역 생성 요청을, 위에서 설명한 인스트럭션 및 실행 API(1130)에 의해 결정된 필요한 파라메타 리스트를 포함하는 지속성 메모리 시스템에 전달한다.
nPMU 영역(906)을 식별하는 영역 명칭은 nPMU 볼륨 내에서 유일해야 한다. 현존하는 영역 명칭을 이용하여 또 다른 nPMU 영역을 생성하려 시도하면 에러를 반환할 것이다.
PMM(822)은 특정 요청 클라이언트 프로세스에 대한 영역(906)을 설정하고, 베이스_포인터 값을 설정하며, 다른 적절한 속성을 새로운 영역의 메타데이터에 설정한다. 베이스 포인터 파라메터는 후속하는 판독 및 기록 명령에 사용되는 오프셋에 대한 베이스 포인터 값(1118)을 설정하는데 사용된다. 따라서, 실행 API(1130)는 나중에 후속 함수(예를 들어, 기록, 판독 및 삭제 등이 있으나 여기에 제한되지 않음)에 대한 반환 파라메터를 액세스한다. 영역(906)의 베이스 포인터는 그것이 생성되고 이후에 변경될 수 없는 경우 지정된다.
영역(906)의 생성은 영역(906)에 대해 요청된 공간을 주 nPMU(802) 및 미러 nPMU(804) 모두에, PM 메타데이터(902)(도 9) 내의 영역의 엔트리를 따라 할당할 것이다. 영역(906)이 생성되면, 이 영역(906)은 "개방_영역" 함수를 사용하여 액세스될 수 있다. 다른 실시예에서, 생성 함수는 필요에 따라, 예를 들어 새로운 영역이 지속성 메모리 시스템(100) 상에서 실행되는 일부 프로세스에 의해 필요하게 되는 경우 개시될 수 있다.
"삭제_영역" 함수는 클라이언트가 nPMU(802/804) 내의 메모리 영역(906)에 대한 액세스를 임의의 클라이언트 프로세스를 사용하여 종료하고 대응 nPMU 물리적 메모리의 용량을 증가시키도록 요청하는 경우 개시된다. 일 실시예에서, 클라이언트 프로세스가 영역에 대한 직접 메모리 액세스를 필요로하지 않을 것이라고 결정하게 되면, 실행 API(1130)는 영역(906)의 삭제를 요청하는 통신을 PMM(822)(도 8)에 생성한다. 실행 API(1130)는 nPMU(818)로부터 필요한 인스트럭션 및 필요한 파라메터를 획득한다. 일 실시예에서, pm_volume 파라메터 및 영역_명칭은 PMM(822)에 전달된다. 영역이 지정된 볼륨 내에 존재하지 않는 경우, 에러가 반환될 것이다. "삭제_영역" 함수는 영역이 존재하지 않거나, 영역이 여전히 또 다른 클라이언트 프로세스에 의해 개방되어 있거나, 또는 클라이언트 프로세스가 인가되지 않는 경우 실패할 것이다. PMM(822)은 특정 클라이언트 프로세스로부터의 요청에 응답하여 식별된 영역(906)을 삭제한다. 영역이(906)이 삭제되면, 영역(906)은 "개방_영역" 함수를 사용하는 임의의 클라이언트 프로세스에 의해 더 이상 액세스될 수 없다.
"개방_영역" 함수는 nPMU(802/804) 내의 메모리의 할당된 영역(906)을 개방할 것을 클라이언트 프로세스가 요청하는 경우 개시된다. 실행 API(1130)는 nPMU 라이브러리(818)로부터 필요한 인스트럭션 및 필요한 파라메터 리스트를 획득한다. 일 실시예에서, pm_volume 파라메터 및 영역_명칭은 PMM(822)에 전달된다. 개방_영역 함수는 현존하는 메모리 영역만을 개방할 수 있다. 영역(906)이 지정된 볼륨 내에 존재하지 않는 경우, 에러가 반환될 것이다. PMM(822)은 특정 클라이언트 프로세스에 대한 식별된 영역(906)을, 영역에 대응하는 물리적 nPMU 페이지를 nPMU 가상 어드레스의 인접 범위로 매핑함으로써 "개방"한다. 즉, 클라이언트 프로세스 는 후속 액세스 요청을, 위에서 설명한 인스트럭션 및 실행 API(1130)에 의해 결정된 필요한 파라메터 리스트를 포함하는 지속성 메모리 시스템(100)에 전달한다.
영역이 성공적으로 개방되었으면, PMM(822)은 영역_크기 및 베이스_포인터 값을 반환한다. PMM(822)은 영역의 주 및 미러 메모리 영역을 포함하는 nPMU의 네트워크 ID와, 클라이언트 프로세스 및 메모리 콘텍스트 처리(다수의 어드레스 공간 네트워크용)에 의해 영역이 액세스에 적합하도록 매핑되는 베이스 네트워크 가상 어드레스를 반환할 것이다. 이들 반환된 값을 이용하여, API는 영역_처리를 구성할 것이며 이 영역 처리(1114)를 nPMU 라이브러리(818)(또는 다른 적절한 메모리 위치)에 저장한다. 따라서, 동일한 클라이언트 프로세스에 의해 영역(906)으로의 후속 직접 액세스는 이 영역 처리(1114)를 사용하여 영역(906)을 식별한다.
"폐쇄_영역" 함수는 클라이언트 프로세스가 nPMU(802/804)의 메모리영역(906)을 폐쇄하라고 요청하는 경우 개시된다. 실행 API(1130)는 nPMU(818)로부터 필요한 인스트럭션 및 필요한 파라메터 리스트를 획득한다. 일 실시예에서, 영역_처리 파라메터 또는 다른 식별 정보가 PMM(822)에 전달된다. 폐쇄_영역 함수는 현재 개방된(따라서 현존하는) 메모리의 영역(906)만을 폐쇄할 수 있다. 영역(906)이 존재하지 않거나 또는 지정된 볼륨 내의 호출 클라이언트 프로세스에 의해 개방되지 않으면, 에러를 반환할 것이다. 영역(906)을 폐쇄하면 개방 영역(906)과 연관된 임의의 클라이언트 리소스를 자유롭게 한다. 영역(906)이 폐쇄된 후, 클라이언트 프로세스(1128)는 영역(906)을 더 이상 액세스할 수 없고 영역 처리(1114)의 파라메터는 무효화된다. 폐쇄는 nPMU 영역을 이전에 개방한 프로세스가 nPMU 영역 을 분명히 폐쇄하기 전에 실행을 종료하는 경우에는 묵시적으로 이루어져야 한다.
영역(906)이 개방되면, "기록_영역" 함수는 클라이언트 프로세스가 nPMU(802/804)의 영역(906)에 데이터 또는 포인터를 기록할 것을 요청하는 경우 개시된다. 실행 API(1130)는 필요한 인스트럭션 및 필요한 파라메터 리스트를 nPMU 라이브러리(818)로부터 획득한다. 일 실시예에서, 영역_처리 파라메터, 버프(buf) 파라메터(영역(906)에 기록될 데이터가 클라이언트 프로세서의 메모리에 저장되는 버퍼에 대한 포인터를 지정함), 렌(len) 파라메터(영역(906)에 기록될 바이트의 수를 지정함), 기록_포인터 파라메터(데이터 기록을 개시하기 위한 영역(906) 내의 어드레스를 지정함) 및 미러 파라메터(사용될 미러링 방법을 지정함)가 API(1130)에 전달된다. 영역(906)은 논리적으로 베이트_포인터에서 베이터_포인터+영역 크기의 범위를 갖는 어드레스를 갖는 영역_크기 바이트를 포함한다. 따라서, 기록_영역 함수는 nPMU 라이브러리로 하여금 버프에 의해 포인팅된 로컬 클라이언트 버퍼로부터의 렌 바이트를 지속성 메모리에 기록하도록 할 것이다. 몇몇 실시예에서, 이 기록은 임의의 중간 복사없이 클라이언트 프로세서의 메모리에서 nPMU(802/804)로 직접 수행될 것이다. 지속성 메모리 기록은 영역_처리에 의해 지정된 이전의 개방 영역에 이루어질 것이다. 데이터는 어드레스 지정된 기록_포인터에서 시작하는 영역 어드레스의 인접 범위에 기록될 것이다. 베이스_포인터에서 베이스_포인터+영역_크기의 영역 범위 내의 어드레스는 nPMU 가상 또는 물리적 어드레스에 대응할 수도 있고 그렇지 않을 수도 있다. 그러나, 영역 어드레스가 영역이 매핑된 nPMU 가상 어드레스에 대해 등가적이지 않은 경우, 영역 어드레스와 nPMU 가상 어드레스 사이의 차이는 일정한 오프셋 (베이스_포인터)-(네트워크_가상_어드레스_베이스)으로서 지정될 수 있다. 그러므로, X의 기록_포인터 값으로 기록된 데이터는 [(nPMU 가상 어드레스 X)-(베이스_포인터)-(네트워크_가상_어드레스_베이스)]에 기록될 것이다.
유사하게, X의 판독_포인터 값을 통한 데이터 판독은 [(nPMU 가상 어드레스 X)-(베이스_포인터)-(네트워크_가상_어드레스_베이스)]로부터 판독될 것이며, 이는 이하에서 더 자세히 설명될 것이다. 따라서, 도 12는 (네트워크 어드레스)=[판독/기록(R/W)포인터]-(베이스 포인터 값)+(nPMU 네트워크 가상 어드레스)임을 나타낸다.
미러 파라메터는 미러링된 PM 볼륨에서 어느 절반(주 nPMU(802 또는 미러 nPMU(804))이 기록될 것인가를 지정한다. 정상적인 상황 하에서, 미러 파라메터는 항상 PM_BOTH이어야 한다. 다른 값은 오직 복원용으로 또는 미러링이 필요없는 경우에 사용될 것이다. 예시적인 유효 미러 값은 PM_BOTH(정상적인 동작에서 사용되고, 데이터는 주 및 미러 영역 모두에 기록됨)과, PM_PRIMARY(데이터는 주 영역에만 기록됨)과, PM_MIRROR(데이터는 미러 영역에만 기록됨)이다.
영역(906)이 개방되는 경우, "판독_영역" 함수는 클라이언트 프로세스가 nPMU(802/804) 내의 영역(906)으로부터의 데이터 또는 포인터를 판독할 것을 요청하는 경우 개시된다. 실행 API(1130)는 nPMU 라이브러리(818)로부터 필요한 인스트럭션 및 필요한 파라메터를 획득한다. 일 실시예에서, 영역_처리 파라메터, 버프 파라메터(영역(906)으로부터 판독될 데이터를 저장하는 클라이언트 프로세서의 버퍼에 대한 포인터를 지정함), 렌 파라메터(영역(906)으로부터 판독될 바이트 수를 지정함), 판독_포인터 파라메터(데이터 판독을 개시하기 위한 영역(906) 내의 어드레스를 지정함), 및 미러 파라메터(사용될 미러링 방법을 지정함)가 API(1130)에 전달된다. 영역(906)은 베이스_포인터에서 베이스_포인터+영역 크기의 범위의 어드레스를 갖는 영역_크기 바이트로 구성된다. 따라서, 판독_영역 함수는 API(1130)로 하여금 렌 바이트를 판독_포인터의 위치에서 시작하여 지속성 메모리로부터 바이 버프까지 포인팅된 로컬 클라이언트 버퍼로 판독하도록 할 것이다. 몇몇 실시예에서, 데이터는 임의의 중간 복사없이 nPMU(802/804) 중 하나에서 클라이언트 메모리로 직접 판독될 것이다. 베이스_포인터에서 베이스_포인터+영역_크기의 영역 범위 내의 어드레스는 nPMU 가상 또는 물리적 어드레스에 대응할 수도 있고 그렇지 않을 수도 있다. 그러나, 영역 어드레스가 영역이 매핑된 nPMU 가상 어드레스에 대해 등가적이지 않은 경우, 영역 어드레스와 nPMU 가상 어드레스 사이의 차이는 일정한 오프셋 베이스_포인터-네트워크_가상_어드레스_베이스로서 지정될 수 있다. 그러므로, X의 판독_포인터 값을 이용한 데이터 판독은 실제로 nPMU 가상 어드레스 X-(베이스_포인터)-(네트워크_가상_어드레스_베이스)로부터 판독될 것이다.
미러 파라메터는 미러링된 PM 볼륨에서 어느 절반(주 nPMU(802 또는 미러 nPMU(804))이 기록될 것인가를 지정한다. 정상적인 상황 하에서, 미러 파라메터는 항상 PM_ANY이어야 한다. 다른 값은 오직 복원용으로 또는 미러링이 필요없는 경우에 사용될 것이다. 예시적인 유효 미러 값은 PM_ANY(정상적인 동작에서 사용되 고, 데이터는 주 및 미러 영역 모두로부터 판독됨)과, PM_PRIMARY(데이터는 주 영역에만 기록됨)과, PM_MIRROR(데이터는 미러 영역에만 기록됨)이다.
일 실시예에서, 판독 요청이 지속성 메모리 시스템(100)에 저장된 정보가 주 nPMU(802) 또는 미러 nPMU(804)(미러=PM_ANY)로부터 검색되도록 지정하는 경우, 주 nPMU(802) 내에서 이 정보가 이용가능한지를 결정한다. 이 정보가 주 nPMU(802) 내에서 이용가능하지 않은 경우, 이 정보는 미러 nPMU(804)로부터 검색된다. 이 프로세스는 실행 클라이언트 프로세스(1128)에 명료하다. 예를 들어, 주 nPMU(802)가 고장날 수 있고, 주 nPMU(802) 메모리 공간의 일부분이 불량 또는 동작하지 않을 수 있으며, 주 nPMU(802)에 액세스를 제공하는 통신 링크가 고장날 수 있다.
유사하게, 요청이 지속성 메모리 시스템(100)에 저장된 정보가 주 nPMU(802) 또는 미러 nPMU(804)(미러=PM_ANY)로부터 검색되도록 지정하고, 또한, 지속성 메모리 시스템이 수행을 위해 미러 nPMU(804)로부터 정보를 획득하기를 소망하는 경우, 미러 nPMU(804) 내에서 이 정보가 이용가능한지를 결정한다. 이 정보가 미러 nPMU(804) 내에서 이용가능하지 않은 경우, 이 정보는 주 nPMU(802)로부터 검색된다.
일 실시예에서, 판독 요청이 지속성 메모리 시스템(100)에 저장된 정보가 주 nPMU(802)(미러=PM_PRIMARY)로부터만 검색되도록 지정하는 경우, 주 nPMU(802) 내에서 이 정보가 이용가능한지를 결정한다. 이 정보가 주 nPMU(802) 내에서 이용가능하지 않은 경우, 요청은 실패할 것이고 에러를 반환할 것이다.
유사하게, 판독 요청이 지속성 메모리 시스템(100)에 저장된 정보가 미러 nPMU(804)(미러=PM_MIRROR)로부터만 검색되도록 지정하는 경우, 미러 nPMU(804) 내에서 이 정보가 이용가능한지를 결정한다. 이 정보가 미러 nPMU(804) 내에서 이용가능하지 않은 경우, 요청은 실패할 것이고 에러를 반환할 것이다.
"리스트_영역" 함수는 pm_volume에서 명칭이 주어진 볼륨 내에서 영역 리스트(1134)(도 11)를 획득할 것이다. 이 리스트(1134)는 스트링 변수로 구성되는 사용자 할당 어레이에 반환된다. 리스트(1134)는 리스트(1134)가 완전히 채워질때까지 또는 모든 영역이 나열될 때까지 채워질 것이다. 볼륨 내의 실제 영역 수는 영역_cnt 파라메터(볼륨 내의 영역 수를 지정함)에 반환될 것이다. 실행 API(1130)는 nPMU(818)에서 리스트(1134)로부터 필요한 인스트럭션 및 필요한 파라메터를 획득한다. 일 실시예에서, pm_volume 파라메터(콘텐츠가 조사될 볼륨의 명칭을 지정함), 영역_리스트 파라메터(볼륨 내의 영역 리스트에 대한 포인터 어레이 대한 포인터를 지정함) 및 리스트_크기 파라메터(영역_리스트 어레이에서의 소자 수를 지정함)가 실행 API(1130)에 전달된다. 리스트_크기는 소망하는 대로 주어질 수 있다. 볼륨 내의 실제 영역 수 및/또는 다른 관련 정보(편의상 총괄적으로 리스트 정보로 지칭됨)는영역_cnt에 반환될 것이다. 리스트_크기가 영역_cnt 이상인 경우, 영역_cnt 엔트리는 리스트_영역에 의해서만 채워질 것이다. 리스트_크기가 영역_cnt 이하인 경우, 전체 영역_리스트 어레이가 채워질 것이다.
일 실시예에서, 클라이언트 프로세스는 현존하는 지속성 메모리 영역의 속성을 판독할 수 있다. 이들 속성은 영역 크기, 영역 베이스 포인터, 생성 시간, 마 지막 개방 시간 등과 같은 파라메터에 대응하는 표시부(indicia)를 포함할 수 있다. 클라이언트 프로세스는 먼저 속성(편의상 총괄적으로 속성 정보로 지칭함)의 "판독"을 요청해야 한다. 속성 구조의 복사본은 PMM(822)이 메타데이터(902)(도 9)를 처리한 후 PMM(822)으로부터 요청 클라이언트 프로세스에 전달된다. 그런 다음, 실제 속성 값은 이하에서 설명되는 속성 액세서(accessor) 함수를 사용하여 액세스될 수 있다.
편의상 속성 요청으로 지칭되는 "판독 속성" 액세서 함수는 PMM(822)으로부터 지정된 영역(906)에 대한 속성 정보를 요청한다. 실행 API(1130)는 nPMU 라이브러리(818)로부터 필요한 인스트럭션 및 필요한 파라메터 리스트를 획득한다. 일 실시예에서, pm_volume 파라메터(콘텐츠가 조사되는 볼륨의 명칭을 지정함) 및 영역_명칭 파라메터(관심 영역의 명칭을 지정함)는 PMM(822)에 전달된다. 클라이언트는 각 속성 인자마다 PMM(822)과 통신할 필요가 없기 때문에, 판독_속성은 함수 호출시 속성 데이터를 캐싱한다. 이 속성은 메모리 위치가 판독_속성 함수에 의해 반환된 attr_handle 파라메터에 의해 나타내어지는 속성 캐시(1112)(도 11)에 저장된다. 따라서, nPMU(802/804)의 후속하는 속성 변화는 판독_속성 함수가 다시 호출될 때까지 반영되지 않을 것이다.
"get attr<datatype>" 액세서 함수는 att_handle에 의해 포인팅되는 속성 캐시 구조로부터 속성 값을 판독한다. 이들 속성은 문자 명칭에 의해 지정되고 반환된 값은 액세서 함수에 특정적인 데이터 유형일 것이다. 실행 API(1130)는 nPMU 라이브러리(818)로부터 필요한 인스트럭션 및 필요한 파라메터 리스트를 획득한다. 일 실시예에서, attr_handle 파라메터(판독_영역_속성이 실행되었을 때 지정된 영역에 대한 캐시된 속성을 포함하는 구조에 대한 포인터를 지정함), 및 선택적인 max_string_len 파라메터는 API(1130)에 전달된다. max_string_len 파라메터는 스트링 프로세서에 적용되고 attr_val에 의해 포인팅된 스트링의 크기를 갖는다. 스트링 속성을 판독하는 경우, max_string_len 문자까지 attr_val에 의해 포인팅된 버퍼에 복사될 것이다. attr_val의 크기가 전체 속성을 저장하는데 부적절한 경우, 제 1 max_string_len 문자는 복사될 것이고 에러가 반환될 것이다. attr_val 파라메터(attr_name으로 명칭이 주어진 속성의 값을 지정함)가 반환된다. 이 유형의 파라메터는 사용되는 액세서 함수(즉, <data type>)에 의해 지정된다. 클라이언트 프로세스는 속성 값에 대한 공간을 할당해야 한다. 또한, 특정 속성에 대해 잘못된 액세서 함수가 호출되는 경우(즉, 64비트 속성에 대해 언사인 16비트 액세서가 호출되는 경우) 에러가 반환될 것이다.
"free region attrs" 함수는 attr_handle에 의해 포인팅되는 속성 캐시(1112) 구조와 연관된 임의의 리소스를 자유롭게 한다. 이 함수가 호출된 후, attribute_handle는 더 이상 유효하지 않을 것이다. 실행 API(1130)는 nPMU 라이브러리(818)로부터 필요한 인스트럭션 및 필요한 파라메터 리스트를 획득한다.
도 13은 지속성 메모리 시스템(100)의 실시예를 사용하여 지속성 메모리 영역을 생성하는 프로세스를 예시하는 흐름도(1300)이다. 도 14는 클라이언트 프로세스가 지속성 메모리 시스템(100)을 액세스하는데 사용되는 프로세스를 예시하는 흐름도(1400)이다. 도 13 및 도 14의 흐름도(1300 및 1400)는 제각각 지속성 메모 리 시스템(100)을 액세스하는 로직을 구현하는 실시예의 아키텍쳐, 기능 및 동작을 도시한다. 또 다른 실시예는 상태 머신으로서 구성되는 하드웨어를 이용한 흐름도(1300 및 1400)의 로직을 구현하다. 이와 관련하여, 각 블록은 지정된 논리 함수를 구현하는 하나 이상의 실행가능 인스트럭션을 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 몇몇 다른 구현에 있어서, 블록에서 나타낸 함수들은 지속성 메모리 시스템(100)의 기능으로부터 벗어나지 않고서 도 13 및 도 14에서 나타낸 순서와는 달리 이루어질 수 있고, 또는 부가적인 함수를 포함할 수 있다. 예를 들어, 도 13 및 도 14에서 연속적으로 도시된 두 개의 블록은 사실 실질적으로 동시에 실행될 수 있고, 이 블록은 가끔 역순으로 실행될 수 있으며, 또는 관련된 기능에 따라 몇몇 블록은 모든 경우에 실행되지 않을 수 있으며, 이하에서 분명히 더 설명된다.
PM 영역을 생성하는 프로세스는 도 13에 도시되어 있으며 블록(1302)으로 시작한다. 블록(1304)에서, 주 nPMU의 메모리의 일부분에 대응하는 주 nPMU의 제 1 영역이 할당된다. 블록(1306)에서, 미러 nPMU의 메모리의 일부분에 대응하는 미러 nPMU의 제 2 영역이 할당된다. 블록(1308)에서, 제 1 영역 및 제 2 영역에 대응하는 정보가 결정된다. 블록(1310)에서, 결정된 정보는 주 nPMU의 제 1 메타데이터 영역 내에 저장되고 미러 nPMU의 제 2 메타데이터 영역에 저장된다. 프로세스는 블록(1312)에서 종료된다.
도 14에 예시된 프로세스는 블록(1402)으로 시작하다. 블록(1404)에서, 지속성 메모리 시스템을 액세스하는 프로세스가 실행된다. 블록(1406)에서, 애플리 케이션 프로세스 인터페이스(API)가 실행되며, 이 API는 주 nPMU의 제 1 영역을 식별하고 클라이언트 프로세스 노드에 할당된 미러 nPMU의 제 2 영역을 식별하는 영역 처리를 검색하고, 실행 프로세스가 필요로하는 함수와 연관된 적어도 하나의 영역 함수를 검색하며, 함수와 연관된 적어도 하나의 파라메터를 검색한다. 블록(1408)에서, 영역 처리, 영역 함수 및 파라메터를 포함하는 액세스 요청이 생성된다. 블록(1410)에서, 액세스 요청은 지속성 메모리 시스템에 전달된다. 프로세스는 블록(1412)에서 종료된다.
다양한 실시예 및 장점이 설명되어 있지만, 다수의 변형이 쉽게 이루어질 수 있다는 것을 알 수 있을 것이다. 예를 들어, 지속성 메모리를 구현함에 있어서, 다수의 기술이 이용가능하다. 그러므로, 본 개시물 및 후속하는 청구항과 부합하는 본 접근방식은 넓게 적용될 수 있다.
본 발명은 통신 시스템을 통해 적어도 하나의 클라이언트 프로세서 노드에 통신가능하게 결합된 주 네트워크 지속성 메모리 유닛(nPMU)의 사전결정된 부분에 대응하는 주 영역과, 통신 시스템을 통해 클라이언트 프로세서 노드에 통신가능하게 결합된 미러 nPMU의 사전결정된 부분에 대응하는 미러 영역을 포함하는 시스템을 제공함으로써, 장기간의 전력 손실 기간에서도 또는 운영 시스템이 고장난 경우에도 지속성적인(비휘발성인) 메모리를 제공하여 개선된 컴퓨터 시스템을 구현할 수 있다.

Claims (10)

  1. 지속성 메모리 액세스 시스템(100)에 있어서,
    통신 시스템(106)을 통해 적어도 하나의 클라이언트 프로세서 노드(810)에 통신가능하게 결합된 주(primary) 네트워크 지속성 메모리 유닛(nPMU)(802)의 사전정의된 부분에 대응하는 주 영역- 상기 주 영역은 상기 클라이언트 프로세서 노드(810) 상에서 실행되는 클라이언트 프로세스(112)에 할당되고 상기 클라이언트 프로세스(112)로부터 수신된 정보를 저장하도록 구성됨 -과,
    상기 통신 시스템(106)을 통해 상기 클라이언트 프로세서 노드(810)에 통신가능하게 결합된 미러(mirror) nPMU(804)의 사전정의된 부분에 대응하는 미러 영역- 상기 미러 영역은 상기 클라이언트 프로세스(112)에 할당되고 상기 클라이언트 프로세스(112)로부터 수신된 정보를 저장하도록 구성됨 -
    을 포함하되,
    상기 주 nPMU(802) 및 상기 미러 nPMU(804)는 물리적으로 구분된 유닛이며 별개의 결함 영역에 의해 특징지어지는 지속성 메모리 액세스 시스템.
  2. 제 1 항에 있어서,
    상기 주 영역은 상기 정보가 상기 주 영역에 저장되는 다수의 물리적 위치에 대응하는 다수의 주 가상 어드레스를 포함하고, 상기 미러 영역은 상기 정보가 상 기 미러 영역에 저장되는 또 다른 다수의 물리적 위치에 대응하는 다수의 미러 가상 어드레스를 포함하는 시스템.
  3. 제 2 항에 있어서,
    상기 주 nPMU(802)는 상기 주 가상 어드레스 중 하나와 상기 정보와 연관된 대응 클라이언트 어드레스 사이를 변환하도록 구성되고, 상기 미러 nPMU(804)는 상기 미러 가상 어드레스 중 하나와 상기 정보와 연관된 상기 대응 클라이언트 어드레스 사이를 변환하도록 구성된 시스템.
  4. 제 3 항에 있어서,
    베이스 포인터(118)를 더 포함하되, 상기 베이스 포인터(118)는 상기 주 nPMU(802)가 변환하는 상기 주 가상 어드레스와 상기 대응 클라이언트 어드레스의 차이에 대응하고, 상기 베이스 포인터(118)는 상기 미러 nPMU(804)가 변환하는 상기 미러 가상 어드레스와 상기 대응 클라이언트 어드레스의 차이에 더 대응하는 시스템.
  5. 제 1 항에 있어서,
    상기 통신 시스템을 통해 상기 클라이언트 프로세서 노드(810)에 통신가능하게 결합된 지속성 메모리 관리자(PMM)(822)를 더 포함하되, 상기 PMM(822)은 지속성 메모리의 할당에 대한 상기 클라이언트 프로세스(112)로부터의 요청에 응답하고, 상기 PMM(822)은 상기 주 nPMU(820)로 하여금 상기 주 영역을 생성하도록 하고 상기 미러 nPMU(804)로 하여금 상기 미러 영역을 생성하도록 하는 시스템.
  6. 주 네트워크 지속성 메모리 유닛(nPMU)(802) 및 미러 nPMU(804)에서 지속성 메모리를 직접 액세스하는 방법에 있어서,
    상기 주 nPMU(802)에 제 1 영역을 할당하되, 상기 제 1 영역은 상기 주 nPMU(802)의 메모리의 일부분에 대응하는 단계와,
    상기 미러 nPMU(804)에 제 2 영역을 할당하되, 상기 제 2 영역은 상기 미러 nPMU(804)의 메모리의 일부분에 대응하는 단계와,
    상기 제 1 영역 및 상기 제 2 영역에 대응하는 영역 정보를 결정하는 단계와,
    상기 결정한 영역 정보를 메타데이터로서 주 nPMU(802) 내의 제 1 메타데이터 영역(902) 및 상기 미리 nPMU(803) 내의 제 2 메타데이터 영역(902) 내에 저장하는 단계
    를 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 지속성 메모리로의 액세스에 관한 클라이언트 프로세스(112)로부터 개시 요청을 수신하는 단계와,
    상기 할당, 결정 및 저장단계를 수행하기 전에 상기 제 1 영역 및 상기 제 2 영역을 생성하는 단계
    를 더 포함하는 방법.
  8. 제 6 항에 있어서,
    상기 지속성 메모리로의 액세스에 관한 상기 클라이언트 프로세스(112)로부터의 후속 요청을 수신하는 단계와,
    상기 제 1 영역 및 상기 제 2 영역을 개방하는 단계와,
    상기 클라이언트 프로세스(112)로부터 상기 지속성 메모리로 전달된 기록 요청을 수신하는 단계와,
    상기 지속성 메모리에 저장될 정보를 수신하는 단계와,
    상기 정보를 제 1 영역에 저장하는 단계와,
    상기 정보를 제 2 영역에 저장하는 단계
    를 더 포함하는 방법.
  9. 제 6 항에 있어서,
    상기 지속성 메모리로의 액세스에 관한 클라이언트 프로세스(112)로부터의 후속 요청을 수신하는 단계와,
    상기 제 1 영역 및 상기 제 2 영역을 개방하는 단계와,
    상기 클라이언트 프로세스(112)에서 상기 지속성 메모리로 전달된 판독 요청을 수신하는 단계와,
    상기 정보가 상기 제 1 영역에 저장되는 제 1 물리적 어드레스에 대응하고 상기 정보가 상기 제 2 영역에 저장되는 제 2 물리적 어드레스에 대응하는 적어도 하나의 가상 어드레스를 지정하는 상기 영역 정보에 기초하여 상기 지속성 메모리에 저장된 정보를 검색하는 단계와,
    상기 지속성 메모리로부터의 상기 검색한 정보를 상기 클라이언트 프로세스에 전달하는 단계
    를 더 포함하는 방법.
  10. 클라이언트 프로세서 노드(810)에 의해 지속성 메모리 시스템(100)을 액세스하는 시스템에 있어서,
    상기 지속성 메모리 시스템(100)을 액세스하는 클라이언트 프로세스(112)를 실행하는 수단과,
    주 네트워크 지속성 메모리 유닛(nPMU)(802)의 제 1 영역을 식별하고 상기 클라이언트 프로세서 노드(810)에 할당된 미러 nPMU(804)의 제 2 영역을 식별하는 영역 처리(region handle)를 검색하고, 상기 실행 클라이언트 프로세스가 필요로 하는 함수와 관련된 적어도 하나의 영역 함수를 검색하며, 상기 함수와 연관된 적어도 하나의 파라메터를 검색하는 애플리케이션 프로세스 인터페이스(API)(820)를 실행하는 수단과,
    상기 지속성 메모리 시스템(100)에 액세스 요청을 전달하는 수단과,
    상기 지속성 메모리 시스템(100)에 요청을 전달하는 수단과,
    상기 주 nPMU(802)의 제 1 영역에 대응하고 상기 미러 nPMU(804)의 제 2 영역에 대응하는 영역 명칭을 지정하는 수단과,
    상기 지속성 메모리 시스템(100)의 정보를 통신하되, 상기 정보의 위치는 상기 제 1 영역 및 제 2 영역의 가상 어드레스에 대응하는 상기 지정된 영역 및 베이스 포인터 값에 의해 결정되는 수단
    을 포함하는 시스템.
KR1020050024121A 2004-03-24 2005-03-23 지속성 메모리 액세스 시스템, 지속성 메모리의 직접액세스 방법 및 지속성 메모리 시스템을 액세스하는 시스템 KR20060044631A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/808,138 US20050216552A1 (en) 2004-03-24 2004-03-24 Communication-link-attached persistent memory system
US10/808,138 2004-03-24

Publications (1)

Publication Number Publication Date
KR20060044631A true KR20060044631A (ko) 2006-05-16

Family

ID=34991436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050024121A KR20060044631A (ko) 2004-03-24 2005-03-23 지속성 메모리 액세스 시스템, 지속성 메모리의 직접액세스 방법 및 지속성 메모리 시스템을 액세스하는 시스템

Country Status (4)

Country Link
US (2) US20050216552A1 (ko)
JP (1) JP2005276208A (ko)
KR (1) KR20060044631A (ko)
TW (1) TW200602862A (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688800B2 (en) * 2005-10-05 2014-04-01 Hewlett-Packard Development Company, L.P. Remote configuration of persistent memory system ATT tables
JP2007133663A (ja) * 2005-11-10 2007-05-31 Konica Minolta Opto Inc メモリ制御装置及びメモリ制御方法
US20080005727A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US20080005719A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, systems, and computer program products for providing a program execution environment
US20080005752A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for generating application processes by linking applications
US20080005728A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20080127220A1 (en) * 2006-06-30 2008-05-29 Robert Paul Morris Methods, systems, and computer program products for creating an input-value-specific loadable instance of an application
US20080005528A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
US8706687B2 (en) * 2007-01-24 2014-04-22 Hewlett-Packard Development Company, L.P. Log driven storage controller with network persistent memory
US20080320459A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Concurrency Control For Addressable Entities
US20080320282A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US9102962B2 (en) * 2007-10-16 2015-08-11 Shiu Nan Chen Production method for solid cultured active mushroom mycelium and fruit-body metabolites (AMFM) products thereof
US8458433B2 (en) * 2007-10-29 2013-06-04 International Business Machines Corporation Management of persistent memory in a multi-node computer system
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8429739B2 (en) 2008-03-31 2013-04-23 Amazon Technologies, Inc. Authorizing communications between computing nodes
TW201035760A (en) * 2009-03-18 2010-10-01 Inventec Corp Method for backing up data of a server machine
US10114746B2 (en) * 2010-10-14 2018-10-30 Micron Technology, Inc. Nonvolatile storage using low latency and high latency memory
US9015426B2 (en) * 2011-02-28 2015-04-21 Kove Corporation High performance data storage using observable client-side memory access
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) * 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
CN102404398B (zh) * 2011-11-17 2015-03-25 曙光信息产业(北京)有限公司 一种支持多客户端的rdma消息发送方法
US11221967B2 (en) 2013-03-28 2022-01-11 Hewlett Packard Enterprise Development Lp Split mode addressing a persistent memory
EP3074878A4 (en) * 2013-11-27 2017-07-19 Intel Corporation Method and apparatus for server platform architectures that enable serviceable nonvolatile memory modules
US9727503B2 (en) * 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
CN105204774B (zh) * 2014-06-23 2019-01-15 联想(北京)有限公司 一种数据处理方法及电子设备
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US10275171B2 (en) * 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
CN104252419B (zh) 2014-09-16 2017-09-19 华为技术有限公司 一种内存分配的方法及装置
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
GB2533578A (en) * 2014-12-22 2016-06-29 Ibm Recovery of local resource
CN104767725A (zh) * 2014-12-31 2015-07-08 中兴仪器(深圳)有限公司 一种网络数据收发装置和方法
US9652344B2 (en) 2015-06-11 2017-05-16 International Business Machines Corporation In-memory data store replication through remote memory sharing
JP2017027423A (ja) * 2015-07-24 2017-02-02 ソニー株式会社 手術用システム、手術用装置、および手術用方法
US9448901B1 (en) * 2015-12-15 2016-09-20 International Business Machines Corporation Remote direct memory access for high availability nodes using a coherent accelerator processor interface
US10691559B2 (en) * 2016-08-15 2020-06-23 Oracle International Corporation Persistent memory transactions with undo logging
US9794366B1 (en) * 2016-10-19 2017-10-17 Red Hat, Inc. Persistent-memory management
US11086525B2 (en) 2017-08-02 2021-08-10 Kove Ip, Llc Resilient external memory
US11436113B2 (en) * 2018-06-28 2022-09-06 Twitter, Inc. Method and system for maintaining storage device failure tolerance in a composable infrastructure
US11030459B2 (en) 2019-06-27 2021-06-08 Intel Corporation Methods and apparatus for projecting augmented reality enhancements to real objects in response to user gestures detected in a real environment
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590554A (en) * 1982-11-23 1986-05-20 Parallel Computers Systems, Inc. Backup fault tolerant computer system
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
US5446857A (en) * 1992-06-12 1995-08-29 Unisys Corporation Method and apparatus for writing files on nonerasable storage medium
US5479628A (en) * 1993-10-12 1995-12-26 Wang Laboratories, Inc. Virtual address translation hardware assist circuit and method
JP3504763B2 (ja) * 1994-08-19 2004-03-08 富士通株式会社 分散システムに使用されるクライアント,サーバ及び記憶装置並びに分散システムにおける資源管理用サーバの復旧方法
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
US6105148A (en) * 1995-06-16 2000-08-15 Lucent Technologies Inc. Persistent state checkpoint and restoration systems
JP3086779B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 メモリ状態復元装置
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5721918A (en) * 1996-02-06 1998-02-24 Telefonaktiebolaget Lm Ericsson Method and system for fast recovery of a primary store database using selective recovery by data type
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
US5864849A (en) * 1996-12-16 1999-01-26 Lucent Technologies Inc. System and method for restoring a multiple checkpointed database in view of loss of volatile memory
US6393569B1 (en) * 1996-12-18 2002-05-21 Alexander S. Orenshteyn Secured system for accessing application services from a remote station
US6185702B1 (en) * 1997-01-24 2001-02-06 Kabushiki Kaisha Toshiba Method and system for process state management using checkpoints
US7082553B1 (en) * 1997-08-25 2006-07-25 At&T Corp. Method and system for providing reliability and availability in a distributed component object model (DCOM) object oriented system
US6170063B1 (en) * 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
DE19819205A1 (de) 1998-04-29 1999-11-04 Siemens Ag Datenhaltungssystem für persistente Daten
US6351754B1 (en) * 1998-06-23 2002-02-26 Oracle Corporation Method and system for controlling recovery downtime
US6141773A (en) * 1998-06-30 2000-10-31 Emc Corporation Method and apparatus for undoing changes to computer memory
US6266781B1 (en) * 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6195760B1 (en) * 1998-07-20 2001-02-27 Lucent Technologies Inc Method and apparatus for providing failure detection and recovery with predetermined degree of replication for distributed applications in a network
US6272607B1 (en) 1998-08-28 2001-08-07 International Business Machines Corporation Method and apparatus for transactional writing of data into a persistent memory
US6449623B1 (en) * 1998-09-04 2002-09-10 Lucent Technologies Inc, Method and apparatus for detecting and recovering from data corruption of a database via read logging
US6622263B1 (en) * 1999-06-30 2003-09-16 Jack Justin Stiffler Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
US6493837B1 (en) 1999-07-16 2002-12-10 Microsoft Corporation Using log buffers to trace an event in a computer system
AU2001259403A1 (en) * 2000-05-02 2001-11-12 Sun Microsystem, Inc. Method and system for providing cluster replicated checkpoint services
AU2001265075A1 (en) * 2000-05-26 2001-12-11 Infolibria, Inc. High performance efficient subsystem for data object storage
US6957237B1 (en) * 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
WO2002008870A2 (en) * 2000-07-26 2002-01-31 David Dickenson Distributive access controller
US6691245B1 (en) * 2000-10-10 2004-02-10 Lsi Logic Corporation Data storage with host-initiated synchronization and fail-over of remote mirror
US7085742B2 (en) * 2000-10-30 2006-08-01 Xybo Systems, Inc. Authenticating software licenses
US6658656B1 (en) * 2000-10-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
US6704831B1 (en) * 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US20020103819A1 (en) * 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US6766471B2 (en) * 2000-12-28 2004-07-20 International Business Machines Corporation User-level checkpoint and restart for groups of processes
US6847983B2 (en) * 2001-02-28 2005-01-25 Kiran Somalwar Application independent write monitoring method for fast backup and synchronization of open files
US6601148B2 (en) * 2001-03-01 2003-07-29 International Business Machines Corporation Infiniband memory windows management directly in hardware
US6813623B2 (en) 2001-06-15 2004-11-02 International Business Machines Corporation Method and apparatus for chunk based transaction logging with asynchronous input/output for a database management system
US7251747B1 (en) * 2001-09-20 2007-07-31 Ncr Corp. Method and system for transferring data using a volatile data transfer mechanism such as a pipe
US6829685B2 (en) * 2001-11-15 2004-12-07 International Business Machines Corporation Open format storage subsystem apparatus and method
US6883068B2 (en) * 2001-12-17 2005-04-19 Sun Microsystems, Inc. Methods and apparatus for implementing a chche replacement scheme
US7047358B2 (en) * 2001-12-26 2006-05-16 Boon Storage Technologies, Inc. High-performance log-structured RAID
US6910160B2 (en) 2002-01-10 2005-06-21 International Business Machines Corporation System, method, and computer program product for preserving trace data after partition crash in logically partitioned systems
US7251713B1 (en) * 2002-03-18 2007-07-31 Xiotech Corporation System and method to transport data snapshots
EP1573454A2 (en) * 2002-06-11 2005-09-14 Ashish Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
JP3774826B2 (ja) * 2002-07-11 2006-05-17 日本電気株式会社 情報処理装置
FR2843209B1 (fr) * 2002-08-02 2006-01-06 Cimai Technology Procede de replication d'une application logicielle dans une architecture multi-ordinateurs, procede pour realiser une continuite de fonctionnement mettant en oeuvre ce procede de replication, et systeme multi-ordinateurs ainsi equipe.
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US6721806B2 (en) * 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7386694B1 (en) * 2002-12-17 2008-06-10 Symantec Operating Corporation System and method for reading mirrored data
US20040148360A1 (en) * 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US7266645B2 (en) * 2003-02-18 2007-09-04 Intel Corporation Reducing communication for reads and updates in distributed object systems
JP4559359B2 (ja) * 2003-02-20 2010-10-06 パナソニック株式会社 情報記録媒体及びその領域管理方法
US7624112B2 (en) 2003-04-03 2009-11-24 Oracle International Corporation Asynchronously storing transaction information from memory to a persistent storage
US20040230862A1 (en) * 2003-05-16 2004-11-18 Arif Merchant Redundant data assigment in a data storage system
US7412460B2 (en) * 2003-06-19 2008-08-12 International Business Machines Corporation DBMS backup without suspending updates and corresponding recovery using separately stored log and data files
US7165186B1 (en) * 2003-10-07 2007-01-16 Sun Microsystems, Inc. Selective checkpointing mechanism for application components
US7188273B2 (en) * 2003-11-24 2007-03-06 Tsx Inc. System and method for failover
US20050129039A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation RDMA network interface controller with cut-through implementation for aligned DDP segments
US7912979B2 (en) * 2003-12-11 2011-03-22 International Business Machines Corporation In-order delivery of plurality of RDMA messages
US7206911B2 (en) * 2004-02-25 2007-04-17 International Business Machines Corporation Method, system, and program for a system architecture for an arbitrary number of backup components
US20050203974A1 (en) 2004-03-09 2005-09-15 Smith Gary S. Checkpoint methods and systems utilizing non-disk persistent memory

Also Published As

Publication number Publication date
TW200602862A (en) 2006-01-16
JP2005276208A (ja) 2005-10-06
US20110082992A1 (en) 2011-04-07
US20050216552A1 (en) 2005-09-29
US9405680B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
US9405680B2 (en) Communication-link-attached persistent memory system
US5497483A (en) Method and system for track transfer control during concurrent copy operations in a data processing storage subsystem
US7085899B2 (en) System and method of an efficient snapshot for shared large storage
USRE37601E1 (en) Method and system for incremental time zero backup copying of data
US7870356B1 (en) Creation of snapshot copies using a sparse file for keeping a record of changed blocks
US20040148360A1 (en) Communication-link-attached persistent memory device
US7383290B2 (en) Transaction processing systems and methods utilizing non-disk persistent memory
US6996586B2 (en) Method, system, and article for incremental virtual copy of a data block
US7055010B2 (en) Snapshot facility allowing preservation of chronological views on block drives
US7035881B2 (en) Organization of read-write snapshot copies in a data storage system
US7613889B2 (en) System, method, and program for determining if write data overlaps source data within a data migration scheme
US8429363B2 (en) Multiple incremental virtual copies
USRE37364E1 (en) Method and system for sidefile status polling in a time zero backup copy process
US20090043971A1 (en) Data integrity for data storage devices shared by multiple hosts via a network
US20060143412A1 (en) Snapshot copy facility maintaining read performance and write performance
US20060206677A1 (en) System and method of an efficient snapshot for shared large storage
US6338114B1 (en) Method, system, and program for using a table to determine an erase operation to perform
JPH07104808B2 (ja) 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置
JP2000298554A (ja) Raidデータ記憶システムにおける瞬時バックアップを提供する方法及びシステム
EP1636690B1 (en) Managing a relationship between one target volume and one source volume
US6658541B2 (en) Computer system and a database access method thereof
US7047378B2 (en) Method, system, and program for managing information on relationships between target volumes and source volumes when performing adding, withdrawing, and disaster recovery operations for the relationships
US7945724B1 (en) Non-volatile solid-state memory based adaptive playlist for storage system initialization operations
US7552297B2 (en) Instant copy of data in a cache memory via an atomic command
US20050223180A1 (en) Accelerating the execution of I/O operations in a storage system

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid