KR20170098802A - 장애 허용 자동 듀얼 인라인 메모리 모듈 리프레시 - Google Patents
장애 허용 자동 듀얼 인라인 메모리 모듈 리프레시 Download PDFInfo
- Publication number
- KR20170098802A KR20170098802A KR1020177014138A KR20177014138A KR20170098802A KR 20170098802 A KR20170098802 A KR 20170098802A KR 1020177014138 A KR1020177014138 A KR 1020177014138A KR 20177014138 A KR20177014138 A KR 20177014138A KR 20170098802 A KR20170098802 A KR 20170098802A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- processor
- volatile
- data
- event
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/30—Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital 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 DRAM cell
- G11C14/0036—Digital 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 DRAM cell and the nonvolatile element is a magnetic RAM [MRAM] element or ferromagnetic cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital 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 DRAM cell
- G11C14/0045—Digital 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 DRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/14—Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
- G11C5/148—Details of power up or power down circuits, standby circuits or recovery circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/20—Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2015—Redundant power supplies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Power Engineering (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
장애 허용 자동 DIMM(듀얼 인라인 메모리 모듈) 리프레시 또는 ADR에 대한 방법 및 장치가 설명된다. 실시예에서, 프로세서는 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 저장하기 위한 비휘발성 메모리를 포함한다. 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터는 시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 비휘발성 메모리로 저장된다. 다른 실시예들이 또한 개시되고 청구된다.
Description
본 개시 내용은 일반적으로 전자 공학 분야에 관한 것이다. 보다 특별히, 일부 실시예는 일반적으로 장애 허용(fault tolerant) 자동 듀얼 인라인 메모리 모듈 리프레시에 관한 것이다.
일반적으로, 컴퓨팅 시스템에서 데이터를 저장하는 데 이용되는 메모리는 (휘발성 정보를 저장하는) 휘발성 또는 (영구 정보를 저장하는) 비휘발성일 수 있다. 일반적으로, 휘발성 메모리에 저장된 휘발성 데이터 구조는 프로그램의 런타임 동안 프로그램의 기능성을 지원하도록 요구되는 일시 또는 중간 정보를 위해 이용된다. 한편, 비휘발성(또는 영구 메모리)에 저장된 영구 데이터 구조는 프로그램의 실행 시간을 초과하여 이용 가능하고 재이용될 수 있다.
데이터가 영구 메모리에 기입될 때, 저장 동작이 완료되면 그러한 데이터가 실제로 영구 메모리에 기입되는 것으로 가정된다. 그러나, 영구 메모리를 향해 보내지는 데이터는 저장 동작의 실행 후에 그리고 데이터가 실제로 영구 메모리에 저장되기 전에 휘발성 메모리/버퍼들에 여전히 상주할 수 있다. 이 시간 간격 동안 시스템 장애(예컨대, 전력 고장)가 발생하는 경우, 영구 메모리를 향해 보내지는 데이터가 손실되거나 손상될 수 있다.
상세한 설명은 첨부된 도면들을 참조하여 제공된다. 도면에서, 참조 번호 최좌측의 숫자(들)는 그러한 참조 번호가 처음으로 나오는 도면을 식별한다. 상이한 도면들에서 동일한 참조 번호를 사용하여 유사하거나 동일한 아이템들을 나타낸다.
도 1, 2, 5, 6 및 7은 본 명세서에서 논의되는 다양한 실시예들을 구현하는 데 이용될 수 있는 컴퓨팅 시스템의 실시예의 블록도를 도시한다.
도 3은 실시예에 따른, 프로세서 집적 회로(IC) 다이 상에 존재하는 다양한 컴포넌트들의 블록도를 도시한다.
도 4a 및 도 4b는 일부 실시예에 따른 흐름도를 도시한다.
도 1, 2, 5, 6 및 7은 본 명세서에서 논의되는 다양한 실시예들을 구현하는 데 이용될 수 있는 컴퓨팅 시스템의 실시예의 블록도를 도시한다.
도 3은 실시예에 따른, 프로세서 집적 회로(IC) 다이 상에 존재하는 다양한 컴포넌트들의 블록도를 도시한다.
도 4a 및 도 4b는 일부 실시예에 따른 흐름도를 도시한다.
이하의 설명에서, 다양한 실시예들의 완전한 이해를 제공하기 위해 다수의 특정한 세부사항이 제시된다. 그러나, 다양한 실시예들은 특정한 세부사항들 없이 실시될 수 있다. 다른 경우들에서, 널리 공지된 방법들, 절차들, 컴포넌트들, 및 회로들은 특정한 실시예들을 모호하게 하지 않도록 상세히 설명되지 않는다. 또한, 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로("하드웨어"), 하나 이상의 프로그램으로 체계화된 컴퓨터 판독 가능 명령어("소프트웨어"), 또는 하드웨어와 소프트웨어의 일부 조합을 이용하여 수행될 수 있다. 본 개시내용의 목적을 위해 "로직"에 대한 언급은 하드웨어, 소프트웨어, 또는 이들의 일부 조합을 의미한다.
상기에 나타난 바와 같이, 휘발성 메인 메모리와 달리, 영구 메모리는 데이터를 지속성 있게 저장하는 데 사용될 수 있어서, 저장된 데이터는 시스템 고장, 리셋, 및/또는 재시작에 걸쳐 이용 가능하다. 소프트웨어는 저장 명령이 완료되자마자 영구 메모리 범위에 기입된 데이터가 지속성에 도달했지만 데이터가 여전히 휘발성 버퍼들(예컨대, 메모리 제어기 기입 보류 중인 큐(queue) 또는 프로세서 캐시들)에 상주할 수 있는 것으로 간주한다. 이러한 휘발성 버퍼들의 데이터가 영구 메모리에 도달하는 것을 보장하기 위해, ADR(또는 자동 DIMM(듀얼 인라인 메모리 모듈) 리프레시) 메커니즘 또는 (명령어 세트 아키텍처에 따른 명령어인) PCOMMIT가 사용된다.
ADR 메커니즘은 영구 메모리에 대한 프로세서 생성 기입 동작들 또는 영구 메모리에 향하는 인바운드 입력/출력(IO 또는 I/O) 기입 동작들 양자 모두에 사용될 수 있다. ADR은 AC(교류) 전력 고장에 응답하여 메모리 제어기 버퍼(예를 들어, 기입 보류 중인 큐(Write Pending Queue)) 및 (실시예에서 인바운드 데이터를 유지하는) IIO(Integrated IO) 버퍼를 플러싱(flush)하는 레거시 메커니즘이다. 향상된 ADR은 이러한 전력 고장 보호를 프로세서 캐시들로도 확장할 수 있다. 전력 고장의 경우에, ADR과 향상된 ADR(eADR) 양자 모두는 프로세서가 그 캐시들 및 버퍼들을 플러싱할 수 있게 하도록 짧은 양의 시간 동안 DC(직류) 레일들에 전력이 공급되도록 유지하기 위해 플랫폼 벌크 커패시턴스에 의존한다. 상기 시나리오들 중 하나에서, 기본 전제는 임의의 데이터 손실을 방지하기 위해 ADR이 항상 성공해야 한다는 것이다. 유사하게, PCOMMIT가 사용되는 경우, PCOMMIT의 의미는 성능을 제한할 수 있는 모든 iMC(통합 메모리 제어기) WPQ(기입 보류 중인 큐)의 전역 플러싱을 요구한다.
이를 위해, 일부 실시예는 장애 허용 ADR 기술들을 제공한다. 예를 들어, 실시예는 ADR 동안 (링크 또는 VR(전압 조정기) 장애와 같은) 플랫폼 고장들에도 불구하고 NVDIMM(비휘발성 듀얼 인라인 메모리 모듈)에 대한 신뢰성 있는 영구성을 달성하기 위한 메커니즘을 제공한다. 일 실시예에서, 프로세서는 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 저장하기 위한 비휘발성 메모리를 포함한다. 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터는 시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 비휘발성 메모리로 저장된다. 그 후 저장된 데이터는 다음 재부팅 시 비휘발성 메모리에서 복원될 수 있다.
또한, 본 명세서에서 논의된 기술들은 도 1 내지 도 7을 참조하여 논의된 것들을 포함하여 다양한 컴퓨팅 시스템들(예를 들어, 데스크톱, 워크 스테이션, 서버, 랙 시스템 등과 같은 비이동 컴퓨팅 디바이스 및 스마트폰, 태블릿, UMPC(Ultra-Mobile Personal Computer), 랩톱 컴퓨터, Ultrabook™ 컴퓨팅 디바이스, 스마트 시계, 스마트 안경, 스마트 팔찌 등과 같은 이동 컴퓨팅 디바이스를 포함함)에 제공될 수 있다. 보다 특별히, 도 1은 실시예에 따른 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 하나 이상의 프로세서(102-1 내지 102-N)(일반적으로 "프로세서들(102)" 또는 "프로세서(102)"로서 지칭됨)를 포함한다. 프로세서들(102)은 상호접속 또는 버스(104)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함할 수 있고, 이 컴포넌트들 중 일부만이 명확화를 위해 프로세서(102-1)를 참조하여 논의된다. 그에 따라, 나머지 프로세서들(102-2 내지 102-N) 각각은 프로세서(102-1)를 참조하여 논의되는 동일하거나 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본 명세서에서 "코어들(106)", 또는 더 일반적으로 "코어(106)"로 지칭됨), 캐시(108)(다양한 실시예들에서 공유 캐시 또는 사유 캐시일 수 있음), 및/또는 라우터(110)를 포함할 수 있다. 프로세서 코어들(106)은 단일의 집적 회로(IC) 칩 상에 구현될 수 있다. 또한, 칩은 하나 이상의 공유 및/또는 사유 캐시(예컨대, 캐시(108)), 버스 또는 상호접속(예컨대, 버스 또는 상호접속(112)), 로직(120), 로직(150), 메모리 제어기(예컨대, 도 5 내지 도 7을 참조하여 논의된 것), 비휘발성 메모리(NVM)(152)(예를 들어, 플래시 메모리, 고체 상태 드라이브(SSD) 등), 또는 다른 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(110)는 프로세서(102-1) 및/또는 시스템(100)의 다양한 컴포넌트들 사이에서 통신하는 데 사용될 수 있다. 더욱이, 프로세서(102-1)는 하나 초과의 라우터(110)를 포함할 수 있다. 또한, 다수의 라우터들(110)이 프로세서(102-1)의 내부 또는 외부의 다양한 컴포넌트들 사이의 데이터 라우팅을 가능하게 하기 위해 통신할 수 있다.
캐시(108)는 코어들(106)과 같은 프로세서(102-1)의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어들을 포함함)를 저장할 수 있다. 예를 들어, 캐시(108)는 프로세서(102)의 컴포넌트들에 의한 더 빠른 액세스를 위해 휘발성 메모리(114)에 저장된 데이터를 로컬 캐싱(locally cache)할 수 있다. 도 1에 도시된 바와 같이, 메모리(114)는 상호접속(104)을 통해 프로세서들(102)과 통신할 수 있다. 실시예에서, 캐시(108)(공유될 수 있음)는 다양한 레벨들을 가질 수 있으며, 예를 들어 캐시(108)는 중간 레벨 캐시 및/또는 마지막 레벨 캐시(last-level cache; LLC)일 수 있다. 또한, 코어들(106) 각각은 레벨 1(L1) 캐시(116-1)(일반적으로 본 명세서에서 "L1 캐시(116)"로 지칭됨) 및/또는 (예를 들어, 도 3을 참조하여 논의된) 레벨 2(L2) 캐시를 포함할 수 있다. 프로세서(102-1)의 여러 컴포넌트들은 버스(예를 들어, 버스(112)), 및/또는 메모리 제어기 또는 허브를 통해 직접 캐시(108)와 통신할 수 있다.
도 1에 도시된 바와 같이, 메모리(114)는 휘발성 메모리 제어기(120)를 통해 시스템(100)의 다른 컴포넌트들에 연결될 수 있다. 시스템(100)은 NVM 메모리(152)를 시스템(100)의 다양한 컴포넌트들에 연결하기 위해 NVM 메모리 제어기 로직(150)을 또한 포함한다. 일부 실시예들에서 메모리(152)는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리, PCM(Phase Change Memory) 등과 같은 비휘발성 메모리를 포함한다.
또한, 메모리 제어기(150)가 상호접속(104)과 메모리(152) 사이에 연결되는 것으로 도시되어 있어도, 로직(150)은 시스템(100)의 다른 곳에 위치될 수 있다. 예를 들어, 로직(150)(또는 그 일부)은 다양한 실시예들에서 프로세서들(102) 중 하나, 제어기(120) 등 내에서 제공될 수 있다. 실시예에서, 로직(150) 및 NVM(152)은 SSD에 포함된다. 또한, 로직(150)은 다양한 실시예들과 관련하여 본 명세서에서 논의된 바와 같이 하나 이상의 NVM 디바이스(152)(예를 들어, 하나 이상의 NVM 디바이스는 일부 실시예들에서 동일한 집적 회로 다이 상에 제공됨)에 대한 액세스를 제어한다. 또한, 메모리 제어기(120) 및 NVM 제어기(150)는 실시예에서 단일 제어기로 결합될 수 있다.
도 2는 실시예에 따른 2 레벨 시스템 메인 메모리의 블록도를 도시한다. 일부 실시예는 (예를 들어, 런타임 데이터에 추가하여) 시스템 디스크 레벨 스토리지의 캐싱된 서브세트들을 포함하는 메모리의 2 레벨(대안적으로 본 명세서에서 "2LM"으로서 지칭됨)을 포함하는 시스템 메인 메모리(200)에 관한 것이다. 이 메인 메모리는 예를 들어, 휘발성 메모리(114)(예를 들어, DRAM(동적 랜덤 액세스 메모리)을 포함함), NVM(152) 등으로 이루어진 더 작고 더 빠른 메모리를 포함하는 제1 레벨 메모리(210)(대안적으로, 본 명세서에서 "니어(near) 메모리"로도 지칭됨); 및 (니어 메모리에 대해) 더 크고 더 느린 휘발성 메모리(예를 들어, 메모리(114)) 또는 비휘발성 메모리 스토리지(예를 들어, NVM(152))를 포함하는 제2 레벨 메모리(208)(대안적으로 "파(far) 메모리")를 포함한다.
실시예에서, 파 메모리는 호스트 운영 체제(OS)에 대해 "메인 메모리"로서 제공되는 반면, 니어 메모리는 OS에 대해 투명한 파 메모리를 위한 캐시이고, 따라서 후술한 실시예들이 일반적인 메인 메모리 해결책들과 동일하게 나타나도록 한다. 2 레벨 메모리의 관리는 호스트 중앙 처리 유닛(CPU)(102)(본 명세서에서는 상호교환가능하게 "프로세서"로서 지칭됨)을 통해 실행되는 로직 및 모듈의 조합에 의해 수행될 수 있다. 니어 메모리는 효율적인 처리를 위해 하나 이상의 고 대역폭, 저 지연 시간 링크, 버스 또는 인터커넥트를 통해 호스트 시스템 CPU에 연결될 수 있다. 파 메모리는 (니어 메모리의 것과 비교하여) 하나 이상의 저 대역폭, 높은 지연 시간 링크, 버스 또는 인터커넥트를 통해 CPU에 연결될 수 있다.
도 2를 참조하면, 메인 메모리(200)는 런타임 데이터 스토리지 및 CPU(102)로의 시스템 디스크 스토리지 메모리(예컨대, 도 5의 디스크 드라이브(528) 또는 도 6의 데이터 스토리지(648))의 콘텐츠에 대한 액세스를 제공한다. CPU는 메인 메모리(200)의 콘텐츠의 서브세트를 저장하는 캐시 메모리를 포함할 수 있다. 파 메모리는 본 명세서에서 논의된 바와 같이 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 이러한 실시예에서, 니어 메모리(210)는 (즉, CPU(102) 액세스에 대한) 상당히 더 낮은 대역폭 및 더 높은 지연 시간을 가질 수 있는 파 메모리(208)의 (즉, CPU 102 액세스에 대한) 낮은 지연 시간 및 높은 대역폭 캐시를 제공한다.
실시예에서, 니어 메모리(210)는 니어 메모리 제어기(NMC)(204)에 의해 관리되는 반면, 파 메모리(208)는 파 메모리 제어기(FMC)(206)에 의해 관리된다. FMC(206)는 메인 메모리로서 파 메모리(208)를 시스템 OS에 보고한다(즉, 시스템 OS는 시스템 메인 메모리(200)의 크기로서 파 메모리(208)의 크기를 인식한다). 시스템 OS 및 시스템 애플리케이션들은 니어 메모리(210)가 파 메모리(208)의 "투명한" 캐시이기 때문에 니어 메모리(210)의 존재를 "인식하지 못한다".
CPU(102)는 2LM 엔진 모듈/로직(202)을 추가로 포함한다. "2LM 엔진"은 2 레벨 메인 메모리(200)를 지원하기 위해 하드웨어 및/또는 마이크로 코드 확장을 포함할 수 있는 논리적 구조체이다. 예를 들어, 2LM 엔진(202)은 파 메모리(208)의 모든 아키텍처 가시 요소들(architecturally visible elements)의 상태를 추적하는 전체 태그 테이블을 유지할 수 있다. 예를 들어, CPU(102)가 메인 메모리(200) 내의 특정 데이터 세그먼트에 액세스하려고 시도하는 경우, 2LM 엔진(202)은 데이터 세그먼트가 니어 메모리(210)에 포함되는지를 결정하고; 만약 그렇지 않다면, 2LM 엔진(202)은 파 메모리(208)에서 데이터 세그먼트를 인출하고 후속하여 데이터 세그먼트를 니어 메모리(210)에 기입한다(캐시 미스와 유사). 니어 메모리(210)가 파 메모리(208)의 "캐시"로서 작용하기 때문에, 2LM 엔진(202)이 데이터 완성(perfecting) 또는 유사한 캐시 효율 프로세스를 추가로 실행할 수 있다는 점을 이해해야 한다.
또한, 2LM 엔진(202)은 파 메모리(208)의 다른 양태들을 관리할 수 있다. 예를 들어, 파 메모리(208)가 비휘발성 메모리(예컨대, NVM(152))를 포함하는 실시예에서, 플래시와 같은 비휘발성 메모리는 상당한 판독/기입으로 인한 메모리 세그먼트의 열화를 겪는 것으로 이해된다. 따라서, 2LM 엔진(202)은 시스템 소프트웨어에 투명한 방식으로 웨어 레벨링(wear-leveling), 불량 블록 방지(bad-block avoidance) 등을 포함하는 기능들을 실행할 수 있다. 예를 들어, 웨어 레벨링 로직을 실행하는 것은 상대적으로 낮은 소거 사이클 카운트를 갖는 파 메모리(208) 내의 깨끗한 매핑되지 않은 세그먼트의 자유 풀로부터 세그먼트를 선택하는 것을 포함할 수 있다.
일부 실시예에서, 정확한 비율은, 예를 들어 의도된 시스템 사용에 기초하여 변할 수 있지만, 니어 메모리(210)는 파 메모리(208)보다 크기가 더 작을 수 있다. 그러한 실시예에서, 파 메모리(208)는 보다 고밀도의 및/또는 보다 저렴한 비휘발성 메모리를 포함할 수 있기 때문에, 메인 메모리(200)의 크기는 저렴하고 효율적으로 증가될 수 있고 시스템에서의 DRAM(즉, 니어 메모리(210))의 양과 독립적일 수 있다는 점을 이해해야 한다.
일 실시예에서, 파 메모리(208)는 압축된 형태로 데이터를 저장하고, 니어 메모리(210)는 대응하는 비압축 버전을 포함한다. 따라서, 니어 메모리(210)가 (실시예에서 비휘발성 DIMM일 수 있는) 파 메모리(208)의 콘텐츠를 요청할 때, FMC(206)는 콘텐츠를 검색하고 사용되고 있는 압축 알고리즘(예를 들어, 256B 전송)과 매칭하도록 맞춤화된 고정 페이로드 크기들로 콘텐츠를 반환한다.
상기에 논의된 바와 같이, 컴퓨팅 시스템에서 장애 허용을 해결하기 위한 현재의 해결책들은 다양한 문제점들을 제기한다. 예를 들어, 일부 현재의 해결책들에 따라 이하의 문제들이 발생할 수 있다:
(1) ADR 또는 eADR 메커니즘의 하나의 고유 위험은, 플랫폼이 AC 전력 고장 시 이러한 데이터를 플러싱하는 것에 대한 임의의 고장으로 인해 일반적으로 데이터 손실을 야기한다는 점이다. 예를 들어, 이들 고장은 링크 오류, 트랜잭션 재시도, VR 고장 등의 결과로서 발생할 수 있고, 따라서 AC 전력이 고장인 후에 제공된 유지 시간(hold-up time) 내에 영구 메모리에 데이터가 커밋되는 것을 방지할 수 있다;
(2) 주기적으로 버퍼들을 플러싱하는 런타임 메커니즘은 PCOMMIT라고 불리는 ISA(Instruction Set Architecture)에 의해 제공된다. 문제는 PCOMMIT가 프로세서 생성 기입 동작들만을 위한 것이고 인바운드 IO 기입 동작들이 영구성을 달성하기 위해 ADR에 여전히 의존할 필요가 있다는 것이다; 및/또는
(3) PCOMMIT는 런타임 시 WPQ를 플러싱하고 완료들을 다시 가져오는 것과 연관된 지연 시간으로 인해 영구 메모리 디바이스에 대한 데이터 처리량에 또한 영향을 미친다. 그것은 PCOMMIT를 파악하기 위해 기존 소프트웨어가 수정될 필요가 있다는 것을 또한 요구한다.
이들 문제를 해결하기 위해, 실시예는 플랫폼 고장에 직면하여 휘발성 버퍼들(예컨대, 메모리 버퍼(들), IIO 버퍼(들) 등 중 하나 이상)에 상주하고 있는 데이터의 지속성을 보장한다. 그것은 또한 프로세서 생성 기입 동작들 및 인바운드 IO 기입 동작들 양자 모두를 위해 이 동작을 수행한다. 이는 프로세서 생성 기입 동작들에 대한 PCOMMIT 명령 없이 달성되고, 이는 이어서 PCOMMIT 명령을 파악하기 위해 소프트웨어가 수정될 필요가 없다는 것 및 데이터 처리량을 보장한다.
실시예에서, (예를 들어, 비교적 작은) 비휘발성 섀도우(shadow) 버퍼가 프로세서 내부에 제공된다. 이는 정상적인 동작들 하에서는 사용되지 않는다. ADR 이벤트의 발생에 응답하여, 프로세서는 휘발성 버퍼의 콘텐츠를 이 비휘발성 스토리지 디바이스로 스냅 샷을 찍는다(또는 복사). 이는 WPQ 및 IIO 버퍼들의 데이터에 대한 비휘발성 백업 스토리지 디바이스로서 작용할 수 있다. 그러나 NV 섀도우 버퍼가 프로세서 다이 외부에 제공되는 경우, 링크 지연 시간(즉, 백업 버퍼와 휘발성 버퍼들 사이의 링크)은 실제 백업이 종료하는(또는 심지어 개시하는) 임의의 시간을 허용하거나 허용하지 않을 수 있다.
휘발성 버퍼의 스냅 샷이 프로세서 내부에 백업되면, ADR 메커니즘이 들어가서(또는 인계해서) 휘발성 버퍼들을 영구 메모리로 플러싱할 수 있다. 이 플러싱이 성공하면, 백업 데이터가 폐기될 수 있다. (예를 들어, 플랫폼 오류들 또는 고장들로 인해) 플러싱이 성공하지 않으면, 데이터가 백업 이미지로부터 복구될 수 있다.
또한, 백업 저장은 일부 실시예에서 PCM, 3차원 크로스 포인트 메모리 및/또는 STTRAM(Spin Torque Transfer Random Access Memory)과 같은 비휘발성 기술들에 기초할 수 있다. 이들 기술은 플래시 스토리지와 연관된 비교적 큰 기입-지연 시간 없이 영구성을 제공한다.
도 3은 실시예에 따라, 프로세서 집적 회로(IC) 다이(300) 상에 존재하는 다양한 컴포넌트들의 블록도를 도시한다. 예를 들어, 프로세서 다이(300)는 다양한 실시예들에서 도 1 내지 도 2 및 도 5 내지 도 7의 프로세서를 참조하여 논의된 것과 동일한 또는 유사한 컴포넌트들을 포함할 수 있다. 도시된 바와 같이, 프로세서 다이(300)는 (예를 들어, LLC 디바이스들 사이에 코히어런스를 제공하기 위해 Cbox 0 내지 Cbox 7로 라벨링된) Cbox 로직 및 (프로세서 코어들 사이에 공유되는) LLC의 풀뿐만 아니라 각각의 프로세서 코어에 연결되는 L1/L2, (코어 0 내지 코어 7로 라벨링된) 복수의 프로세서 코어를 포함한다. 각각의 LLC는 LLC의 20MB 슬라이스를 포함할 수 있지만 구현예에 따라 다른 슬라이스 크기들이 사용될 수 있다.
도 3을 참조하면, 하나 이상의 상호접속 또는 버스(302)(도 1을 참조하여 논의된 이러한 상호접속(104/112))는 도시된 바와 같이 프로세서 다이(300)의 다양한 컴포넌트들을 연결한다. 프로세서 다이(300)는 (예를 들어, QPI 패킷 생성 로직(306)에 의해 형성된 패킷들에 기초한) QPI(Quick Path Interconnect) 링크들(예를 들어, 2개)과 통신하는 물리적 계층(PHY)(304)을 또한 포함한다. 다른 물리적 계층 로직(308)은 SMI(Scalable Memory Interconnect) 채널들(예를 들어, 4개)과의 통신을 용이하게 한다.
본 명세서에서 논의된 바와 같이, WPQ 또는 메모리 버퍼들은 일반적으로 iMC(310) 내부의 기입 보류 중인 큐(WPQ) 또는 버퍼들(도 3에서 "P1"로서 라벨링됨)을 지칭한다. WPQ의 데이터는 메모리에 커밋되기를 대기하고 있지만 전역적으로 가시적이다. 이것은 ADR 이벤트 시에 메모리로 플러싱된다. 또한, 일반적으로 ADR은, 활성화될 때 개념적으로 "ADR 안전 구역"으로서 지칭되는 WPQ의 데이터로 하여금 NVDIMM으로 플러싱 오버되게 하는 외부 트리거를 제공하는 레거시 메커니즘을 지칭한다. ADR 핀은 초기 AC 전력 검출 회로에 의해 트리거된다. AC 전력 손실의 검출은 ADR 엔트리를 위해 시스템에 이용 가능한 특정 양의 DC 전력을 암시한다. 이러한 "유지 시간"은 전원 공급 설계, 시스템 전력 소비 및 벌크 커패시턴스의 함수이다. 일반적으로, 하드웨어는 "유지 시간"이 만료되기 전에 "ADR 안전 구역"의 모든 데이터가 플러싱되고 영구 메모리에 커밋되는 것을 보장해야 한다. 또한, 본 명세서에서 논의된 ADR 이벤트들은 일반적으로 시스템 리셋 또는 셧다운을 야기하는 이벤트들을 지칭한다. ADR은 AC 전력 고장, CF9 리셋 및 열 트립(thermal trip)을 처리한다.
일 실시예는 이하의 컴포넌트들: NVM(152)(전력 고장 또는 임의의 다른 ADR 이벤트 시 프로세서의 휘발성 버퍼들의 백업) 및 백업 이미지로부터 데이터를 복원하고 다음 재부팅 시에 영구 메모리로 커밋하는 능력을 포함한다. 또한, 도 3의 블록도에 도시된 바와 같이, iMC(310) 내의 버퍼들(P1으로서 도시됨) 및 IIO 스위치(312) 내의 버퍼들(P2로서 도시됨)은 영구 메모리로의 경로의 도중에 상주한다. 프로세서 다이(300) 내부의 NVM(152)은 휘발성 버퍼들(예컨대, WPQ, IIO 버퍼(들) 등을 포함하는 하나 이상의 메모리 버퍼(들))에 저장된 데이터를 수용하기에 충분히 크도록 계획된다. 결합된 IIO 버퍼 및 WPQ 크기는 100 캐시 라인보다 작을 수 있고, 따라서 낮은 용량 스토리지가 충분해야 한다. 또한, 프로세서 다이(300) 내부의 NVM(152)은 실시예에서 프로세서 코어(들)와 동일한 전력 레일을 공유해서 NVM이 적어도 백업될 데이터를 송신하는 프로세서 코어(들)만큼 길게 동작 중인 채로 남아 있을 수 있게 하도록 계획된다. 일 실시예에서, 프로세서 다이(300)는 NVM 및/또는 프로세서 코어(들)가 전력 고장 또는 ADR 이벤트 후에 동작 중인 채로 남아 있는 시간의 양을 증가시키기 위해 (예를 들어, NVM 및/또는 프로세서 코어(들)에 제공된 추가의 전하를 저장하기 위해) 하나 이상의 커패시터를 포함할 수 있다. 추가로, 프로세서 다이(300)는 AC 전력 손실 또는 ADR 이벤트를 검출하기 위해 다이(300)의 컴포넌트들(예컨대, 프로세서 코어들 및/또는 PCU(314))에 근접한 하나 이상의 센서(도시되지 않음)를 포함할 수 있다. 이들 센서(들)는 이어서 본 명세서에서 설명된 바와 같이 NVM(152)으로의 데이터 백업의 개시를 야기할 수 있다.
또한, 소프트웨어에 의해 수행되는 임의의 저장 동작은 그것이 이 도면에 도시된 버퍼들(P1/P2)에 포스팅되면 완료된 것으로 간주된다. NVDIMM으로의 경로의 도중에 이들 버퍼에 여전히 상주하고 있는 해당 데이터는 소프트웨어에 투명하고 이러한 포인트에서 소프트웨어는 이것을 영구 데이터로서 간주한다. 소프트웨어가 이 데이터를 영구 스토리지에 커밋된 것으로서 간주하기 때문에 이러한 포인트에서 임의의 시스템 전력 고장 또는 리셋은 사일런트 데이터 커럽션(silent data corruption)을 초래할 수 있다. ADR은 플랫폼 AC 레일들이 고장났다는 표시를 프로세서(300)의 PCU(314)(전력 제어 유닛)에 제공하는 플랫폼 특징이다. 플랫폼 유지 시간 및 플러싱이 이러한 시간 내에 완료해야 할 때까지 DC 레일들이 활성화될 수 있다. 예를 들어, 유지 시간과 일치하는 타이머가 개시될 수 있고, 그것이 만료되면 시스템의 리셋을 야기할 수 있다. 그 후 PCU는 iMC(때로는 "ASyncSR"로 불림)에 메시지를 송신한다. 이 메시지의 수신에 응답하여, iMC는 모든 추가의 트랜잭션들을 차단하고, WPQ 및 IIO 버퍼를 비우고, 메모리를 셀프 리프레시 상태로 하고, 이 시점에서 플러싱이 성공적인 것으로 간주된다. 메모리가 셀프 리프레시 상태가 되기 전에 DC 레일들이 전력을 느슨하게 하면, 플러싱이 실패하고 데이터가 손실될 수 있다.
일 실시예에서, NVM(152)은 또한 예를 들어 미리결정된 위치에 비트 플래그("NvBackUpVaild"로 불릴 수 있음)를 제공/저장한다. 구현예에 따라 이러한 플래그가 설정되면, NV 백업의 데이터가 유효한 것으로 간주된다. 그리고 플래그가 클리어하면, NV 백업 데이터는 유효하지 않은 것으로 간주된다(그리고 사용되지 않아야 한다).
도 4a는 일 실시예에 따라, 고장 표시에 응답하여 수행되는 방법(400)의 흐름도를 도시한다. 예를 들어, 방법(400)은 전력 고장(또는 다른 ADR 이벤트)이 개시되었음을 나타내는 신호(예컨대, ASyncSR)의 수신에 응답하여 (예를 들어, 도 3의 iMC(310)에서) 수행될 수 있다. 일 실시예에서, 도 1 내지 도 3 및 도 5 내지 도 7을 참조하여 논의된 다양한 컴포넌트들은 도 4a를 참조하여 논의된 하나 이상의 동작을 수행하는 데 이용될 수 있다. 실시예에서, 방법(400)의 하나 이상의 동작은 도 1의 로직(150) 및/또는 제어기(120)와 같은 로직(예를 들어, 펌웨어) 및/또는 다른 도면들을 참조하여 논의된 다른 메모리 제어기들(예컨대, IMC(310))로 구현된다.
도 1 내지 도 4a를 참조하면, 동작 404에서 (예를 들어, ADR 이벤트 및 PCU(314)로부터의 후속 AsyncSR 커맨드에 응답하여), 추가의 트랜잭션들을 차단한다. 동작 406은 휘발성 버퍼들의 스냅 샷을 찍고 이것들을 NV 백업(예를 들어, NVM(152))에 저장한다. 동작 408에서, NV 백업 플래그가 설정된다(또는 구현예에 따라 클리어된다). 동작 410에서, 정상 ADR 흐름이 전개된다(예를 들어, 휘발성 버퍼들이 플러싱되고 메인 메모리/DIMM이 셀프 리프레시 상태로 됨). 동작 412에서, NV 백업 플래그는 클리어된다(또는 구현예에 따라 설정된다).
또한, 동작 410(정상 ADR 흐름)은 플랫폼 오류들 및 고장들에 취약하다. 플러싱이 성공하면, 동작 412에서 NvBackUpValid가 클리어되고, 따라서 백업 콘텐츠가 폐기될 수 있다. 그러나 플러싱이 실패하거나 유지 시간 전에 완료되지 않으면, 시스템이 리셋된다.
도 4b는 실시예에 따라 다음 재부팅 시 데이터를 복원하는 방법(450)의 흐름도를 도시한다. 예를 들어, 방법(450)은 도 4a의 동작(412) 후에 재부팅 동안 BIOS(Basic Input/Output System)에 의해 도 4b의 좌측과 iMC(310)에 의해 도 4b의 우측으로) 수행될 수 있다. 다양한 실시예들에서, 도 1 내지 도 3 및 도 5 내지 도 7은 도 4b를 참조하여 논의된 다양한 컴포넌트들은 하나 이상의 동작을 수행하는 데 이용될 수 있다. 실시예에서, 방법(450)의 하나 이상의 동작은 도 1의 BIOS, 로직(150) 및/또는 제어기(120)와 같은 로직(예를 들어, 펌웨어) 및/또는 다른 도면들을 참조하여 논의된 다른 메모리 제어기들(예컨대, IMC(310))로 구현된다.
도 1 내지 도 4b를 참조하면, 동작 452에서(예를 들어, 도 4a의 동작 412 후에 그리고 다음 재부팅 시) BIOS는 정상 MRC(메모리 참조 코드)를 실행하고 메모리 및 NVDIMM을 초기화하고 (예를 들어, 각각의 iMC에서의) NvBackUpValid 비트를 체크한다(454). 이 비트가 클리어되는 경우, BIOS는 나머지 동작들을 건너 뛰고 정상 부팅(460)으로 진행한다. 반면에, 비트가 설정되는 경우(454), BIOS는 백업을 복원하기 위해 (예를 들어, CSR 기입을 통해) iMC(456)에 커맨드를 송신한다. 이에 응답하여, iMC는: 추가의 트랜잭션들을 차단하고(462), 임의의 미해결(outstanding) 트랜잭션들을 비우고(464), NV 백업으로부터 콘텐츠를 WPQ로 복원하고(466), WPQ를 지우고(468)(이제 데이터가 복구됨), NvBackUpValid 플래그를 클리어하고(469), 트랜잭션들(470)을 차단 해제하고, 복원 동작들이 완료되었음을 나타내는 상태를 BIOS에 되돌려 송신한다(472).
또한, 동작 456 후에(동작 462의 수행에 추가하여), 방법(450)은 동작(458)을 수행해서 iMC 복원이 완료인지를 결정하고(예를 들어, 동작(472)), 만약 그렇다면, 동작(460)에서 정상 부팅으로 진행한다.
일부 실시예에서, PCOMMIT 명령의 사용 없이 IO 영구성 또는 프로세서 코어 영구성은 다음과 같이 수행될 수 있다. ADR 이벤트 및 PCU로부터의 후속 AsyncSR 커맨드 시, iMC는: (1) iMC는 NVDIMMTPQ(트랜잭션 보류 중인 큐)의 기입 스냅 샷을 찍는다; (2) iMC는 NVDIMM에 추가로 들어오는 판독들/기입들을 차단한다; (3) 버퍼들의 스냅 샷을 찍고 그것들을 NV 백업에 저장한다; (4) NvBackUpValid 플래그를 설정한다; (5) 정상 ADR 흐름을 계속한다(예를 들어, NVDIMM TPQ의 기입들을 비휘발성 메모리 제어기에 송신하고, 모든 스냅 샷 기입들이 송신된 후에, iMC는 ADR 전력 고장 커맨드를 NVDIMM에 송신한다); (6) 그 후 iMC가 NvBackUpValid를 클리어한다.
또한, 위의 동작 (5)(정상 ADR 흐름)는 플랫폼 오류들 및 고장들에 취약하다. 플러싱이 성공하면, NvBackUpValid가 클리어되고 따라서 백업 콘텐츠가 폐기될 수 있다. 그러나 플러싱이 실패하거나 유지 시간 전에 완료되지 않으면, 시스템이 리셋된다. 다음 재부팅 시 BIOS는: (a) 정상 MRC를 실행하고 메모리 및 NVDIMM을 초기화한다; (b) iMC에서의 NvBackUpValid 비트를 확인한다; (c) NvBackUpValid 비트가 클리어되면, BIOS는 나머지 단계들을 건너 뛰고 정상 부팅으로 진행한다; (d) NvBackUpValid 비트가 설정되면, BIOS는 백업을 복원하기 위해 iMC에 커맨드(예를 들어, CSR 기입 동작을 통해)를 송신한다. 그 후 iMC는: (i) 추가의 트랜잭션들을 차단한다; (ii) 임의의 미해결 트랜잭션들을 지우고; (iii) NV 백업으로부터 콘텐츠를 WPQ로 복원하고; (iv) WPQ를 지우고(이제 데이터가 복구됨); (v) NvBackUpValid 플래그를 클리어하고; (vi) 트랜잭션들을 차단 해제하고; (vii) 복원이 완료임을 나타내는 상태 정보를 BIOS에 되돌려 송신한다.
따라서, 현재의 구현예들은 소프트웨어가 지속 가능한 것으로 간주되는 데이터의 지속성을 보장하지 않는다. 현재의 해결책들이 정상 조건들에 대해서는 효과가 있을 수 있지만, 임의의 플랫폼 고장들 또는 오류 조건들(예를 들어, 링크 오류들, 재시도들, VR 고장들 등)은 데이터의 손실을 야기할 수 있다. 소프트웨어가 영구 메모리에 이미 데이터를 기입하고 데이터를 지속 가능한 것으로 간주하고 플랫폼이 데이터를 지속 가능하게 만들기 위해 그 "약속"을 지켜야 하기 때문에, 이는 수락되지 않는다. 이를 위해, 실시예는 플랫폼 고장들 또는 오류 조건들에 직면해도 데이터 무결성을 보장한다. AC 전력이 고장 나자마자 휘발성 버퍼들을 백업하는 것에 의해, 이러한 버퍼들을 영구 메모리로 플러싱하는 것에 대한 실패는 데이터 손실을 발생시키지 않고 다음 재부팅 동안 복구될 수 있고 OS(운영 체제) 핸드 오프 이전에 지향되었던 영구 메모리 범위로 커밋될 수 있다는 것을 보장한다.
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템(500)의 블록도를 도시한다. 컴퓨팅 시스템(500)은 상호접속 네트워크(interconnection network)(또는 버스)(504)를 통해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPU들)(502) 또는 프로세서들을 포함할 수 있다. 프로세서들(502)은 범용 프로세서, (컴퓨터 네트워크(503)를 통해 전달된 데이터를 처리하는) 네트워크 프로세서, (셀폰들, 스마트폰들 등에서 사용되는 것들과 같은) 애플리케이션 프로세서, 또는 다른 유형의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 유선(예를 들어, 이더넷, 기가비트, 파이버 등) 또는 무선 네트워크들(예컨대, 셀룰러, 3G(3세대 셀폰 기술 또는 3세대 무선 포맷(UWCC)), 5G, LPE(Low Power Embedded) 등)을 포함하는 다양한 유형의 컴퓨터 네트워크들(503)이 이용될 수 있다. 또한, 프로세서들(502)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 갖는 프로세서들(502)은 동일한 집적 회로(IC) 다이 상에서 상이한 유형들의 프로세서 코어들을 집적할 수 있다. 또한, 다중 코어 설계를 갖는 프로세서들(502)은 대칭형 또는 비대칭형 마이크로프로세서들로서 구현될 수 있다.
실시예에서, 프로세서들(502) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 하나 이상의 프로세서(502)는 하나 이상의 코어(106) 및/또는 캐시(108)를 포함할 수 있다. 또한, 도 1 내지 도 4를 참조하여 논의된 동작들은 시스템(500)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
칩셋(506)은 또한 상호접속 네트워크(504)와 통신할 수 있다. 칩셋(506)은 그래픽 및 메모리 제어 허브(GMCH)(508)를 포함할 수 있다. GMCH(508)는 메모리(114)와 통신하는 메모리 제어기(510)(실시예에서 도 1의 메모리 제어기(120)와 동일하거나 유사할 수 있음)를 포함할 수 있다. 시스템(500)은 (도 5에 도시된 것들과 같지만, 시스템(500) 내의 다른 위치들(도시되지 않음)에 있을 수 있는) 다양한 위치들에서 (예를 들어, NVM(152)에 연결된) 로직(150)을 또한 포함할 수 있다. 또한, NVM(152)은 도 5에 도시된 것과 같은 다양한 위치들에 존재할 수 있다.
메모리(114)는 CPU(502) 또는 컴퓨팅 시스템(500)에 포함된 임의의 다른 디바이스에 의해 실행되는 명령어들의 시퀀스들을 포함하여, 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(114)는 RAM(random access memory), DRAM(dynamic RAM), SDRAM(synchronous DRAM), SRAM(static RAM), 또는 다른 유형의 스토리지 디바이스들과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스를 포함할 수 있다. 하드 디스크, 플래시, 바이트 어드레싱 가능한 3차원 크로스 포인트 메모리(예컨대, PCM), 저항성 랜덤 액세스 메모리, NAND 메모리, NOR 메모리 및 STTRAM과 같은 비휘발성 메모리가 또한 이용될 수 있다. 다수의 CPU 및/또는 다수의 시스템 메모리와 같은 추가적인 디바이스들이 상호접속 네트워크(504)를 통해 통신할 수 있다.
GMCH(508)는 또한 그래픽 가속기(516)와 통신하는 그래픽 인터페이스(514)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(514)는 가속화된 그래픽 포트(accelerated graphics port)(AGP) 또는 PCI(Peripheral Component Interconnect)(또는 PCI 익스프레스(PCIe) 인터페이스)를 통해 그래픽 가속기(516)와 통신할 수 있다. 본 발명의 일 실시예에서, 디스플레이(517)(예컨대, 평판 패널 디스플레이, 터치 스크린 등)는, 예를 들어 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장된 이미지의 디지털 표현을 디스플레이에 의해 해석되어 디스플레이되는 디스플레이 신호들로 변환하는 신호 변환기를 통해, 그래픽 인터페이스(514)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성된 디스플레이 신호들은, 디스플레이(517)에 의해 해석되고 후속하여 디스플레이(517) 상에 디스플레이되기 이전에, 다양한 제어 디바이스들을 통과할 수 있다.
허브 인터페이스(518)는 GMCH(508)와 입력/출력 제어 허브(ICH)(520)가 통신하도록 할 수 있다. ICH(520)는 컴퓨팅 시스템(500)과 통신하는 I/O 디바이스들에 인터페이스를 제공할 수 있다. ICH(520)는 주변 장치 브리지(또는 제어기)(524), 예컨대 PCI(peripheral component interconnect) 브리지, USB(universal serial bus) 제어기, 또는 다른 유형의 주변 장치 브리지들 또는 제어기들을 통해 버스(522)와 통신할 수 있다. 브리지(524)는 CPU(502)와 주변 장치들 사이의 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들(topologies)이 이용될 수 있다. 또한, 예를 들어, 다중 브리지들 또는 제어기들을 통해, 다중 버스가 ICH(520)와 통신할 수 있다. 또한, ICH(520)와 통신하는 다른 주변 장치들은, 다양한 실시예들에서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 서포트(예를 들어, DVI(digital video interface)), 또는 다른 디바이스들을 포함할 수 있다.
버스(522)는 오디오 디바이스(526), 하나 이상의 디스크 드라이브(들)(528), 및 (예를 들어 유선 또는 무선 인터페이스를 통해 컴퓨터 네트워크(503)와 통신하는) 네트워크 인터페이스 디바이스(530)와 통신할 수 있다. 도시된 바와 같이, 네트워크 인터페이스 디바이스(530)는, (예를 들어, IEEE(Institute of Electrical and Electronics Engineers) 802.11 인터페이스(IEEE 802.11a/b/g/n 등을 포함함), 셀룰러 인터페이스, 3G, 5G, LPE 등을 통해) 무선으로 네트워크(503)와 통신하기 위해 안테나(531)에 연결될 수 있다. 다른 디바이스들은 버스(522)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(530)와 같은) 다양한 컴포넌트들은 일부 실시예에서 GMCH(508)와 통신할 수 있다. 또한, 프로세서(502) 및 GMCH(508)는 단일 칩을 형성하기 위해 결합될 수 있다. 또한, 그래픽 가속기(516)는 다른 실시예들에서 GMCH(508) 내에 포함될 수 있다.
더욱이, 컴퓨팅 시스템(500)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 ROM(read-only memory), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디스크 드라이브(예를 들어, 528), 플로피 디스크, CD-ROM(compact disk ROM), DVD(digital versatile disk), 플래시 메모리, 광자기 디스크, 또는 전자 데이터(예를 들어, 명령어를 포함함)를 저장할 수 있는 다른 유형의 비휘발성 머신 판독 가능 매체 중 하나 이상을 포함할 수 있다.
도 6은 일 실시예에 따라, 포인트-투-포인트(point-to-point, PtP) 구성으로 배열되는 컴퓨팅 시스템(600)을 도시한다. 특히, 도 6은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트-투-포인트 인터페이스에 의해 상호접속되는 시스템을 도시한다. 도 1 내지 도 5를 참조하여 논의되는 동작들은 시스템(600)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 시스템(600)은 몇몇 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 2개의 프로세서(602 및 604)만이 도시된다. 프로세서들(602 및 604)은 메모리들(610 및 612)과의 통신을 인에이블하기 위해 로컬 메모리 제어기 허브(MCH)(606 및 608)를 각각 포함할 수 있다. 메모리들(610 및/또는 612)은 도 1 및/또는 도 5의 메모리(114) 또는 NVM(152)을 참조하여 논의된 것과 같이 다양한 데이터를 저장할 수 있다. 또한, MCH(606 및 608)는 일부 실시예에서 도 1의 메모리 제어기(120) 및/또는 로직(150)을 포함할 수 있다. 또한, NVM(152)은 도 6에 도시된 것과 같은 다양한 위치들에 존재할 수 있다.
실시예에서, 프로세서들(602 및 604)은 도 5를 참조하여 논의된 프로세서들(502) 중 하나일 수 있다. 프로세서들(602 및 604)은 각각 PtP 인터페이스 회로들(616 및 618)을 사용하는 포인트-투-포인트(PtP) 인터페이스(614)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(602 및 604)은 포인트-투-포인트 인터페이스 회로들(626, 628, 630, 및 632)을 이용하는 개별 PtP 인터페이스들(622 및 624)을 통해 칩셋(620)과 데이터를 각각 교환할 수 있다. 또한, 칩셋(620)은 예를 들어, PtP 인터페이스 회로(637)를 사용하여, 고성능 그래픽 인터페이스(636)를 통해 고성능 그래픽 회로(634)와 데이터를 교환할 수 있다. 도 5를 참조하여 논의된 바와 같이, 그래픽 인터페이스(636)는 일부 실시예에서 디스플레이 디바이스(예를 들어, 디스플레이(517))에 연결될 수 있다.
도 6에 도시된 바와 같이, 도 1의 코어들(106) 및/또는 캐시(108) 중 하나 이상은 프로세서들(602 및 604) 내에 위치될 수 있다. 그러나, 다른 실시예들은 도 6의 시스템(600) 내의 다른 회로들, 로직 유닛들 또는 디바이스들에 존재할 수 있다. 또한, 다른 실시예들은 도 6에 도시된 몇몇 회로들, 로직 유닛들 또는 디바이스들 전체에 걸쳐 분산될 수 있다.
칩셋(620)은 PtP 인터페이스 회로(641)를 이용하여 버스(640)와 통신할 수 있다. 버스(640)는 버스와 통신하는 하나 이상의 디바이스, 예컨대 버스 브리지(642) 및 I/O 디바이스들(643)을 가질 수 있다. 버스(644)를 통해, 버스 브리지(642)는 다른 디바이스들, 예컨대 키보드/마우스(645), 통신 디바이스들(646)(예컨대, 모뎀들, 네트워크 인터페이스 디바이스들, 또는 예를 들어 안테나(531)를 통하는 것을 포함하여, 네트워크 인터페이스 디바이스(530)를 참조하여 논의된 바와 같이, 컴퓨터 네트워크(503)와 통신할 수 있는 다른 통신 디바이스들), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(648)와 통신할 수 있다. 데이터 스토리지 디바이스(648)는 프로세서들(602 및/또는 604)에 의해 실행될 수 있는 코드(649)를 저장할 수 있다.
일부 실시예에서, 본 명세서에서 논의된 컴포넌트들 중 하나 이상이 SOC(System On Chip) 디바이스 상에서 구현될 수 있다. 도 7은 실시예에 따른 SOC 패키지의 블록도를 도시한다. 도 7에 도시된 바와 같이, SOC(702)는 하나 이상의 중앙 처리 유닛(CPU) 코어(720), 하나 이상의 그래픽 프로세서 유닛(GPU) 코어(730), 입력/출력(I/O) 인터페이스(740) 및 (메모리 제어기(120) 및/또는 로직(150)과 유사하거나 동일할 수 있는) 메모리 제어기(742)를 포함한다. SOC 패키지(702)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같이 인터커넥트 또는 버스에 연결될 수 있다. 또한, SOC 패키지(702)는 다른 도면들을 참조하여 본 명세서에서 논의된 것들과 같은, 더 많거나 더 적은 컴포넌트들을 포함할 수 있다. 또한, SOC 패키지(720)의 각각의 컴포넌트는, 예를 들어 본 명세서에서 다른 도면들을 참조하여 논의된 바와 같이 하나 이상의 다른 컴포넌트를 포함할 수 있다. 일 실시예에서, SOC 패키지(702)(및 그것의 컴포넌트들)는, 예를 들어 단일의 반도체 디바이스 상에 패키징되는 하나 이상의 집적 회로(IC) 다이 상에 제공된다.
도 7에 도시된 바와 같이, SOC 패키지(702)는 메모리 제어기(742)를 통해 (다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일한 것일 수 있는) 메모리(760)에 연결된다. 실시예에서, 메모리(760)(또는 그것의 일부)는 SOC 패키지(702) 상에 통합될 수 있다.
I/O 인터페이스(740)는, 예를 들어 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호접속 및/또는 버스를 통해, 하나 이상의 I/O 디바이스(770)에 연결될 수 있다. I/O 디바이스(들)(770)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(예컨대, 카메라 또는 캠코더/비디오 레코더), 터치 스크린, 스피커 등 중의 하나 이상을 포함할 수 있다. 또한, SOC 패키지(702)는 실시예에서 로직(150) 및/또는 메모리 제어기(120)를 포함/통합할 수 있다. 대안적으로, 로직(150) 및/또는 메모리 제어기(120)는 SOC 패키지(702)의 외부에(즉, 이산 로직으로서) 제공될 수 있다. 또한, NVM(152)은 도 7에 도시된 것과 같은 다양한 위치들에 존재할 수 있다.
이하의 예는 추가 실시예들과 관련된다. 예 1은 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 저장하는 비휘발성 메모리를 포함하는 프로세서; 및 시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 비휘발성 메모리로 저장하게 하는 로직을 포함하는, 장치를 포함한다. 예 2는 예 1의 장치를 포함하고, 이벤트의 발생을 표시하기 위한 신호를 생성하는 전력 제어 유닛(PCU)을 추가로 포함한다. 예 3은 예 1의 장치를 포함하고, 이벤트의 발생을 검출하기 위한 하나 이상의 센서를 추가로 포함한다. 예 4는 예 1의 장치를 포함하고, 프로세서 및 비휘발성 메모리는 상기 동일한 전력 레일에 연결되는 것이다. 예 5는 예 1의 장치를 포함하고, 비휘발성 메모리에 연결되어 이벤트의 발생 후에 비휘발성 메모리가 동작 중인 채로 남아 있는 시간의 양을 증가시키는 하나 이상의 커패시터를 추가로 포함한다. 예 6은 예 1의 장치를 포함하고, 이벤트의 발생에 응답하여 추가의 트랜잭션들을 차단하는 로직을 포함한다. 예 7은 예 1의 장치를 포함하고, 로직은 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터의 비휘발성 메모리로의 저장의 개시를 표시하기 위해 플래그를 업데이트하는 것이다. 예 8은 예 1의 장치를 포함하고, 로직은 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터의 비휘발성 메모리로의 저장의 완료를 표시하기 위해 플래그를 업데이트하는 것이다. 예 9는 예 1의 장치를 포함하고, 이벤트는 교류(AC) 전력 고장에 대응한다. 예 10은 예 1의 장치를 포함하고, 프로세서는 로직을 포함하는 것이다. 예 11은 예 1의 장치를 포함하고, 하나 이상의 휘발성 버퍼는 하나 이상의 비휘발성 DIMM(듀얼 인라인 메모리 모듈)을 포함하는 것이다. 예 12는 예 1의 장치를 포함하고, 비휘발성 메모리는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것이다. 예 13은 예 1의 장치를 포함하고, 하나 이상의 프로세서 코어, 비휘발성 메모리 및 로직을 갖는 프로세서 중 하나 이상은 동일한 집적 회로 다이 상에 있다.
예 14는 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 프로세서의 비휘발성 메모리에 저장하는 단계; 및 시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 비휘발성 메모리로 저장하게 하는 단계를 포함하는, 방법을 포함한다. 예 15는 예 14의 방법을 포함하고, 이벤트의 발생을 표시하기 위한 신호를 생성하는 전력 제어 유닛(PCU)을 추가로 포함한다. 예 16은 예 14의 방법을 포함하고, 이벤트의 발생을 검출하는 하나 이상의 센서를 추가로 포함한다. 예 17은 예 14의 방법을 포함하고, 프로세서 및 비휘발성 메모리는 동일한 전력 레일에 연결된다. 예 18은 예 14의 방법을 포함하고, 하나 이상의 커패시터는 비휘발성 메모리에 연결되어 이벤트의 발생 후에 비휘발성 메모리가 동작 중인 채로 남아 있는 시간의 양을 증가시킨다. 예 19는 예 14의 방법을 포함하고, 이벤트의 발생에 응답하여 추가의 트랜잭션들을 차단하는 단계를 포함한다. 예 20은 예 14의 방법을 포함하고, 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터의 비휘발성 메모리로의 저장의 개시를 표시하기 위해 플래그를 업데이트하는 단계를 추가로 포함한다. 예 21은 예 14의 방법을 포함하고, 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터의 비휘발성 메모리로의 저장의 완료를 표시하기 위해 플래그를 업데이트하는 단계를 추가로 포함한다. 예 22는 예 14의 방법을 포함하고, 이벤트는 교류 (AC) 전력 고장에 대응한다.
예 23은 프로세서 상에서 실행될 때 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 프로세서의 비휘발성 메모리에 저장하고; 시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 비휘발성 메모리로 저장하게 하는 하나 이상의 동작을 수행하도록 프로세서를 구성하는 하나 이상의 명령어를 포함하는 컴퓨터 판독 가능 매체를 포함한다. 예 24는 예 23의 컴퓨터 판독 가능 매체를 포함하고, 프로세서 상에서 실행될 때 전력 제어 유닛(PCU)으로 하여금 이벤트의 발생을 표시하기 위한 신호를 생성하게 하는 하나 이상의 동작을 수행하도록 프로세서를 구성하는 하나 이상의 명령어를 추가로 포함한다. 예 25는 예 23의 컴퓨터 판독 가능 매체를 포함하고, 프로세서 상에서 실행될 때 하나 이상의 센서로 하여금 이벤트의 발생을 검출하게 하는 하나 이상의 동작을 수행하도록 프로세서를 구성하는 하나 이상의 명령어를 추가로 포함한다.
예 26은 하나 이상의 이미지를 디스플레이하는 디스플레이 디바이스; 디스플레이 디바이스에 연결되어 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 저장하는 비휘발성 메모리를 포함하는 프로세서; 및 시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 비휘발성 메모리로 저장하게 하는 로직을 포함하는, 시스템을 포함한다. 예 27은 예 26의 시스템을 포함하고, 이벤트의 발생을 표시하기 위한 신호를 생성하는 전력 제어 유닛(PCU)을 추가로 포함한다. 예 28은 예 26의 시스템을 포함하고, 이벤트의 발생을 검출하기 위한 하나 이상의 센서를 추가로 포함한다. 예 29는 예 26의 시스템을 포함하고, 프로세서 및 비휘발성 메모리는 동일한 전력 레일에 연결된다. 예 30은 예 26의 시스템을 포함하고, 비휘발성 메모리에 연결되어 이벤트의 발생 후에 비휘발성 메모리가 동작 중인 채로 남아 있는 시간의 양을 증가시키는 하나 이상의 커패시터를 추가로 포함한다. 예 31은 예 26의 시스템을 포함하고, 이벤트의 발생에 응답하여 추가의 트랜잭션들을 차단하는 로직을 포함한다. 예 32는 예 26의 시스템을 포함하고, 로직은 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터의 비휘발성 메모리로의 저장의 개시를 표시하기 위해 플래그를 업데이트하는 것이다. 예 33은 예 26의 시스템을 포함하고, 로직은 프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터의 비휘발성 메모리로의 저장의 완료를 표시하기 위해 플래그를 업데이트하는 것이다. 예 34는 예 26의 시스템을 포함하고, 이벤트는 교류 (AC) 전력 고장에 대응한다. 예 35는 예 26의 시스템을 포함하고, 프로세서는 로직을 포함하는 것이다. 예 36은 예 26의 시스템을 포함하고, 하나 이상의 휘발성 버퍼는 하나 이상의 비휘발성 DIMM(듀얼 인라인 메모리 모듈)을 포함하는 것이다. 예 37은 예 26의 시스템을 포함하고, 비휘발성 메모리는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것이다. 예 38은 예 26의 시스템을 포함하고, 하나 이상의 프로세서 코어, 비휘발성 메모리 및 로직을 갖는 프로세서 중 하나 이상은 동일한 집적 회로 다이 상에 있다.
예 39는 임의의 선행하는 예에 기재된 바와 같은 방법을 수행하기 위한 수단들을 포함하는 장치를 포함한다.
예 40은 실행될 때, 임의의 선행하는 예에 기재된 바와 같은 장치를 실현하거나 방법을 구현하기 위한 머신 판독 가능 명령어를 포함하는 머신 판독 가능 스토리지를 포함한다.
다양한 실시예들에서, 예를 들어 도 1 내지 도 7을 참조하여 본 명세서에서 논의된 동작들은, 예를 들어 본 명세서에서 논의된 프로세스를 수행하도록 컴퓨터를 프로그램하는 데 이용되는 명령어들(또는 소프트웨어 절차들)이 저장되어 있는 유형의(tangible)(예를 들어, 비일시적인) 머신 판독 가능 또는 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예를 들어, 회로), 소프트웨어, 펌웨어, 마이크로코드 또는 이들의 조합으로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서, 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합들을 포함할 수 있다. 머신 판독 가능 매체는 도 1 내지 도 7에 대해 논의된 것과 같은 스토리지 디바이스를 포함할 수 있다.
추가로, 그러한 유형의 컴퓨터 판독 가능 매체는 컴퓨터 프로그램 제품으로서 다운로딩될 수 있고, 프로그램은 통신 링크(예를 들어, 버스, 모뎀, 또는 네트워크 접속)를 통한 (반송파 또는 다른 전파 매체와 같은) 데이터 신호들에 의해 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)까지 전송될 수 있다.
명세서에서 "일 실시예" 또는 "실시예"에 대한 참조는 실시예와 관련되어 설명된 특정적인 특징, 구조, 또는 특성이 적어도 구현예에 포함될 수 있다는 것을 의미한다. 본 명세서의 여러 곳에서 "일 실시예에서"라는 구문이 등장하는 것은 모두 동일 실시예를 지칭할 수도 있고 그렇지 않을 수도 있다.
또한, 상세한 설명 및 청구항에서, "연결" 및 "접속"이라는 용어는, 그 파생어들과 함께 사용될 수 있다. 일부 실시예들에서, "접속된"은, 2개 이상의 요소들이 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는 데 이용될 수 있다. "연결"은 2개 이상의 요소가 직접 물리적 또는 전기적으로 접촉한다는 것을 의미할 수 있다. 그러나, "연결"은 또한 2개 이상의 요소들이 서로 직접적인 접촉을 이루지 않을 수 있지만 여전히 서로 협력하거나 상호작용할 수 있는 것을 의미할 수 있다.
따라서, 실시예들은 구조적 특징들 및/또는 방법론적 동작들에 대한 특정 언어로 설명되었지만, 청구 대상은 설명된 특정 특징들 또는 동작들에 제한되지는 않을 수 있다는 것을 이해해야 한다. 오히려, 특정 특징들 및 단계들은 청구 요지를 구현하는 샘플 형태들로서 개시된다.
Claims (23)
- 장치로서,
프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 저장하는 비휘발성 메모리를 포함하는 프로세서; 및
시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 상기 프로세서의 상기 하나 이상의 휘발성 버퍼로부터의 상기 데이터를 상기 비휘발성 메모리로 저장하게 하는 로직
을 포함하는, 장치. - 제1항에 있어서,
상기 이벤트의 발생을 표시하기 위한 신호를 생성하는 전력 제어 유닛(Power Control Unit, PCU)을 추가로 포함하는, 장치. - 제1항에 있어서,
상기 이벤트의 발생을 검출하기 위한 하나 이상의 센서를 추가로 포함하는, 장치. - 제1항에 있어서,
상기 프로세서 및 상기 비휘발성 메모리는 상기 동일한 전력 레일에 연결되는 것인, 장치. - 제1항에 있어서,
상기 비휘발성 메모리에 연결되어 상기 이벤트의 발생 후에 상기 비휘발성 메모리가 동작 중인 채로 남아 있는 시간의 양을 증가시키는 하나 이상의 커패시터를 추가로 포함하는, 장치. - 제1항에 있어서,
상기 이벤트의 발생에 응답하여 추가의 트랜잭션들을 차단하는 로직을 포함하는, 장치. - 제1항에 있어서,
상기 로직은 상기 프로세서의 상기 하나 이상의 휘발성 버퍼로부터의 상기 데이터의 상기 비휘발성 메모리로의 저장의 개시를 표시하기 위해 플래그를 업데이트하는 것인, 장치. - 제1항에 있어서,
상기 로직은 상기 프로세서의 상기 하나 이상의 휘발성 버퍼로부터의 상기 데이터의 상기 비휘발성 메모리로의 저장의 완료를 표시하기 위해 플래그를 업데이트하는 것인, 장치. - 제1항에 있어서,
상기 이벤트는 교류(AC) 전력 고장에 대응하는, 장치. - 제1항에 있어서,
상기 프로세서는 상기 로직을 포함하는 것인, 장치. - 제1항에 있어서,
상기 하나 이상의 휘발성 버퍼는 하나 이상의 비휘발성 DIMM(듀얼 인라인 메모리 모듈)을 포함하는 것인, 장치. - 제1항에 있어서,
상기 비휘발성 메모리는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것인, 장치. - 제1항에 있어서,
하나 이상의 프로세서 코어, 상기 비휘발성 메모리 및 상기 로직을 갖는 상기 프로세서 중 하나 이상은 동일한 집적 회로 다이 상에 있는, 장치. - 방법으로서,
프로세서의 하나 이상의 휘발성 버퍼로부터의 데이터를 상기 프로세서의 비휘발성 메모리에 저장하는 단계; 및
시스템 리셋 또는 셧다운을 야기하는 이벤트의 발생에 응답하여 상기 프로세서의 상기 하나 이상의 휘발성 버퍼로부터의 데이터를 상기 비휘발성 메모리로 저장하게 하는 단계
를 포함하는, 방법. - 제14항에 있어서,
상기 이벤트의 발생을 표시하기 위한 신호를 생성하는 전력 제어 유닛(PCU)을 추가로 포함하는, 방법. - 제14항에 있어서,
상기 이벤트의 발생을 검출하는 하나 이상의 센서를 추가로 포함하는, 방법. - 제14항에 있어서,
상기 프로세서 및 상기 비휘발성 메모리는 동일한 전력 레일에 연결되는, 방법. - 제14항에 있어서,
하나 이상의 커패시터는 상기 비휘발성 메모리에 연결되어 상기 이벤트의 발생 후에 상기 비휘발성 메모리가 동작 중인 채로 남아 있는 시간의 양을 증가시키는, 방법. - 제14항에 있어서,
상기 이벤트의 발생에 응답하여 추가의 트랜잭션들을 차단하는 단계를 포함하는, 방법. - 제14항에 있어서,
상기 프로세서의 상기 하나 이상의 휘발성 버퍼로부터의 상기 데이터의 상기 비휘발성 메모리로의 저장의 개시를 표시하기 위해 플래그를 업데이트하는 단계를 추가로 포함하는, 방법. - 제14항에 있어서,
상기 프로세서의 상기 하나 이상의 휘발성 버퍼로부터의 상기 데이터의 상기 비휘발성 메모리로의 저장의 완료를 표시하기 위해 플래그를 업데이트하는 단계를 추가로 포함하는, 방법. - 제14항에 있어서,
상기 이벤트는 교류(AC) 전력 고장에 대응하는, 방법. - 제14항 내지 제22항 중 어느 한 항에 기재된 방법을 수행하기 위한 수단들을 포함하는 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/583,037 US20160188414A1 (en) | 2014-12-24 | 2014-12-24 | Fault tolerant automatic dual in-line memory module refresh |
US14/583,037 | 2014-12-24 | ||
PCT/US2015/062555 WO2016105814A1 (en) | 2014-12-24 | 2015-11-24 | Fault tolerant automatic dual in-line memory module refresh |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170098802A true KR20170098802A (ko) | 2017-08-30 |
KR102451952B1 KR102451952B1 (ko) | 2022-10-11 |
Family
ID=56151351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177014138A KR102451952B1 (ko) | 2014-12-24 | 2015-11-24 | 장애 허용 자동 듀얼 인라인 메모리 모듈 리프레시 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20160188414A1 (ko) |
EP (1) | EP3238077B1 (ko) |
KR (1) | KR102451952B1 (ko) |
CN (1) | CN107003919B (ko) |
TW (1) | TW201636770A (ko) |
WO (1) | WO2016105814A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200067292A (ko) * | 2018-12-03 | 2020-06-12 | 삼성전자주식회사 | 휘발성 메모리 장치를 포함하는 메모리 모듈 및 이를 포함하는 메모리 시스템 |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592416B2 (en) | 2011-09-30 | 2020-03-17 | Oracle International Corporation | Write-back storage cache based on fast persistent memory |
US10380021B2 (en) | 2013-03-13 | 2019-08-13 | Oracle International Corporation | Rapid recovery from downtime of mirrored storage device |
US10296462B2 (en) | 2013-03-15 | 2019-05-21 | Oracle International Corporation | Method to accelerate queries using dynamically generated alternate data formats in flash cache |
US9760430B2 (en) * | 2015-08-28 | 2017-09-12 | Dell Products L.P. | System and method for dram-less SSD data protection during a power failure event |
US20170109072A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US10275160B2 (en) | 2015-12-21 | 2019-04-30 | Intel Corporation | Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller |
WO2017126130A1 (ja) * | 2016-01-22 | 2017-07-27 | 株式会社日立製作所 | コンピュータ装置及びコンピュータ読取可能記憶媒体 |
US10394310B2 (en) * | 2016-06-06 | 2019-08-27 | Dell Products, Lp | System and method for sleeping states using non-volatile memory components |
US10200376B2 (en) | 2016-08-24 | 2019-02-05 | Intel Corporation | Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network |
US10133667B2 (en) * | 2016-09-06 | 2018-11-20 | Orcle International Corporation | Efficient data storage and retrieval using a heterogeneous main memory |
CN107797642B (zh) * | 2016-09-07 | 2019-12-06 | 华为技术有限公司 | 一种备电方法及装置 |
US10176116B2 (en) | 2016-09-28 | 2019-01-08 | Intel Corporation | Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources |
US10262751B2 (en) | 2016-09-29 | 2019-04-16 | Intel Corporation | Multi-dimensional optimization of electrical parameters for memory training |
CN107885671B (zh) * | 2016-09-30 | 2021-09-14 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
US20180095699A1 (en) * | 2016-10-01 | 2018-04-05 | National Tsing Hua University | Memory system, memory device thereof, and method for writing to and reading from memory device thereof |
US10698817B2 (en) * | 2017-06-12 | 2020-06-30 | Dell Products, L.P. | Method for determining available stored energy capacity at a power supply and system therefor |
US10719446B2 (en) | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US10732836B2 (en) | 2017-09-29 | 2020-08-04 | Oracle International Corporation | Remote one-sided persistent writes |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US10956335B2 (en) | 2017-09-29 | 2021-03-23 | Oracle International Corporation | Non-volatile cache access using RDMA |
KR102427323B1 (ko) * | 2017-11-08 | 2022-08-01 | 삼성전자주식회사 | 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법 |
US11016890B2 (en) * | 2018-02-05 | 2021-05-25 | Micron Technology, Inc. | CPU cache flushing to persistent memory |
US10642695B2 (en) * | 2018-02-08 | 2020-05-05 | Micron Technology, Inc. | Storage backed memory package save trigger |
US10831393B2 (en) * | 2018-02-08 | 2020-11-10 | Micron Technology, Inc. | Partial save of memory |
KR102538679B1 (ko) * | 2018-04-06 | 2023-06-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
TWI678622B (zh) * | 2018-06-15 | 2019-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置的開發系統以及產品化方法 |
CN109144778A (zh) * | 2018-07-27 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种存储服务器系统及其备份方法、系统及可读存储介质 |
KR20200044312A (ko) * | 2018-10-19 | 2020-04-29 | 삼성전자주식회사 | 반도체 장치 |
US11287986B2 (en) | 2018-12-31 | 2022-03-29 | Micron Technology, Inc. | Reset interception to avoid data loss in storage device resets |
US11004476B2 (en) * | 2019-04-30 | 2021-05-11 | Cisco Technology, Inc. | Multi-column interleaved DIMM placement and routing topology |
US11176042B2 (en) | 2019-05-21 | 2021-11-16 | Arm Limited | Method and apparatus for architectural cache transaction logging |
US11237960B2 (en) * | 2019-05-21 | 2022-02-01 | Arm Limited | Method and apparatus for asynchronous memory write-back in a data processing system |
CN110750466A (zh) * | 2019-10-18 | 2020-02-04 | 深圳豪杰创新电子有限公司 | 提高闪存擦写寿命的方法和装置 |
CN110955569B (zh) * | 2019-11-26 | 2021-10-01 | 英业达科技有限公司 | 双列直插式存储器模块的测试方法、系统、介质及装置 |
WO2022139637A1 (en) * | 2020-12-22 | 2022-06-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Snapshotting pending memory writes using non-volatile memory |
CN113282523B (zh) * | 2021-05-08 | 2022-09-30 | 重庆大学 | 一种缓存分片的动态调整方法、装置以及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6172902B1 (en) * | 1998-08-12 | 2001-01-09 | Ecole Polytechnique Federale De Lausanne (Epfl) | Non-volatile magnetic random access memory |
US20050055587A1 (en) * | 2003-09-08 | 2005-03-10 | Inventec Corporation | Method of managing power of control box |
US20060015683A1 (en) * | 2004-06-21 | 2006-01-19 | Dot Hill Systems Corporation | Raid controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage |
US20060080515A1 (en) * | 2004-10-12 | 2006-04-13 | Lefthand Networks, Inc. | Non-Volatile Memory Backup for Network Storage System |
US20060274566A1 (en) * | 2005-06-02 | 2006-12-07 | Daisaburo Takashima | Memory system combining flash EEPROM and FeRAM |
US20100011155A1 (en) * | 2008-07-11 | 2010-01-14 | Nec Electronics Corporation | Data processor with flash memory, and method for accessing flash memory |
US20100202240A1 (en) * | 2009-02-11 | 2010-08-12 | Stec, Inc. | State of health monitored flash backed dram module |
US20130205065A1 (en) * | 2012-02-02 | 2013-08-08 | Lsi Corporation | Methods and structure for an improved solid-state drive for use in caching applications |
US20140181367A1 (en) * | 2012-12-24 | 2014-06-26 | Matthias Gries | In-place change between transient and persistent state for data structures on non-volatile memory |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3292864B2 (ja) * | 1995-02-07 | 2002-06-17 | 株式会社日立製作所 | データ処理装置 |
US6990603B2 (en) * | 2002-01-02 | 2006-01-24 | Exanet Inc. | Method and apparatus for securing volatile data in power failure in systems having redundancy |
US6822903B2 (en) * | 2003-03-31 | 2004-11-23 | Matrix Semiconductor, Inc. | Apparatus and method for disturb-free programming of passive element memory cells |
US6989327B2 (en) * | 2004-01-31 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Forming a contact in a thin-film device |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
EP1643506B1 (en) * | 2004-10-04 | 2006-12-06 | Research In Motion Limited | System and method for automatically saving memory contents of a data processing device on power failure |
US7613915B2 (en) * | 2006-11-09 | 2009-11-03 | BroadOn Communications Corp | Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed |
US7904647B2 (en) * | 2006-11-27 | 2011-03-08 | Lsi Corporation | System for optimizing the performance and reliability of a storage controller cache offload circuit |
US7554855B2 (en) * | 2006-12-20 | 2009-06-30 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
CN101135984B (zh) * | 2007-01-08 | 2010-12-01 | 中兴通讯股份有限公司 | 硬件信息备份装置、运行信息备份及检测信息保存方法 |
US8904098B2 (en) * | 2007-06-01 | 2014-12-02 | Netlist, Inc. | Redundant backup using non-volatile memory |
US7802129B2 (en) * | 2007-10-17 | 2010-09-21 | Hewlett-Packard Development Company, L.P. | Mobile handset employing efficient backup and recovery of blocks during update |
US8009499B2 (en) * | 2008-06-16 | 2011-08-30 | Hewlett-Packard Development Company, L.P. | Providing a capacitor-based power supply to enable backup copying of data from volatile storage to persistent storage |
US7954006B1 (en) * | 2008-12-02 | 2011-05-31 | Pmc-Sierra, Inc. | Method and apparatus for archiving data during unexpected power loss |
US8195901B2 (en) * | 2009-02-05 | 2012-06-05 | International Business Machines Corporation | Firehose dump of SRAM write cache data to non-volatile memory using a supercap |
CN104025066B (zh) * | 2011-12-29 | 2018-07-24 | 英特尔公司 | 用于能量高效计算的异构存储器晶片堆叠 |
US9672112B2 (en) * | 2012-01-03 | 2017-06-06 | Hewlett-Packard Development Company, L.P. | Backing up firmware during initialization of device |
US20140101370A1 (en) * | 2012-10-08 | 2014-04-10 | HGST Netherlands B.V. | Apparatus and method for low power low latency high capacity storage class memory |
US9471516B2 (en) * | 2013-08-14 | 2016-10-18 | Facebook, Inc. | Techniques for transmitting a command to control a peripheral device through an audio port |
CN104077246A (zh) * | 2014-07-02 | 2014-10-01 | 浪潮(北京)电子信息产业有限公司 | 一种实现易失性存储器备份的装置 |
-
2014
- 2014-12-24 US US14/583,037 patent/US20160188414A1/en not_active Abandoned
-
2015
- 2015-11-23 TW TW104138741A patent/TW201636770A/zh unknown
- 2015-11-24 KR KR1020177014138A patent/KR102451952B1/ko active IP Right Grant
- 2015-11-24 EP EP15874018.3A patent/EP3238077B1/en active Active
- 2015-11-24 WO PCT/US2015/062555 patent/WO2016105814A1/en active Application Filing
- 2015-11-24 CN CN201580064297.0A patent/CN107003919B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6172902B1 (en) * | 1998-08-12 | 2001-01-09 | Ecole Polytechnique Federale De Lausanne (Epfl) | Non-volatile magnetic random access memory |
US20050055587A1 (en) * | 2003-09-08 | 2005-03-10 | Inventec Corporation | Method of managing power of control box |
US20060015683A1 (en) * | 2004-06-21 | 2006-01-19 | Dot Hill Systems Corporation | Raid controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage |
US20060080515A1 (en) * | 2004-10-12 | 2006-04-13 | Lefthand Networks, Inc. | Non-Volatile Memory Backup for Network Storage System |
US20060274566A1 (en) * | 2005-06-02 | 2006-12-07 | Daisaburo Takashima | Memory system combining flash EEPROM and FeRAM |
US20100011155A1 (en) * | 2008-07-11 | 2010-01-14 | Nec Electronics Corporation | Data processor with flash memory, and method for accessing flash memory |
US20100202240A1 (en) * | 2009-02-11 | 2010-08-12 | Stec, Inc. | State of health monitored flash backed dram module |
US20130205065A1 (en) * | 2012-02-02 | 2013-08-08 | Lsi Corporation | Methods and structure for an improved solid-state drive for use in caching applications |
US20140181367A1 (en) * | 2012-12-24 | 2014-06-26 | Matthias Gries | In-place change between transient and persistent state for data structures on non-volatile memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200067292A (ko) * | 2018-12-03 | 2020-06-12 | 삼성전자주식회사 | 휘발성 메모리 장치를 포함하는 메모리 모듈 및 이를 포함하는 메모리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR102451952B1 (ko) | 2022-10-11 |
WO2016105814A1 (en) | 2016-06-30 |
EP3238077B1 (en) | 2022-08-03 |
CN107003919A (zh) | 2017-08-01 |
EP3238077A4 (en) | 2018-11-14 |
CN107003919B (zh) | 2022-06-21 |
EP3238077A1 (en) | 2017-11-01 |
TW201636770A (zh) | 2016-10-16 |
US20160188414A1 (en) | 2016-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102451952B1 (ko) | 장애 허용 자동 듀얼 인라인 메모리 모듈 리프레시 | |
US8990617B2 (en) | Fault-tolerant computer system, fault-tolerant computer system control method and recording medium storing control program for fault-tolerant computer system | |
TWI553650B (zh) | 以記憶體控制器來處理資料錯誤事件之方法、設備及系統 | |
TWI483178B (zh) | 包含記憶體系統控制器之裝置及相關方法 | |
KR101862112B1 (ko) | 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화 | |
US11544093B2 (en) | Virtual machine replication and migration | |
US20150089287A1 (en) | Event-triggered storage of data to non-volatile memory | |
US20130067156A1 (en) | Double data rate controller having shared address and separate data error correction | |
KR102533062B1 (ko) | 비휘발성 메모리에서 결함에 대한 내성을 향상시키기 위한 방법 및 장치 | |
US11481294B2 (en) | Runtime cell row replacement in a memory | |
WO2021259351A1 (zh) | 一种复位系统、数据处理系统以及相关设备 | |
EP3699747A1 (en) | Raid aware drive firmware update | |
TWI510912B (zh) | 多核電路中之容錯 | |
US20190108892A1 (en) | System and Method for Post-Package Repair Across DRAM Banks and Bank Groups | |
CN114625676A (zh) | 用以限制向存储器装置的数据传送时间的回写高速缓存策略 | |
US10168923B2 (en) | Coherency management for volatile and non-volatile memory in a through-silicon via (TSV) module | |
US10725689B2 (en) | Physical memory region backup of a volatile memory to a non-volatile memory | |
US20220350500A1 (en) | Embedded controller and memory to store memory error information | |
US10838818B2 (en) | Memory persistence from a volatile memory to a non-volatile memory | |
US11281277B2 (en) | Power management for partial cache line information storage between memories | |
US11720440B2 (en) | Error containment for enabling local checkpoint and recovery | |
US11966339B1 (en) | Selecting between basic and global persistent flush modes | |
US20240303192A1 (en) | Failure detection of power loss protection using light core dump in data storage device | |
US20220261353A1 (en) | Effective avoidance of line cache misses | |
CN117795466A (zh) | 使用子命令的存取请求管理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |