KR20230127934A - 캐시 일관성 상호 연결 인터페이스를 포함하는 영구 메모리 장치 - Google Patents

캐시 일관성 상호 연결 인터페이스를 포함하는 영구 메모리 장치 Download PDF

Info

Publication number
KR20230127934A
KR20230127934A KR1020230025281A KR20230025281A KR20230127934A KR 20230127934 A KR20230127934 A KR 20230127934A KR 1020230025281 A KR1020230025281 A KR 1020230025281A KR 20230025281 A KR20230025281 A KR 20230025281A KR 20230127934 A KR20230127934 A KR 20230127934A
Authority
KR
South Korea
Prior art keywords
data
volatile storage
memory device
area
address
Prior art date
Application number
KR1020230025281A
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 KR20230127934A publication Critical patent/KR20230127934A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/263Arrangements for using multiple switchable power supplies, e.g. battery and AC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

영구 메모리 장치가 개시된다. 영구 메모리 장치는 캐시 일관성 상호 연결 인터페이스를 포함할 수 있다. 영구 기억 장치는 휘발성 스토리지와 비휘발성 스토리지를 포함할 수 있다. 휘발성 스토리지는 적어도 제1 영역 및 제2 영역을 포함할 수 있다. 백업 전원 소스는 휘발성 스토리지의 제2 영역에 백업 전원을 선택적으로 제공하도록 구성될 수 있다. 컨트롤러는 휘발성 스토리지 및 비휘발성 스토리지를 제어할 수 있다. 영구 메모리 장치는 영구 메모리 장치에 대한 주 전원의 손실에 적어도 부분적으로 기초하여 휘발성 스토리지의 제2 영역에서 비휘발성 스토리지로 데이터를 전송하는 동안 백업 전원 소스를 사용할 수 있다.

Description

캐시 일관성 상호 연결 인터페이스를 포함하는 영구 메모리 장치{PERSISTENT MEMORY DEVICE WITH CACHE COHERENT INTERCONNECT INTERFACE}
본 출원은 2022년 5월 10일에 출원된 미국 가특허출원 일련번호 63/340,437 및 2022년 2월 25일에 출원된 미국 가특허출원 일련번호 63/314,361의 이익을 주장하며, 이들은 모두 본 명세서의 모든 목적을 위해 참조에 의해 통합된다.
본 개시내용은 일반적으로 저장 장치에 관한 것으로, 보다 상세하게는 메모리를 백업하기 위한 영구 저장 장치를 갖는 메모리 저장 장치에 관한 것이다.
메모리는 다른 형태의 스토리지보다 빠를 수 있으므로 스토리지 시스템에서 데이터를 캐시하는 데 메모리를 사용할 수 있다. 그러나 메모리는 또한 휘발성 저장소일 수 있다. 즉, 전원이 중단되면 메모리에 저장된 데이터가 손실될 수 있다. 데이터 손실이 허용되지 않는 시스템에서는 메모리를 캐시로 사용하는 것이 허용되지 않을 수 있다.
다중 레벨 캐시에서 메모리 사용을 개선하는 방법에 대한 필요성이 남아 있다.
본 개시의 기술적 사상은, 메모리를 백업하기 위한 영구 저장 장치를 갖는 메모리 메모리 장치를 제공한다.
일 실시예에 따르면, 영구 메모리 장치는, 캐시 일관성 상호 연결 인터페이스, 적어도 제1 영역 및 제2 영역을 포함하는 휘발성 스토리지, 휘발성 스토리지의 제2 영역에 선택적으로 백업 전원을 제공하도록 구성된 백업 전원 소스, 비휘발성 스토리지 및 휘발성 스토리지와 비휘발성 스토리지를 제어하는 컨트롤러를 포함하고, 영구 메모리 장치는 영구 메모리 장치에 대한 주 전원의 손실에 적어도 부분적으로 기초하여 휘발성 스토리지의 제2 영역으로부터 비휘발성 스토리지로 데이터를 전송하는 동안 백업 전원 소스를 사용하도록 구성된다.
일 실시예에 따르면, 영구 메모리 장치의 동작 방법은, 영구 메모리 장치에서 데이터를 요청하는 로드 요청을 수신하는 단계, 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역 및 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 어드레스에 위치시키는 단계 및 영구 메모리 장치에서 상기 어드레스의 상기 데이터를 반환하는 단계를 포함하고, 영구 메모리 장치는 비휘발성 스토리지를 포함하고, 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제2 영역은 상기 영구 메모리에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역에 선택적으로 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 뒷받침 된다.
일 실시예에 따르면, 영구 메모리 장치의 동작 방법은, 영구 메모리 장치에서 변경 데이터를 포함하는 저장 요청을 수신하는 단계, 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 어드레스에 원본 데이터를 위치시키는 단계, 업데이트된 데이터를 생성하기 위해 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 어드레스에서 원본 데이터를 변경 데이터로 업데이트하는 단계를 포함하고, 영구 메모리 장치는 비휘발성 스토리지를 포함하고, 영구 메모리 장치의 상기 휘발성 스토리지의 제1 영역은 상기 영구 메모리 장치에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 휘발성 스토리지의 제1 영역에 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 뒷받침되고, 영구 메모리 장치의 상기 휘발성 스토리지는 제2 영역을 포함한다.
아래에 설명된 도면은 본 발명의 실시예가 구현될 수 있는 방법의 예이며 본 발명의 실시예를 제한하려는 의도가 아니다. 본 개시내용의 개별 실시예는 특정 도면에 도시되지 않은 요소를 포함할 수 있고 및/또는 특정 도면에 도시된 요소를 생략할 수 있다. 도면은 예시를 제공하기 위한 것이며 축척이 맞지 않을 수 있다.
도 1은 본 발명의 실시예에 따른 영구 메모리 장치를 포함하는 기계를 도시한다.
도 2는 본 발명의 실시예에 따른 도 1의 기계의 세부사항을 도시한다.
도 3은 본 발명의 실시예에 따른 도 1의 영구 메모리 장치의 세부사항을 도시한다.
도 4는 본 발명의 실시예들에 따른 데이터를 로딩하는 도 1의 영구 메모리 장치를 도시한다.
도 5는 본 발명의 실시예들에 따른 데이터를 저장하는 도 1의 영구 메모리 장치를 도시한다.
도 6은 본 발명의 실시예들에 따른 리두 로그를 저장하는 도 1의 영구 메모리 장치를 도시한다.
도 7은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치를 사용하여 로드 요청을 처리하기 위한 예시적인 절차의 흐름도를 도시한다.
도 8은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치에 데이터를 로딩하기 위한 예시적인 절차의 흐름도를 도시한다.
도 9는 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치를 사용하여 저장 요청을 처리하기 위한 예시적인 절차의 흐름도를 도시한다.
도 10a는 본 발명의 실시예들에 따른 도 1의 영구 메모리 디바이스의 제2 영역으로 데이터를 로딩하기 위한 예시적인 절차의 흐름도를 도시한다.
도 10b는 본 발명의 실시예들에 따른 도 1의 영구 메모리 디바이스의 제2 영역으로 데이터를 로딩하기 위한 예시적인 절차의 흐름도를 계속한다.
도 11은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치의 전원 중단의 경우에 데이터를 비휘발성 저장 장치에 저장하기 위한 예시적인 절차의 흐름도를 도시한다.
이제 본 발명의 실시예들을 상세히 참조할 것이며, 그 예는 첨부된 도면에 도시되어 있다. 다음의 상세한 설명에서, 개시내용의 완전한 이해를 가능하게 하기 위해 다수의 특정 세부사항이 제시된다. 그러나, 당업자는 이러한 특정 세부 사항 없이 본 개시 내용을 실시할 수 있음을 이해해야 한다. 다른 경우에, 잘 알려진 방법, 절차, 구성 요소, 회로 및 네트워크는 실시예의 측면을 불필요하게 모호하게 하지 않도록 상세히 설명되지 않았다.
제1, 제2 등의 용어가 본 명세서에서 다양한 요소를 설명하기 위해 사용될 수 있지만, 이들 요소가 이러한 용어에 의해 제한되어서는 안된다는 것이 이해될 것이다. 이 용어는 한 요소를 다른 요소와 구별하는 데에만 사용된다. 예를 들면, 본 발명의 범위를 벗어나지 않으면서 제1 모듈은 제2 모듈로 명명될 수 있고, 유사하게 제2 모듈도 제1 모듈로 명명될 수 있다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 본 발명의 설명 및 첨부된 특허청구범위에서 사용된 바와 같이, 단수형 "a", "an" 및 "the"는 문맥상 명백하게 달리 나타내지 않는 한 복수형도 포함하는 것으로 의도된다. 또한, 본 명세서에서 사용되는 "및/또는"이라는 용어는 관련된 나열된 항목 중 하나 이상의 임의의 및 모든 가능한 조합을 지칭하고 포함하는 것으로 이해될 것이다. "포함하다" 및/또는 "포함하는"이라는 용어는 본 명세서에서 사용될 때 명시된 특징, 정수, 단계, 동작, 요소 및/또는 구성 요소의 존재를 명시하지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성 요소 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는 것으로 이해될 것이다. 도면의 구성요소 및 특징은 반드시 축척에 맞게 그려지지는 않는다.
메모리는 데이터에 대한 다중 수준 캐시의 한 수준으로 사용될 수 있다. 메모리는 다중 레벨 캐시의 다른 계층보다 더 빨리 액세스할 수 있으므로 다중 레벨 캐시의 다른 계층보다 더 빠르게 요청에 대한 응답으로 데이터를 반환할 수 있다. 그러나 메모리는 다른 수준의 다중 수준 캐시에 사용되는 저장소보다 비쌀 수도 있다. 다시 말해, 메모리 저장 단위당 비용은 다른 저장 형태의 저장 단위당 비용보다 높을 수 있다. 메모리만 사용하여 캐시를 구현하면 큰 캐시를 사용할 수 있는 시스템에서 비용이 많이 들 수 있다.
메모리는 휘발성 스토리지를 사용하여 구현될 수도 있다. 휘발성 스토리지는 전원이 중단되면 저장된 데이터를 잃을 수 있다. 데이터가 손실되지 않을 것으로 예상되는 시스템에서 휘발성 저장소를 사용하는 것은 허용할 수 없는 위험으로 간주될 수 있다.
본 발명의 실시예는 메모리를 다수의 상이한 영역으로 분할함으로써 이러한 문제를 해결할 수 있으며, 이들 중 일부는 배터리, 커패시터, 또는 주 전원이 차단된 경우에 동작할 수 있는 다른 이용 가능한 전원에 의한 전력 손실로부터 보호될 수 있다. 배터리 또는 커패시터를 사용하여 메모리에 저장된 데이터에 대한 모든 업데이트를 비휘발성 저장소(예: 플래시 메모리, 플래시 저장소 또는 디스크)로 마이그레이션할 수 있다. 메모리에 저장된 데이터에 대한 모든 업데이트가 비휘발성 스토리지로 마이그레이션되면 배터리 또는 커패시터 사용이 종료될 수 있습니다. 전원 중단으로 인해 손실될 수 있는 데이터는 더 이상 문제가 되지 않는다.
도 1은 본 발명의 실시예들에 따른 영구 메모리 장치를 포함하는 기계를 도시한다. 도 1에 도시된 바와 같이, 호스트 또는 시스템으로 지칭되는 기계(105)는 프로세서(110), 메모리(115) 및 스토리지 장치(120)를 포함할 수 있다. 프로세서(110)는 임의의 다양한 프로세서일 수 있다. (프로세서(110)는 이하에서 논의되는 다른 구성요소와 함께 예시의 편의를 위해 기계 외부에 도시되어 있다: 본 개시의 실시예들은 기계 내에 이러한 구성요소를 포함할 수 있다.) 도 1은 단일 프로세서(110)를 도시하고 있지만, 기계(105)는 임의의 개수의 프로세서를 포함할 수 있으며, 각각은 RISC(Reduced Instruction Set Computer) 아키텍처 또는 CISC(Complex Instruction Set Computer) 아키텍처를 구현할 수 있는 단일 코어 또는 다중 코어 프로세서일 수 있으며(다른 가능성들 중에서도), 원하는 조합으로 혼합될 수 있다.
프로세서(110)는 메모리(115)에 결합될 수 있다. 메모리(115)는 플래시 메모리, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 영구 랜덤 액세스 메모리, FRAM(Ferroelectric Random Access Memory)와 같은 다양한 메모리 또는 MRAM(Magnetoresistive Random Access Memory)등과 같은 NVRAM(Non-Volatile Random Access Memory)일 수 있다. 메모리(115)는 필요에 따라 휘발성 또는 비휘발성 메모리일 수 있다. 메모리(115)는 또한 상이한 메모리 유형의 임의의 원하는 조합일 수 있고, 메모리 컨트롤러(125)에 의해 관리될 수 있다. 메모리(115)는 "short-term"로 지칭될 수 있는 데이터, 즉 장기간 동안 저장될 것으로 예상되지 않는 데이터를 저장하는 데 사용될 수 있다. short-term 데이터의 예들은 임시 파일, 애플리케이션들에 의해 로컬로 사용되는 데이터(다른 스토리지 위치에서 복사되었을 수 있음) 등을 포함할 수 있다.
프로세서(110) 및 메모리(115)는 또한 다양한 애플리케이션들이 실행될 수 있는 운영 체제를 지원할 수 있다. 애플리케이션들은 메모리(115)로부터 데이터를 읽거나 메모리(115)에 데이터를 쓰기 위한 요청(명령이라고도 함)을 발행할 수 있다. 스토리지 장치(120)가 일종의 파일 시스템을 통해 데이터를 읽거나 쓰는 애플리케이션들을 지원하는 데 사용될 때 스토리지 장치(120)는 장치 드라이버(130)를 사용하여 액세스될 수 있다. 도 1은 하나의 스토리지 장치(120)를 도시하지만, 기계(105)에는 임의의 수(하나 이상)의 스토리지 장치가 있을 수 있다. 스토리지 장치(120)는 예를 들면, NVMe(Non-Volatile Memory Express) 프로토콜을 포함하는 임의의 원하는 프로토콜 또는 프로토콜들을 각각 지원할 수 있다. 상이한 스토리지 장치(120)는 상이한 프로토콜들 및/또는 인터페이스들을 지원할 수 있다.
도 1은 일반 용어 "스토리지 장치"를 사용하지만, 본 발명의 실시예는 컴퓨터 스토리지 장치의 사용으로부터 이익을 얻을 수 있는 임의의 스토리지 장치 포맷을 포함할 수 있으며, 그 예는 하드 디스크 드라이브 및 SSD(solid state drive)를 포함할 수 있다. 아래의 "SSD"에 대한 모든 참조는 본 개시 내용의 그러한 다른 실시예들을 포함하는 것으로 이해되어야 한다. 또한, 서로 다른 유형의 스토리지 장치가 혼합될 수 있다. 예를 들어, 하나의 스토리지 장치(120)는 하드 디스크 드라이브일 수 있고, 다른 스토리지 장치(120)는 SSD일 수 있다.
본 발명의 일부 실시예들에서, 기계(105)는 스토리지 서버일 수 있다. 따라서 기계(105)는 데이터베이스 서버(도 1에 미도시)와 같은 다른 서버에 의해 사용될 데이터를 저장할 수 있다. 본 발명의 일부 실시예들에서, 데이터는 다른 서버로 전송되기 위해 기계(105)로부터 판독되거나, 다른 서버로부터 기계(105)에 기록될 수 있다.
예를 들어, 기계(105)가 데이터베이스를 저장하는 본 발명의 일부 실시예들에서, 기계(105)는 대량의 데이터를 포함하는 로드 및 저장 요청을 처리할 수 있다. 기계(105)가 다른 기계로부터 오는 요청을 처리하는 데 가능한 한 많은 시간을 할애할 수 있고 따라서 작업을 지원하기 위해 내부적으로 수행되는 작업량을 최소화하는 것이 바람직할 수 있다.
캐시는 기계(105)의 성능을 개선하기 위해 사용될 수 있다. 예를 들어 일반적으로 프로세서 캐시 및/또는 RAM(Random Access Memory)과 같은 가장 빠른 형태의 스토리지는 SSD 및 하드디스크 드라이브와 같은 느린 형태의 스토리지보다 제조 및 구매 비용이 더 비싸고 용량이 더 작은 경향이 있다. 그러나 더 작은 형태의 스토리지에 저장되는 데이터를 적절하게 관리하면 요청을 더 빠르게 처리할 수 있다. 예를 들어, RAM에 저장된 데이터를 반환하는 것이 SSD에서 데이터를 반환하는 것보다 빠를 수 있으며, RAM에 데이터를 쓰는 것이 SSD에 데이터를 쓰는 것보다 빠를 수 있다.
그러나 다양한 형태의 스토리지를 캐시의 계층으로 사용하는 경우, 특히 영구적이지 않은 스토리지 형태를 사용하는 경우 잠재적인 단점이 있을 수 있다. 예를 들어 저장 요청으로 인해 데이터가 RAM에 저장되는 상황을 생각해 볼 수 있다. 만약 전원이 차단되면, RAM(휘발성 스토리지)에 저장된 데이터가 손실될 수 있다. 따라서 데이터가 영구적이어야 하는 경우 데이터가 초기에 휘발성 스토리지에 저장되더라도 전원이 중단될 경우 데이터가 손실되지 않도록 데이터를 비휘발성 스토리지로 복사해야 할 수 있다.
영구 메모리 장치(135)는 성능 면에서 메모리(115)와 거의 동등한(그리고 가능하게는 스토리지 장치(120)보다 더 빠른: 즉, 더 낮은 지연을 갖는) 더 빠른 스토리지 계층으로서 작용할 수 있다. 또한, 영구 메모리 장치(135)는 전원 중단 시 데이터 손실을 방지하는 메커니즘을 포함할 수 있다.
도 2는 본 발명의 실시예에 따른 도 1의 기계의 세부사항을 도시한다. 도 2에 도시된 바와 같이, 일반적으로 기계(105)는 하나 이상의 프로세서(110)를 포함하며, 이는 기계 구성 요소의 동작을 조정하는 데 사용될 수 있는 메모리 컨트롤러(125) 및 클록(205)을 포함할 수 있다. 프로세서(110)는 또한 예로서 RAM(random access memory), ROM(read-only memory) 또는 다른 상태 보존 매체를 포함할 수 있는 메모리(115)에 결합될 수 있다. 프로세서(110)는 또한 스토리지 장치(120) 및 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(210)에 결합될 수 있다. 프로세서(110)는 또한 버스(215)에 연결될 수 있으며, 버스(215)에는 사용자 인터페이스(220) 및 다른 구성요소 중에서 I/O 엔진(225)을 사용하여 관리될 수 있는 입력/출력(I/O) 인터페이스 포트가 부착될 수 있다.
도 3은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치(135)의 세부사항을 도시한다. 도 3에 도시된 바와 같이, 영구 메모리 장치(135)는 다수의 영역으로 분할되는 휘발성 스토리지를 포함할 수 있다. 도 3에서, 휘발성 메모리는 3개의 영역(305-1, 305-2, 305-3)으로 분할되어 도시되며, 이는 집합적으로 영역(305)으로도 지칭될 수 있다. 도 3에서, 영역(305-1)은 VA(휘발성 영역)로 라벨링될 수 있고, 영역(305-2)은 후기입 영역(WBA)으로 라벨링될 수 있으며, 영역(305-3)은 피닝된 캐시 영역(PCA)으로 라벨링될 수 있다. 영역(305-1)은 고정되지 않은 휘발성 스토리지일 수 있고, 영역(305-2)은 전원 중단의 경우에 백업 전원 소스에 의해 뒷받침되고(따라서 적어도 부분적으로는 영구적인 스토리지) 고정되지 않은 휘발성 스토리지일 수 있으며, 영역(305-3)은 백업 전원 소스에 의해 지원되고 고정되는 휘발성 스토리지일 수 있다(즉, 영역 305-3의 데이터는 영역 305-3에서 축출되지 않을 수 있다).
휘발성 스토리지는 기본 비휘발성 스토리지에 의해 전체적으로 또는 부분적으로 뒷받침될 수 있다. 기본 비휘발성 스토리지는 예를 들어 하나 이상의 SSD를 포함할 수 있다. 영구 메모리 공간(310 및 315)은 기본 비휘발성 스토리지에서 노출된 사용 가능한 스토리지를 나타낼 수 있으며, 공간(320)은 내구성을 위해 사용될 수 있는 추가 사용 가능한 공간으로 작용할 수 있다(예를 들어 마모가 더 많은 스토리지 공간에 걸쳐 분산될 수 있도록 추가 스토리지로서 비휘발성 스토리지를 조기에 교체할 필요가 없을 수 있다.). 따라서, 영구 메모리 공간(310 및 315)의 용량은 기본 비휘발성 스토리지의 총 사용 가능한 스토리지보다 작을 수 있다. 영구 메모리 공간(310 및 315)이 별도의 것으로 도시되어 있지만, 개시 내용의 일부 실시예들에서 영구 메모리 공간(310 및 315)은 휘발성 스토리지의 상이한 영역(305)에서 데이터의 영구 스토리지를 지원하는 상이한 부분으로 분할되기보다는 하나의 큰 영구 메모리 공간으로 간주될 수 있음에 유의한다.
게다가, 도 3은 단일 비휘발성 스토리지가 데이터의 영구 스토리지 장치를 제공하는 데 사용되는 것을 제안하지만, 본 개시 내용의 실시예들은 캐시 계층 구조에서와 같이 둘 이상의 비휘발성 스토리지 레벨을 포함할 수 있다. 예를 들어, 하나는 하드 디스크 드라이브(지연이 긴 대용량)를 사용할 수 있고 다른 레벨은 플래시 메모리(중간 지연이 있는 중간 용량)를 사용할 수 있다. DRAM(지연 시간이 짧은 더 작은 용량)이 휘발성 스토리지 역할을 할 수 있다. 플래시 메모리는 휘발성 스토리지의 데이터에 대한 기본 비휘발성 스토리지 역할을 할 수 있으며 하드 디스크 드라이브는 보조 비휘발성 스토리지 역할을 할 수 있다.
영역(305-1)은 클린 데이터(clean data)를 저장하는 데 사용될 수 있다. 즉, 영역(305-1)의 데이터는 기본 비휘발성 스토리지에서 읽을 수 있다. 영역(305-1)의 데이터는 기본 비휘발성 스토리지의 데이터에서 변경되지 않을 수 있으므로 영역(305-1)의 데이터에 대한 전원 중단으로 인한 데이터 손실에 대한 우려가 없을 수 있다. 전원이 중단되면 영역(305-1)의 데이터가 휘발성 스토리지에서 손실될 수 있지만 기본 비휘발성 스토리지에서 데이터를 계속 사용할 수 있다. 따라서 전원이 복원된 후 데이터가 필요한 경우 기본 비휘발성 스토리지에서 데이터를 읽을 수 있으며 데이터가 손실되지 않을 수 있다.
영역(305-1)은 필요에 따라 영역(305-1)에 데이터가 로드되는 캐시로 기능할 수 있다. 영역(305-1)이 가득 찬 경우(즉, 영역(305-1)에 데이터가 로드될 수 있는 여유 캐시 라인이 없는 경우) 새로운 데이터를 위한 공간을 확보하기 위해 영역(305-1)의 기존 캐시 라인이 축출될 수 있다(선택된 캐시 라인의 데이터는 삭제될 수 있다). 축출될 캐시 라인을 선택하기 위해 임의의 정책이 사용될 수 있다: 예를 들어, 축출을 위해 가장 최근에 사용되지 않은 캐시 라인이 선택될 수 있거나, 축출을 위해 가장 적게 사용된 캐시 라인이 선택될 수 있다.
영역(305-2)은 더티 데이터(dirty data)를 저장하는 데 사용될 수 있다. 즉, 영역(305-2)의 데이터는 비휘발성 스토리지에 저장된 데이터와 비교하여 변경되었을 수 있다. 예를 들어, 도 1의 기계(105)로부터 데이터를 요청한 데이터베이스 서버는 데이터를 변경하거나 업데이트할 수 있고, 이후 업데이트된 데이터를 다시 기록될 수 있다. 데이터가 비휘발성 스토리지에 다시 기록될 때까지 데이터는 영역(305-2)에 저장될 수 있다.
영역(305-2)의 데이터는 비휘발성 스토리지에 저장된 데이터와 비교하여 업데이트될 수 있으므로 전원이 중단되거나 손실되면 영역(305-2)에 저장된 데이터도 손실될 수 있다. 이러한 데이터(변경되었지만 아직 비휘발성 스토리지에 기록되지 않은 데이터)를 더티 데이터(dirty data)라고 지칭할 수 있다. 이러한 가능성으로부터 보호하기 위해, 영구 메모리 장치(135)는 백업 전원 소스(325)를 포함할 수 있다. 도 3은 커패시터로서 백업 전원 소스(325)를 도시하지만, 백업 전원 소스(325)는 임의의 원하는 형태, 예를 들어 배터리 형태일 수 있다. 백업 전원 소스(325)는 전력 손실 또는 전력 중단의 경우에 영역(305-2)에 저장된 데이터가 비휘발성 스토리지에 기록될 때까지 유지될 수 있도록 충분한 전력을 제공할 수 있다. 일단 더티 데이터(dirty data)가 비휘발성 스토리지에 기록되면, 전력 중단으로 인한 데이터 손실에 대한 우려가 없고, 영구 메모리 장치(135)는 전력이 중단될 때 정상적으로 작동할 수 있다.
영역(305-2)이 더티 데이터(dirty data)를 저장할 수 있기 때문에, 영구 메모리 장치(135)는 결국 더티 데이터(dirty data)를 비휘발성 스토리지로 전송할 수 있다. 그러나 동시에, 영구 메모리 장치(135)는 비휘발성 스토리지의 성능을 방해하지 않기를 원할 수 있다. 즉, 다른 서버에서 요청한 다른 작업은 가능한 효율적으로 수행되어야 한다. 이들 문제의 균형을 맞추기 위해, 영구 메모리 장치(135)는 임의의 원하는 접근법을 사용하여 영역(305-2)으로부터 비휘발성 스토리지로 데이터를 전송할 수 있다. 예를 들면, 영구 메모리 장치(135)는 영역(305-2)에 얼마나 많은 더티 데이터(dirty data) 블록이 있는지 모니터링할 수 있다. 수가 너무 커지면 일부(또는 모든) 더티 메모리 블록이 영역(305-2)에서 비휘발성 스토리지로 플러시되도록 체크포인트가 트리거될 수 있다. 또는 영구 메모리 장치(135)는 전체 사용, 특히 비휘발성 스토리지의 사용을 추적할 수 있다. 비휘발성 스토리지의 활용도가 떨어지면 영역(305-2)의 더티 데이터(dirty data)를 비휘발성 스토리지에 기록할 기회가 발생할 수 있으므로 영구 메모리 장치(135)가 더 활동적으로 작동할 때 이러한 기록을 수행할 필요가 없을 수 있다. 이러한 접근 방식은 기회주의적 쓰기 저장이라고 할 수 있다.
전원 중단 시 백업 전원 소스(325)를 사용하여 영역(305-2)에서 비휘발성 스토리지로 데이터를 전송할 수 있다. 영역(305-2)의 데이터는 데이터베이스 서버에 의해 기록되었지만 아직 비휘발성 스토리지에 커밋되지 않은 데이터일 수 있으므로, 전원 중단 시 영역(305-2)의 데이터는 비휘발성 스토리지의 대상 주소에 기록되어 데이터베이스 서버에 의해 발행된 쓰기 요청을 완료할 수 있다. 즉, 영역(305-2)의 데이터는 전원 공급 중단으로 인한 데이터 손실을 방지하기 위해 비휘발성 스토리지에 커밋될 수 있으므로, 데이터는 결국 정상적인 이벤트 과정에서 기록될 때(예를 들어, 체크포인트 또는 비휘발성 스토리지 사용률의 컨비니언트 드랍(convenient drop)으로 인해) 데이터가 저장되었을 위치에 커밋될 수 있다.
영구 메모리 장치(135)는 영역(305-1 및 305-2) 모두에 걸쳐 있을 수 있는 버퍼 캐시(330)를 포함할 수 있다. 영역(305-1)은 클린 데이터(clean data)를 위한 버퍼 캐시로 생각할 수 있고, 영역(305-2)은 더티 데이터(dirty data)를 위한 버퍼 캐시로 생각할 수 있다. 그러나 본 발명의 일부 실시예들은 다른 방식으로 버퍼 캐시(330)를 사용할 수 있다. 예를 들면, 영역(305-1)이 꽉 찼지만 영역(305-2)에 여유 캐시 라인이 있는 경우, 새로운 데이터가 로드될 공간을 만들기 위해 영역(305-1)에서 캐시 라인을 제거하는 대신 영역(305-2)에 있는 여유 캐시 라인은 대신 선택되고, 데이터는 영역(305-2)로 로드될 수 있다. 따라서, 영역(305-2)이 더티 데이터(dirty data)를 위한 것으로 생각될 수 있지만, 영역(305-2)은 클린 데이터(clean data)를 로드하는 데에도 사용될 수 있다. (한편, 영역(305-1)은 백업 전원 소스(325)에 의해 뒷받침되지 않을 수 있으므로 영역(305-1)을 사용하여 더티 데이터를 저장하는 것은 데이터 손실이 발생할 수 있어 피해야 한다.)
마지막으로 영역(305-3)은 리두 로그 데이터(redo log data)를 저장하는 데 사용될 수 있다. 즉, 데이터베이스 서버와 같은 서버가 도 1의 기계(105)에 저장된 데이터를 변경할 때,특정 변경 자체(변경된 데이터와 비교하여)는 리두 로그(redo log)로서 영구 메모리 장치(135)에 저장될 수 있다. 그런 다음 데이터베이스 서버가 변경된 데이터를 비휘발성 스토리지에 다시 쓰라는 요청을 보낼 수 없는 경우, 리두 로그(redo log)를 사용하여 변경 사항을 다시 생성할 수 있다. "리두 로그(redo log)"라는 용어는 데이터베이스 서버에 의해 변경된 사항을 설명하는 데 사용되지만, 본 발명의 실시예는 영역(305-3)에 개별 데이터 변경의 기록을 포함하여 임의의 형태의 데이터를 저장할 수 있다. 아래 논의에서 "리두 로그(redo log)"라는 용어는 적용 가능성의 손실 없이 일시적인 더티 데이터(dirtu data)와 같은 다른 용어로 대체될 수 있다.
리두 로그(redo log)는 실제 변경된 데이터 자체가 기록될 만큼만 저장될 수 있기 때문에 리두 로그(redo log)는 임시 파일로 간주될 수 있다. 변경 사항이 실제로 도 1의 기계(105)에 기록되면 리두 로그(redo log)는 삭제될 수 있다. 즉, 리두 로그(redo log)는 데이터가 실제로 데이터베이스 서버에 의해 도 1의 기계(105)에 다시 기록될 때까지만 지속될 수 있다. 일단 데이터가 도 1의 기계(105)에 기록되면 리두 로그(redo log)는 삭제될 수 있다. 따라서 리두 로그(redo log)는 일시적인 것으로 생각될 수 있다. 리두 로그(redo log)는 실제 데이터가 어떤 이유로 성공적으로 기록되지 않을 가능성에 대비하여 저장될 수 있으며 데이터가 도 1의 기계(105)에 성공적으로 기록되면 삭제될 수 있다. 따라서 비휘발성 스토리지에 리두 로그를 저장하면 데이터가 기록된 후 곧 삭제되는 비휘발성 스토리지가 많이 사용될 수 있다. 비휘발성 스토리지에서 처리되는 이러한 빈번한 명령들은 효율적으로 처리되는 다른 명령들(예를 들면, 비휘발성 스토리지에서 데이터를 읽는 명령들)에 영향을 미칠 수 있다. 이러한 상황을 피하기 위해, 영역(305-3)은 위에서 언급한 바와 같이 고정된 영역이 될 수 있으며, 데이터가 삭제될 때까지 영역(305-3)에 데이터를 보관하고, 이때 데이터는 비휘발성 스토리지에서 삭제할 필요 없이 영역(305-3)에서 삭제할 수 있다.
발생할 수 있는 한 가지 문제는 영역(305-3)이 가득 차 있지만(여유 캐시 라인이 없음) 데이터베이스 서버가 영역 (305-3)에 새 리두 로그를 쓰려고 시도하는 경우 어떻게 해야 하는지 일 수 있다. 영역(305-3)으로부터 리두 로그를 축출(및 이를 비휘발성 스토리지에 기록)하는 대신, 영구 메모리 장치(135)는 데이터를 영역(305-3)에 기록하라는 요청을 거부할 수 있다. 그 시점에서, 데이터베이스 서버는 실제 저장된 데이터를 업데이트하기 위해 데이터를 영역(305-2)에 기록할 수 있고, 저장 요청이 완료되면 영역(305-3)의 대응하는 리두 로그가 삭제되어 새로운 리두 로그를 위한 하나 이상의 캐시 라인을 확보할 수 있다.
영역(305-3)의 리두 로그가 중요하기 때문에(리두 로그는 아직 비휘발성 스토리지에 기록되지 않은 변경 사항을 재구성하기 위한 기초를 제공함) 영역(305-3)은 백업 전원 소스(325)에 의해 뒷받침 될 수 있다. 그 다음, 영구 메모리 장치(135)가 전력 손실 또는 전력 중단을 겪는다면, 영역(305-3)에 저장된 데이터는 비휘발성 스토리지에 기록될 수 있다. 이러한 방식으로, 영역(305-3)의 데이터는 정전 시 복구될 수 있고, 데이터에 대한 변경을 재구성하는 능력이 보존될 수 있다.
영역(305-3)에 관한 위의 논의는 리두 로그에 초점을 맞추지만 다른 데이터도 영역(305-3)에 저장될 수 있다. 예를 들어, 데이터베이스 서버가 영구 메모리 장치(135)에 저장되어야 하는 일부 임시 파일을 가지고 있다면, 그러한 임시 파일은 영역(305-3)에 저장될 수 있다.
위의 논의에서 "캐시 라인"이라는 용어가 사용되었다. "캐시 라인"이라는 용어는 크기가 알려진 영역(305)의 휘발성 스토리지의 일부를 지칭하는 것으로 이해될 수 있다. 전형적으로, 캐시 라인의 크기는 미리 알려져 있고, 그 크기는 영역(305) 및 다른 영역 모두에서 데이터가 로드되고 저장되는 방법을 참조하여 활용될 수 있다. "주소" 또는 "블록"과 같은 다른 용어는 의미 손실 없이 "캐시 라인"을 대신하여 사용될 수 있다. 휘발성 스토리지가 취하는 형태에 따라 한 용어 또는 다른 용어가 일반적인 용어로 간주될 수 있다. 그러나 이 설명의 목적을 위해 휘발성 스토리지 내에서 이러한 다양한 용어는 모두 상호 교환 가능한 것으로 간주되며 휘발성 스토리지의 일부 이해된 부분을 나타낸다.
위의 논의에서 배터리 백업이 없는 고정되지 않은 캐시(영역(305-1)), 배터리 백업이 있는 고정되지 않은 캐시(영역 (305-2)) 및 배터리 백업이 있는 고정된 캐시(영역(305-3))의 세 가지 유형의 휘발성 스토리지 영역이 설명되었다. 본 발명의 실시예는 이러한 영역의 일부 또는 전부를 포함할 수 있다. 예를 들어, 리두 로그는 영역(305-2)에 기록될 수 있고 영역(305-3)은 생략될 수 있다(그러나 비휘발성 스토리지 효율성에 영향을 미치기 때문에 잠재적으로 더 많은 데이터가 비휘발성 스토리지에 기록되고 비휘발성 스토리지에서 삭제되는 비용이 발생한다). 또는 영구 메모리 장치(135)는 백업 전원 소스(325)에 의해 지원되지 않는 고정된 데이터를 저장하는 데 사용될 수 있는 제4 영역을 포함할 수 있다. 이러한 영역은 예를 들어 영역(305-1)의 데이터에 대한 메타데이터를 저장하는 데 사용될 수 있다. 이러한 메타데이터(예를 들어, 데이터베이스 서버로부터 올 수 있음)는 영구 메모리 장치(135)가 이러한 데이터를 휘발성 스토리지에 유지하기를 원할 정도로 충분히 중요할 수 있다. 그러나 데이터가 (예를 들어, 데이터베이스 서버에) 이미 지속적으로 저장되어 있기 때문에(전원이 중단된 경우 데이터가 손실되지 않기 때문에) 영구 메모리 장치(135)는 백업 전원 소스(325)에 의해 뒷받침되는 영역에 메타데이터를 유지할 필요가 없을 수 있다.
전술한 바와 같이, 백업 전원 소스(325)는 영역(305-2 및 305-3)에 저장된 데이터에 대한 백업 전원을 위한 전력을 제공할 수 있지만, 영역(305-1)에 저장된 데이터에 대해서는 그렇지 않다. 백업 전원 소스(325)가 영역(305)의 전부는 아니지만 일부에 대해 전력을 제공하는 것은 영역(305)에 선택적으로 전력을 제공하는 백업 전원 소스(325)로 해석될 수 있다. 즉, 일부 영역(305)은 백업 전력을 위해 선택될 수 있고, 다른 영역(305)은 백업 전력을 위해 선택되지 않을 수 있다.
전술한 바와 같이, 전원 중단 시 백업 전원 소스(325)를 사용하여 비휘발성 스토리지에 데이터를 저장할 수 있다. 그러나 전원이 복구되면(즉, 시스템이 다시 시작되거나 재부팅되면) 전술한 바와 같이, 영역(305-1)의 데이터는 이미 비휘발성 스토리지에 저장되어 있을 수 있다. 전력 중단 이전에 영역(305-1)에 있었던 데이터가 영역 (305-1)으로 다시 로드될 수 있지만, 본 발명의 실시예는 전력이 복구된 후에 데이터를 영역(305-1)로 복구하지 않는 것을 포함할 수 있다. 영역(305-1)은 캐시 역할을 할 수 있다. 데이터가 요청되면 해당 데이터가 영역(305-1)에 로드될 수 있다.
영역(305-2)의 데이터가 재로딩될 수 있기 때문에, 전술한 바와 같이 영역(305-2)은 비휘발성 스토리지에 기록될 데이터를 저장하는 데 사용될 수 있다. 따라서 전원 중단이 발생하면 데이터가 의도한 위치의 비휘발성 스토리지에 커밋될 수 있습니다. 따라서, 영역(305-1)의 데이터와 같이, 본 발명의 실시예는 전원이 복구된 후 영역(305-2)에 있던 데이터를 복원하지 않는 것을 포함할 수 있다.
한편, 영역(305-3)의 데이터는 데이터에 대한 변경사항에 대한 리두 로그 또는 기타 일시적 정보를 포함할 수 있지만 데이터베이스 서버에 의해 영역(305-2)로 복사되지 않을 수 있다. 영역(305-3)의 이러한 리두 로그가 비휘발성 스토리지에 커밋되지 않고 변경된 데이터가 데이터베이스 서버에 의해 손실된 경우 변경된 데이터를 복구할 방법이 없을 수 있다.
설상가상으로, 도 1의 기계(105) 상의 데이터는 도 1의 기계(105) 상의 다른 데이터에 내포된 오류가 효과적으로 있을 수 있음을 의미하는 불안정한 상태로 남을 수 있다. 예를 들면, 데이터베이스 서버가 데이터베이스 서버에 의하여 적용되는 어떤 형태의 암호화를 사용하여 도 1의 기계(105)에 데이터를 저장하는 상황을 고려할 수 있다. 이 암호화가 서로 다른 두 블록에 저장된 데이터를 포함하는 경우 다른 블록에서도 암호화된 데이터를 읽지 않고는 한 블록의 데이터를 해독하는 것이 불가능할 수 있다. 그러나 전원 중단이 발생하기 전에 영구 메모리 장치(135)가 데이터의 두 블록 중 하나만 수신하는 경우 제2 데이터 블록을 복구하거나 재생성할 수 있는 방법이 없는 한 기계(105)에 성공적으로 데이터가 기록되었음에도 불구하고 제1 데이터 블록은 읽을 수 없다.
따라서, 전력 중단 후, 영구 메모리 장치(135)는 전력이 복원될 때 영역(305-3)에 있었던 데이터를 비휘발성 스토리지로부터 다시 영역(305-3)으로 로드할 수 있다. 영역(305-3)에 데이터를 복원함으로써, 영구 메모리 장치(135)는 어떤 이유로든 전력이 중단되었을 때 비휘발성 스토리지에 기록되지 않은 데이터 블록의 재생성을 가능하게 할 수 있다.
영구 메모리 장치(135)는 구성 가능할 수 있다. 즉, 영역(305)의 크기는 사용자에 의해 설정될 수 있다. 예를 들면, 사용자는 영역(305)의 크기를 설정하기 위해 다양한 명령을 사용할 수 있다. 영역(305)의 크기를 구성하는 명령들은 영구 메모리 장치(135)로 사용될 장치, 구성될 영역(305), 영역(305)의 크기, 영역(305)에 대한 메모리의 오프셋 및/또는 영역(305)에 할당될 영구 메모리(비휘발성 스토리지)의 양을 지정할 수 있다. 본 발명의 일부 실시예에서, 영구 메모리 장치(135)를 구성하는데 사용되는 크기 및 오프셋은 1바이트보다 큰 단위로 측정될 수 있다: 예를 들어, 영역(305)의 크기는 각각 4KB 단위로 구성될 수 있고, 영역(305)에 대한 오프셋은 각각 1MB 단위로 구성될 수 있다.
본 발명의 일부 실시예에서, 영구 메모리 장치(135)는 CXL(Compute Express Link) 프로토콜과 같은 캐시 일관성 상호 연결 프로토콜을 사용할 수 있다. CXL과 같은 캐시 일관성 상호 연결 프로토콜은 영구 메모리 장치(135)에 액세스하기 위해 다양한 유형의 명령을 제공할 수 있다. 예를 들면, CXL은 CXL.IO 및 CXL.MEMORY 프로토콜을 제공하며, 이는 영구 메모리 장치(135)에 액세스하는 다양한 방법을 제공할 수 있다. CXL.IO 프로토콜은 PCIe(Peripheral Component Interconnect Express) 표준(도 1의 스토리지 장치(120)와 같은 스토리지 장치에 액세스하는 데 사용될 수 있음)과 유사하게 기능할 수 있는 반면, CXL.MEMORY 프로토콜은 도 1의 메모리(115)와 같은 스토리지 장치에 액세스하는 데 사용될 수 있다.
얼마나 큰 영역(305)이 구성될 수 있는지에 대한 제한이 있을 수 있다. 예를 들면, 백업 전원 소스(325)는 제한된 시간 동안만 임의 스토리지 장치(영역 305-2 및 305-3과 같은)에 데이터를 유지하기에 충분한 전력을 제공할 수 있다. 영역(305-2 및 305-3)이 함께 전력 백업 전원 소스(325)가 제공할 수 있는 전력의 양에 의존할 수 있는 일부 임계값보다 큰 경우, 모든 데이터를 비휘발성 스토리지에 기록할 수 있을 만큼 충분히 오랫동안 임의 스토리지에 데이터를 보유하는 것이 불가능할 수 있다. 따라서, 영역(305-2 및 305-3)의 크기는 백업 전원 소스(325)의 전력 용량에 따라 달라질 수 있다. 따라서 영역의 최대 크기는 영역 크기의 사용자 구성보다 작을 수 있다.
영구 메모리 장치(135)는 특정 전체 용량을 알릴 수 있다. 영구 메모리 장치(135)가 특정 전체 용량을 알리면, 영역(305)의 용량의 합은 이 전체 용량보다 크지 않은 것으로 이해될 수 있다. 본 발명의 이러한 실시예에서, 영역(305) 중 하나(예를 들어, 영역(305-1))는 구성된 바와 같이 다른 영역(305)에 할당되지 않은 모든 용량을 포함하는 것으로 이해될 수 있다. (이 초과 용량에 대해 영역(305-1)을 사용하는 것은 영역(305-1)이 백업 전원 소스(325)에 의해 지원되지 않으므로 백업 전원 소스(325)의 전원 용량에 대한 고려 없이 원하는 만큼 커질 수 있다는 이점이 있다.) 예를 들어, 영구 메모리 장치가 총 64GB의 스토리지를 알리는 경우 영역(305-2)은 27GB의 용량을 갖도록 구성되고 영역(305-3)은 5GB의 용량을 갖도록 구성되고 영역(305-1)은 기본적으로 32GB의 용량을 가질 수 있다(32GB = 64GB - (32GB + 5GB)).
도 3에 도시된 바와 같이, 영구 메모리 장치(135)는 컨트롤러(335)를 포함할 수 있다. 컨트롤러(335)는 영역(305)에 대한 액세스를 제어하고 해당 영역의 데이터와 관련된 요청을 처리하는 데 사용될 수 있다. 예를 들면, 컨트롤러(335)는 로드 요청을 수신하고 요청된 데이터를 영역(305-1)에 로드한 다음(아직 거기에 데이터가 없는 경우) 영역(305-1)에서 데이터를 읽고 요청된 데이터를 데이터베이스 서버로 반환할 수 있다. 컨트롤러(335)는 또한 영구 메모리 장치(135)에 기록될 데이터에 대한 저장 요청을 수신하고, 데이터를 영역(305-2)에 저장하고, 결과를 데이터베이스 서버에 반환할 수 있다. 그런 다음 컨트롤러(335)는 체크포인트가 트리거될 때 또는 비휘발성 스토리지에 데이터를 기록할 기회가 열릴 때와 같이 적절할 때 비휘발성 스토리지에 대한 데이터의 라이트백을 트리거할 수 있다. (컨트롤러(335)는 유사한 방식으로 삭제 요청을 처리할 수 있지만, 삭제 요청은 영역(305-2)에 데이터를 저장하는 것을 포함하지 않을 수 있다.) 마지막으로, 컨트롤러(335)는 영구 메모리 장치(135)에 기록될 리두 로그에 대한 저장 요청을 수신하고, 리두 로그를 영역(305-3)에 저장하고, 결과를 데이터베이스 서버에 반환할 수 있다. (위에서 논의된 바와 같이, 백업 전원 소스(325)에 의해 지원되는 영역(305-3)의 데이터는 데이터가 곧 삭제될 것으로 예상되기 때문에 일반적으로 비휘발성 스토리지에 기록되지 않는다.)
스토리지(335)는 큐(340-1 내지 340-3)(집합적으로 큐(340)로 지칭될 수 있음)를 포함하는 것으로 도시된다. 다수의 큐(340)를 지원함으로써, 컨트롤러(335)는 다른 요청보다 일부 요청의 우선순위를 정하기 위해 다양한 방식으로 다양한 유형의 요청을 관리할 수 있게 할 수 있다. 다수의 큐(340)는 또한 컨트롤러(335)가 다수의 상이한 요청 소스로부터의 처리 요청을 지원할 수 있게 할 수 있으며, 이는 컨트롤러(335)가 도 1의 기계(105) 상의 데이터를 요청하는 애플리케이션에 서비스 품질(QoS) 보증을 제공할 수 있게 할 수 있다.
영구 메모리 장치(135)는 또한 컴퓨팅 모듈(345)을 포함할 수 있다. 컴퓨팅 모듈(345)은 예를 들면 휘발성 스토리지 및/또는 비휘발성 스토리지의 영역(305)에 있을 수 있는 데이터의 특수 처리를 수행할 수 있는 가속기일 수 있다. 컴퓨팅 모듈(345)은 다른 가능성들 중에서도, 예를 들면, 단일 코어 프로세서 또는 멀티 코어 프로세서, GPU(graphics processing unit), GPGPU(general purpose GPU), SoC(system-on-chip), NPU(neural processing unit), TPU(tensor processing unit), FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)를 포함하여 원하는 임의의 원하는 가속기로 구현될 수 있다.
도 4는 본 발명의 실시예들에 따른 데이터를 로딩하는 도 1의 영구 메모리 장치(135)를 도시한다. 도 4에 도시된 바와 같이, 데이터베이스 서버(405)는 데이터 읽기 요청을 보낼 수 있다. 도 3의 컨트롤러(335)는 데이터 읽기 요청을 수신할 수 있고 데이터가 현재 영역(305-1)에 있는지 결정할 수 있다(도 4에서 데이터(410)로 도시됨). 데이터(410)가 영역(305-1)에 있으면, 도 3의 컨트롤러(335)는 도 4의 데이터(410)를 데이터가 데이터(415)로서 저장되는 데이터베이스 서버(405)에 전송할 수 있다. 본 발명의 일부 실시예에서, 데이터(415)는 데이터 자체가 현재 클린함(즉, 변경되지 않음)을 나타내기 위해 클린 버퍼 영역에 저장될 수 있다.
데이터(410)가 현재 영역(305-1)에 없으면, 데이터(420)는 영구 메모리 공간(310)과 같은 비휘발성 스토리지 로부터 판독될 수 있다. 영역(305-1)의 캐시 라인이 할당될 수 있다. 데이터(420)는 영역(305-1)의 할당된 캐시 라인에 저장될 수 있고, 그 후에 도 3의 컨트롤러(335)는 데이터(410)를 데이터베이스 서버(405)로 보낼 수 있다.
위에서 언급한 바와 같이, 일부 상황에서 영역(305-1)에는 여유 캐시 라인이 없을 수 있다. 이 경우 몇 가지 가능한 접근 방식이 있다. 한 가지 접근 방식은 영역(305-1)에서 주소를 선택하고 그 안에 있는 데이터를 삭제하는 것인데, 이는 데이터(410)를 저장하기 위해 캐시 라인을 해제할 수 있다. 전술한 바와 같이, 영역(305-1)에서 삭제할 캐시 라인(어드레스)을 선택하기 위해 임의의 원하는 접근법이 사용될 수 있다.
또 다른 접근법은 영역(305-2)에서 캐시 라인을 선택하고 그 주소를 사용하여 데이터(데이터(425)로 표시됨)를 저장하거나 영역(305-1)에서 영역(305-2)으로 캐시 라인을 복사하는 것(그리고 나서 영역(305-1)에서 사용 가능한 캐시 라인을 사용하여 새 데이터를 저장할 수 있다.)일 수 있다. 상술한 바와 같이, 영역(305-2)에 저장될 데이터가 클린하더라도 영역(305-2)은 영역(305-1)의 확장으로 사용될 수 있다. 도 3의 컨트롤러(335)는 데이터(425)를 데이터베이스 서버(405)로 보낼 수 있다.
도 5는 본 발명의 실시예들에 따른 데이터를 저장하는 도 1의 영구 메모리 장치(135)를 도시한다. 도 5에 도시된 바와 같이, 데이터베이스 서버(405)는 저장을 위해 데이터(505)를 영구 메모리 장치(135)로 보낼 수 있다. 데이터(505)는 영구 메모리 장치(135)에 의해 현재 저장된 데이터의 수정된 형태인 것으로 생각될 수 있다.
영역(305-2)이 현재 업데이트되고 있는 원본 데이터를 저장하는 경우(예를 들면, 변경 사항이 비휘발성 스토리지에 커밋되었는지 여부에 관계없이 데이터가 이전에 업데이트 된 경우 또는 데이터베이스 서버(405)가 로드 요청을 수행할 때 원본 데이터를 저장하는 데 영역(305-2)이 사용된 경우에 발생할 수 있음.) 도 3의 컨트롤러(335)는 데이터베이스 서버(405)에 의해 전송된 변경 사항을 반영하기 위해 원본 데이터를 업데이트할 수 있다. 따라서, 영역(305-2)의 원본 데이터는 업데이트된 데이터(510)(더티 데이터(510)라고도 함)로 대체될 수 있다. 어떤 시점에서(즉시, 기회적으로 또는 체크포인트가 트리거될 때), 데이터(510)는 전원이 중단되더라도 데이터(510)가 손실되지 않도록 보장하기 위해 비휘발성 스토리지의 데이터(515)로서 영구 메모리 공간(310)에 복사될 수 있다. 선택적으로, 도 3의 컨트롤러(335)는 또한 데이터(520)로 표시된 업데이트된 데이터(일단 비휘발성 스토리지에 기록되면)를 영역(305-1)(데이터가 비휘발성 스토리지에 기록되면 클린한 것으로 간주될 수 있기 때문에)에 복사할 수 있다.
영역(305-2)이 원래 데이터를 현재 저장하지 않으면, 도 3의 컨트롤러(335)는 그것이 저장되어 있는 어딘가로부터 원본 데이터를 검색하고 영역(305-2)에 원본 데이터를 저장할 수 있다. 그러나 먼저, 도 3의 컨트롤러(335)는 원래 데이터가 저장될 수 있는 영역(305-2)에 여유 캐시 라인(주소)이 있는지 확인할 수 있다. 영역(305-2)에 여유 캐시 라인이 없다면, 도 3의 컨트롤러(335)는 영역(305-2)의 캐시 라인을 비울 수 있다. 도 3의 컨트롤러(335)는 영역(305-2)에서 캐시 라인을 선택함으로써(다시, 가장 최근에 사용되지 않았거나 가장 적게 사용된 것과 같은 임의의 원하는 접근법을 사용하여) 영역(305-2)에서 캐시 라인을 비울 수 있다. 해당 데이터(데이터가 더티하다고 가정)는 비휘발성 스토리지에 기록될 수 있다. 선택된 캐시 라인의 데이터가 곧 다시 요청될 수 있다는 것이 예상될 수 있기 때문에, 본 개시의 일부 실시예에서 데이터(비휘발성 스토리지에 기록되었기 때문에 클린함)는 영역(305-1)의 캐시 라인(주소)에 복사될 수 있다. 본 발명으 일부 실시예에서, 데이터(클린한 데이터)는 폐기될 수 있다(그리고 다시 필요한 경우 나중에 검색될 수 있다.).
클린한 데이터를 영역(305-1)로 이동되면, 영역(305-1)의 캐시 라인(주소)은 선택될 수 있다. 이 과정은 도 4를 참조하여 전술한 바와 동일할 수 있다. 도 4와 차이점은 데이터베이스 서버(405)로부터의 로드 요청이 아니라 데이터베이스 서버(405)로부터의 저장 요청이 처리되기 때문에 데이터가 영역(305-1)에 로드된다는 것이다.
일단 도 3의 컨트롤러(335)는 영역(305-2)에 적어도 하나의 자유 캐시 라인이 있다는 것을 알게 되면, 도 3의 컨트롤러(335)는 원본 데이터에 대한 캐시 라인을 할당할 수 있다. 원본 데이터는 영역(305-2)의 캐시 라인으로 복사될 수 있다. 원본 데이터는 비휘발성 스토리지에서 찾을 수 있지만 원본 데이터는 영역(305-1)에서도 찾을 수 있다. 예를 들면, 원본 데이터는 로드 요청으로 데이터베이스 서버(405)에 의해 이전에 요청되었고 원본 데이터는 다른 데이터에 대한 캐시 라인을 비우기 위해 영역(305-1)으로부터 아직 플러시되지 않은 경우. 원본 데이터가 이미 영역(305-1)에 있는 경우 여러 가지 이유로 영역(305-1)에서 영역(305-2)로 데이터를 복사하는 것이 더 효율적일 수 있다. 첫째, 비휘발성 스토리지로부터 영역(305-2)으로 데이터를 로드하는 것보다 영역(305-1 및 305-2) 사이에서 원래 데이터를 복사하는 것이 더 빠를 수 있다. 둘째, 원본 데이터가 저장 요청에 의해 업데이트될 때 영역(305-1)의 원본 데이터가 삭제되어 다른 데이터를 위한 캐시 라인을 비울 수 있다.
이전에 영역(305)의 용량이 구성 가능한 것으로 설명되었음을 상기할 수 있다. 한 가지 가능성은 사용자가 영역(305-2)을 용량이 없도록 구성할 수 있다는 것이다(용량 0바이트). 이 구성은 반드시 효율적인 것으로 간주되지 않을 수 있으며 시스템이 영역(305-2)을 생략하도록 구성되어야 하는 상황이 있을 수 있다. 그 상황에서, 영역(305-2)에서 이용 가능한 캐시 라인이 없고, 영역(305-2)에서 캐시 라인을 비울 가능성이 없을 수 있다. 따라서, 도 3의 컨트롤러(335)는 데이터를 저장할 다른 장소가 없을 수 있으므로 데이터를 비휘발성 스토리지에 직접 다시 쓸 수 있다.
도 4에 도시된 바와 같이, 데이터베이스 서버(405)가 데이터 로딩을 요청할 때, 전체 데이터가 비휘발성 스토리지로부터 휘발성 스토리지의 영역(305-1)으로 로딩된 다음 데이터베이스 서버(405)로 전송될 수 있다는 것이 예상될 수 있다. 그러나 도 5에서, 데이터를 저장할 때 데이터의 일부만 업데이트되는 경우가 있다. 예를 들어, 데이터베이스 서버(405)는 원래 4KB의 데이터가 로드되도록 요청했지만 해당 데이터의 200B만 변경할 수 있다. 데이터베이스 서버(405)는 전체 4KB의 데이터를 영구 메모리 장치(135)로 다시 보낼 수 있다. 그러나 이러한 접근 방식은 비효율적일 수 있다. 200B만 변경된 경우 원래 4KB의 데이터 중 5% 미만이 변경되었거나 다시 전송되는 데이터의 대략 95%가 영구 메모리 장치(135)에 이미 존재한다.
대신에, 데이터베이스 서버(405)는 어떤 데이터가 변경되었는지를 식별하는 정보와 함께 변경된 데이터의 부분만을 되돌려 보낼 수 있다. 예를 들어, 데이터베이스 서버(405)는 200B의 변경된 데이터가 시작되는 위치를 나타내는 원래의 4KB 데이터에 대한 오프셋과 함께 200B의 변경된 데이터를 다시 보낼 수 있다. 그러한 상황에서, 도 3의 컨트롤러(335)는 영역(305-2)에 저장된 것과 같은 업데이트된 데이터를 생성하기 위해 변경된 데이터로 영역(305-2)의 원본 데이터를 업데이트할 수 있다. (이 변경 데이터는 영역(305-3)에 저장될 수 있는 리두 로그 데이터와 관련이 있지만 다를 수 있다.)
데이터를 저장할 때 또 다른 문제는 데이터 변동일 수 있다. 데이터 변동은 영구 메모리 장치(135)가 전원 중단으로 인해 데이터의 일부만 기록할 때 발생할 수 있다. 데이터 변동을 방지하기 위해 데이터를 수신할 때 먼저 임시 스토리지 공간에 데이터를 쓴 다음 비휘발성 스토리지 공간에 복사할 수 있다. 그런 다음 전원이 중단되면 데이터는 이미 영구적인 위치(최종 대상이 아닌 경우)즉, 임시 스토리지 공간에 저장된다. 이 임시 스토리지 공간은 이중 기록 버퍼라고 지칭할 수 있다. 본 발명의 일부 실시예에서, 영역(305-3)은 이중 기록 버퍼로 사용될 수 있다(영역(305-3)에 기록된 데이터는 전원 중단의 경우에만 비휘발성 스토리지에 기록될 임시 데이터로 간주될 수 있기 때문에). 본 발명의 다른 실시예에서, 추가적인 비휘발성 스토리지가 이중 기록 버퍼로서 사용될 수 있다.
도 6은 본 발명의 실시예들에 따른 리두 로그를 저장하는 도 1의 영구 메모리 장치(135)를 도시한다. 도 6에 도시된 바와 같이, 데이터베이스 서버(405)는 리두 로그(605)를 영구 메모리 장치(135)에 보낼 수 있다. 도 3의 컨트롤러(335)는 리두 로그(605)를 리두 로그(610)로서 영역(305-3)에 저장할 수 있다. 전술한 바와 같이, 영역(305-3)은 전력 손실의 경우 도 3의 백업 전원 소스(325)에 의해 백업될 수 있다: 그러한 경우, 도 3의 백업 전원 소스(325)가 영구 메모리 장치(135)의 휘발성 스토리지에서의 데이터 손실을 방지하는 동안 리두 로그(610)는 도 3의 백업 전원 소스(325)를 영구 메모리 공간(315)으로 복사될 수 있다.
도 7은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치(135)를 사용하여 로드 요청을 처리하기 위한 예시적 프로세싱 흐름도를 도시한다. 도 7의 블록(705)에서, 도 1의 영구 메모리 장치(135)는 도 4의 데이터베이스 서버(405)와 같은 호스트로부터 로드 요청을 수신할 수 있다. 블록(710)에서, 도 3의 컨트롤러(335)는 주소를 도 1의 영구 메모리 장치(135)의 휘발성 스토리지에 위치시킬 수 있다. 예를 들면, 호스트는 논리적 식별자에 대해 기록되는 데이터를 이전에 전송했지만 데이터는 도 1의 영구 메모리 장치의 비휘발성 스토리지에 아직 커밋되지 않은 경우, 도 3의 영역(305-2)에 데이터는 저장될 수 있다. 블록(715)에서, 도 1의 영구 메모리 장치(135)는 위치된 주소에서 데이터를 반환할 수 있다.
도 8은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치(135)에 데이터를 로딩하기 위한 예시적 프로세싱 흐름도를 도시한다. 블록(805)에서, 도 3의 컨트롤러(335)는 도 1의 영구 메모리 장치(135)의 휘발성 스토리지에서 도 3의 영역(305-1) 영역의 데이터를 삭제할 수 있다. 도 3의 영역(305-1)은 클린 데이터를 저장할 수 있으므로, 도 3의 영역(305-1)의 주소에 있는 데이터를 삭제하는 것은 어떤 잠재적 데이터 손실의 결과를 발생시키지 않아야 하는것을 상기해야 한다. 캐시 라인이 이미 비어 있는 경우 점선(810)으로 표시된 것처럼 블록(805)을 건너뛸 수 있음을 유의한다. 블록(815)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-1)에서 주소를 선택할 수 있고 요청된 데이터에 대한 스토리지를 할당할 수 있다. 마지막으로, 블록(820)에서, 도 3의 컨트롤러(335)는 비휘발성 스토리지로부터 도 3의 영역(305-1)의 할당된 주소에 데이터를 로드할 수 있다.
대안적으로, 도 3의 영역(305-1)이 빈 공간이 없지만 도 3의 컨트롤러(335)는 도 3의 영역(305-1)에서 어떠한 데이터도 삭제하기를 원하지 않는다면, 그 때 블록(825)에서 도 3의 컨트롤러(335)는 도 3의 영역(305-2)에 주소를 할당할 수 있고, 블록(830)에서 도 3의 컨트롤러(335)는 비휘발성 스토리지로부터 도 3의 영역(305-2)의 할당된 주소에 데이터를 로드할 수 있다. 도 3의 영역(305-2)에 주소가 할당된 경우, 일반적으로 그 주소는 빈 공간일 것으로 예상될 수 있다. 도 3의 영역(305-2)은 더티 데이터를 저장하는데 사용될 수 있으므로, 도 3의 컨트롤러(335)는 먼저 비휘발성 스토리지에 복사되었는지 확인 없이 도 3의 영역(305-2)의 주소로부터 데이터를 삭제해서는 안되며, 그렇지 않으면 데이터가 손실될 수 있다.
도 9는 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치(135)를 사용하여 저장 요청을 처리하기 위한 예시적 프로세싱 흐름도를 도시한다. 도 9의 블록(905)에서, 도 1의 영구 메모리 장치(135)는 도 4의 데이터베이스 서버(405)와 같은 호스트로부터 저장 요청을 수신할 수 있다. 블록(910)에서, 도 3의 컨트롤러(335)는 원본 데이터가 저장된 도 1의 영구 메모리 장치의 휘발성 스토리지의 도 3의 영역(305-2)에서 주소를 위치시킬 수 있다. 블록(915)에서, 도 1의 영구 메모리 장치(135)는 변경 데이터를 사용하여 위치된 주소의 원본 데이터를 업데이트할 수 있다.
도 10a-10b는 본 발명의 실시예들에 따른 데이터를 도 1의 영구 메모리 장치(135)의 도 3의 영역(305-2)에 로딩하기 위한 예시적 프로세싱 흐름도를 도시한다. 도 10a에서, 도 3의 컨트롤러(335)는 원본 데이터가 이미 도 3의 영역(305-2)에 있는지를 먼저 확인할 수 있다. 그렇다면 점선(1005)으로 표시된 것처럼 많은 블록을 건너뛸 수 있다. 그렇지 않으면, 블록(1010)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-2)의 주소를 선택할 수 있다. 블록(1015)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-2)의 선택된 주소에 저장된 데이터를 비휘발성 스토리지에 기록할 수 있다.
도 3의 영역(305-2)의 주소에 현재 저장되어 있는 데이터는 클린한 것으로 간주될 수 있으므로(데이터는 비휘발성 스토리지에 기록된 것 일 수 있으므로), 데이터는 도 3의 영역(305-1)으로 이동되어 도 3의 영역(305-2)의 캐시 라인을 비울 수 있다. 블록(1020)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-1)에서 주소를 선택할 수 있다. 블록(1025)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-1)의 주소에 현재 저장되어 있는 데이터를 삭제할 수 있다. 블록(1030)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-1)에 주소를 할당할 수 있고, 블록(1035)에서 도 3의 컨트롤러(335)는 도 3의 영역(305-2)의 주소로부터 도 3의 영역(305-1)의 주소에 데이터를 복사할 수 있다. 마지막으로, 블록(1040)에서, 도 3의 영역(305-2)의 주소에 저장된 데이터는 삭제될 수 있다.
블록(1025)은 블록(1020)에서 도 3의 영역(305-1)에서 주소가 선택된 주소가 이미 데이터를 저장하고 있는 경우 수행될 동작을 나타낸다. 블록(1020)에서 선택된 도 3의 영역(305-1)의 주소는 현재 데이터를 저장하지 않는다면, 블록(1025)은 점선(1045)으로 도시된 바와 같이 생략될 수 있다. 유사하게, 더티 데이터가 비휘발성 스토리지에 기록된 후,
블록(1020 내지 1035)은 도 3의 영역(305-2)으로부터 도 3의 영역(305-1)에 데이터를 이동시키기 위해 수행될 동작을 나타낸다. 이전 더티 데이터가 도 3의 영역(305-2)에서 도 3의 영역(305-1)에 이동되지 않은 경우, 블록(1020 내지 1035)은 점선(1050)으로 도시된 바와 같이 생략될 수 있다. 유사하게, 블록(1015 내지 1040)은 블록(1010)에서 도 3의 영역(305-2)에 선택된 주소가 이미 데이터를 저장하는 경우 수행될 동작을 나타낸다. 블록(1010)에서 선택된 도 3의 영역(305-2)의 주소는 현재 데이터를 저장하지 않는다면, 블록(1015 내지 1040)은 점선(1055)으로 도시된 바와 같이 생략될 수 있다.
블록 1060(도 10b)에서, 도 3의 컨트롤러(335)는 원본 데이터에 대한 도 3의 영역 305-2에 주소를 할당할 수 있다. 블록(1065)에서, 원본 데이터가 도 1의 영구 메모리 장치(135)의 휘발성 스토리지에 현재 저장되어 있지 않으면. 도 3의 컨트롤러(335)는 도 1의 영구 메모리 장치(135)의 비휘발성 스토리지로부터 도 3의 영역(305-2)의 주소에 데이터를 복사할 수 있다. 또는, 원본 데이터가 현재 도 3의 영역(305-1)의 주소에 저장되어 있는 경우, 블록(1070)에서 도 3의 컨트롤러(335)는 도 3의 영역(305-1)에서 도 3의 영역(305-2)의 주소에 원본 데이터를 복사할 수 있고, 블록(1075)에서 도 3의 컨트롤러(335)는 도 3의 영역(305-1)에서 원본 데이터를 삭제할 수 있다.
전술한 바와 같이, 도 10a의 블록(1010)은 도 10b의 블록 (1065 및 1075)을 통하여, 데이터는 도 3의 영역(305-2)에 없다고 가정한다. 원본 데이터가 이미 도 3의 영역(305-2)에 있는 경우(예를 들면, 데이터가 도 4의 데이터베이스 서버(405)에 의해 이전에 업데이트된 경우, 이러한 업데이트가 도 1의 영구 메모리 장치(135)의 비휘발성 스토리지에 커밋되었는지 여부), 도 10a의 블록(1010)은 도 10b의 블록(1065 및 1075)을 통해 점선(1005)으로 나타낸 바와 같이 생략될 수 있다.
도 9를 참조하여 전술한 바와 같이 블록(915)에서, 도 3의 컨트롤러(335)는 호스트에서 제공하는 변경된 데이터로 원본 데이터를 업데이트할 수 있다. 마지막으로, 블록(1080)에서, 도 3의 컨트롤러(335)는 결국 도 3의 영역(305-2)으로부터 도 1의 영구 메모리 장치(135)의 비휘발성 스토리지에 업데이트된 데이터를 복사할 수 있다(이 시점에서 데이터는 더티한 것보다 클린한 것으로 간주될 수 있음). 본 발명의 실시예들에서, 블록(1080)은 체크포인트가 트리거될 때 즉시 수행되거나 도 1의 영구 메모리 장치(135)의 활용에 기초하여 기회적으로 수행될 수 있다.
도 11은 본 발명의 실시예들에 따른 도 1의 영구 메모리 장치(135)의 전력 중단의 경우 비휘발성 스토리지에 데이터를 저장하기 위한 예시적 프로세싱 흐름도를 도시한다. 도 11의 블록(1105)에서 도 3의 컨트롤러(335)는 도 1의 영구 메모리 장치(135)에 대한 주 전원에 중단이 있었다고 확인할 수 있다. 블록(1110)에서, 도 3의 컨트롤러(335)는 도 3의 영역(305-2 및 305-3)으로부터 도 1의 영구 메모리 장치(135)의 비휘발성 스토리지에 데이터를 복사할 수 있다. 도 1의 영구 메모리 장치(135)는 도 3의 영역(305-2 및 305-3)으로부터 도 1의 영구 메모리 장치(135)의 비휘발성 스토리지에 데이터를 복사하기 위한 도 3의 컨트롤러(335)가 사용할 수 있을 정도로 도 3의 영역(305-2 및 305-3)에 데이터를 유지하기 위해 도 3의 백업 전원 소스(325)로부터의 전력에 의존할 수 있다.
도 7 내지 11을 참조하면, 본 발명의 일부 실시예가 도시되어 있다. 그러나 당업자는 블록의 순서를 변경하거나, 블록을 생략하거나, 도면에 도시되지 않은 링크를 포함함으로써, 본 발명의 다른 실시예가 또한 가능하다는 것을 인식할 것이다. 이러한 순서도의 모든 변형은 명시적으로 기술되었는지 여부에 상관없이 본 발명의 실시예로 간주된다.
본 발명의 실시예는 영구 메모리 장치를 포함한다. 영구 메모리 장치는 서로 다른 속성을 가진 서로 다른 영역으로 구분될 수 있다. 일부 영역은 정전 시 백업 전원으로 백업될 수 있고 다른 영역은 그렇지 않을 수 있다. 일부 영역은 고정될 수 있고 다른 영역은 고정되지 않을 수 있다. 데이터의 종류에 따라 영역에 데이터를 로드/저장할 수 있다. 클린 데이터는 백업 전원이 지원되지 않는 영역에 저장되고, 더티 데이터 및 리두 로그는 백업 전원이 지원되는 영역에 저장될 수 있다. 각 영역의 크기는 구성될 수 있다. 영구 메모리 장치는 대기 시간이 짧은 DRAM과 같은 휘발성 스토리지에서 데이터를 검색할 수 있지만 비휘발성 스토리지를 사용하여 전원 중단으로부터 보호할 수 있다는 기술적 이점을 제공할 수 있다.
본 개시는 일부 실시예에서 로드/저장 인터페이스를 제공할 수 있는 NAND 및 CXL(Compute Express Link) 기술을 기초로하는 도 1의 PMEM(persistent memory)(135)을 소개한다. 일부 실시예에서, NAND 공간의 일부는 영구 메모리 공간으로 사용될 수 있다. 일부 실시예에서, 영구 메모리는 상이한 특성을 갖는 3개의 공간으로 구성될 수 있는 사용자 구성 가능 DRAM 캐시를 가질 수 있다. 일부 실시예에서, 영구 메모리는 장치에 대한 동시 액세스를 지원하기 위해 CPU에서 사용 가능한 하드웨어 스레드의 수보다 큰 다중 대기열을 가질 수 있다. 일부 실시예에서, 영구 메모리는 WBA(write-back area)라고 불리는 DRAM의 포트를 위한 내부/외부 캐패시터 및 정전 시 지속되는 PCA(pinned cache area)를 가질 수 있다.
데이터베이스는 스토리지에 데이터 블록 형태로 저장될 수 있다. 사용자 쿼리를 처리하기 위해, 데이터베이스 서버는 먼저 데이터 블록이 메모리에 저장된 데이터베이스 서버의 로컬 버퍼 캐시에서 정보를 포함하는 데이터 블록을 찾으려고 시도할 수 있다. 데이터 블록이 로컬 버퍼 캐시에 없으면 데이터베이스 서버는 볼륨 및 LBA와 같은 데이터 블록 메타 데이터 정보를 사용하여 스토리지 서버에 데이터 블록을 요청할 수 있다. 이 읽기 작업은 중요한 경로에 있을 수 있으므로 지연은 전체 성능에 중요할 수 있다. 예들은 액세스 대기 시간을 크게 줄일 수 있는 두 개의 ROMA(remote direct memory access)동작들을 사용할 수 있다.
데이터베이스 서버가 스토리지 서버로부터 데이터 블록을 받으면 로컬 버퍼 캐시에 데이터 블록을 저장하고 데이터 블록을 처리할 수 있다. 이 시점에서 데이터 블록에 대한 업데이트가 발생할 수 있으며 데이터 블록이 손상될 수 있다.
데이터 블록이 수정되어 더티한 데이터가 되면, 데이터베이스 서버는 이 트랜잭션에 대한 데이터베이스 서버의 모든 변경 사항을 캡처하고 리두 로그 버퍼에 리두 로그 항목을 생성할 수 있다. 데이터 블록에 대한 변경 사항은 데이터베이스 서버가 리두 로그를 기록할 때 지속될 수 있다. 로그 기록이 중요한 경로에 있을 수 있으므로 지연이 손상되지 않아야 한다.
그러나 수정된 데이터 블록은 체크포인트 작업이 호출될 때까지 트랜잭션이 커밋되는 즉시 스토리지에 기록되지 않을 수 있다. 즉, 더티 데이터 블록은 여전히 데이터베이스 서버에 있다. 그 동안 백그라운드 프로세스는 버퍼 캐시 사용률을 모니터링하고 체크포인트 조건이 충족되면 스토리지 서버에 더티 데이터 블록을 기록할 수 있다. 체크포인트 동작은 모든 더티 데이터 블록을 한 번에 기록하지 않을 수 있다.
스토리지 서버가 더티 데이터 블록을 저장할 때 장애 발생 시 변동 기록을 방지하기 위해 DWB(double wirte buffer)라는 임시 스토리지 공간에 먼저 쓸 수 있다. 즉, 스토리지 서버는 먼저 데이터를 버퍼에 쓴 다음 이중 쓰기 버퍼의 데이터를 원본 데이터 블록에 복사한다.
본 개시의 일부 실시예에서, 도 1의 PMEM(135)은 세 가지 사용 케이스를 제공할 수 있다. 첫째, PMEM은 스토리지 서버에서 데이터 블록에 액세스할 때 지연을 줄일 수 있다. 둘째, PMEM은 작은 데이터로 리두 로그 기록의 대기 시간을 줄일 수 있다. 마지막으로 PMEM은 플래시 캐시에 대한 핫 데이터 블록의 기록 양을 줄일 수 있다.
본 발명의 실시예는 NAND 백업 저장소 및 DRAM 캐시에 기반한 하나의 영구 메모리 공간을 제공하기 위해 CXL(Compute Express Link)-SSD를 포함할 수 있다. NAND 공간은 장치의 영구 메모리 공간으로 알려질 수 있다. 예를 들면, 본 발명의 일부 실시예들에서, 장치는 768GB 영구 메모리 공간을 가질 수 있다. 영구 메모리 공간은 768GB NAND 공간으로 백업될 수 있다.
도 1의 PMEM(135)은 성능을 향상시키기 위해 DRAM 캐시를 가질 수 있다. PMEM은 또한 DRAM 캐시를 제어하기 위한 인터페이스를 제공할 수 있다. DRAM은 VA(volatile area), WBA(write-back area) 및 PCA(pinned cache area)의 서로 다른 속성을 가진 3개의 영역을 가질 수 있다.
도 3의 VA(volatile area, 305-1)는 전원 중단 시 보호되지 않는 캐시 공간으로 영구 메모리의 읽기 성능을 향상시키는 데 사용될 수 있다. 예를 들어, 이 공간은 데이터베이스의 클린 데이터 블록을 저장하는 데 사용될 수 있다. 데이터 블록이 클린한 경우 데이터 블록이 이미 이 장치나 다른 스토리지 장치에 저장되어 있으므로 손실되도 괜찮을 수 있다.
도 3의 WBA(Write Back Area, 305-2)sms 영구 메모리의 쓰기 성능과 내구성을 향상시키는 데 사용할 수 있다. 이 공간의 데이터는 전원 중단 시 보호될 수 있다. 즉, WBA의 모든 데이터는 정전 시 NAND에 다시 기록될 수 있다. 최대 WBA 크기는 장치별로 다를 수 있으며 내부/외부 커패시터 용량 및 NAND 성능에 따라 결정될 수 있다. 사용자는 CXL.IO를 통해 관리 명령을 사용하여 WBA 크기를 구성할 수 있다. 예를 들면, 데이터베이스의 더티 데이터 블록이 이 공간에 저장되어야 한다. 실제 WBA 크기는 최대 WBA 크기와 사용자가 구성한 WBA 크기 중 최소값으로 결정될 수 있다. 더티 데이터 블록의 총량이 할당된 WBA 크기를 초과하면 새 쓰기를 위한 공간을 확보하기 위해 오래된 데이터를 NAND에 다시 쓸 수 있다. WBA 크기가 작을수록 더 많은 NAND 쓰기가 생성될 수 있다.
WBA(Write Back Area)과 유사하게 PCA(Pinned Cache Area, 도 3의 305-3)는 영구 메모리의 쓰기 성능과 내구성을 향상시키는 데 사용될 수 있다. 이 공간의 데이터는 정전 시 보호될 수 있다. 즉, PCA의 모든 데이터는 정전 시 NAND에 다시 기록될 수 있다. 정상적인 상황에서는 PCA에 저장된 데이터가 NAND에 다시 기록되지 않을 수 있다. PCA의 데이터는 정전, 로그 스위치 등과 같은 이벤트가 감지된 경우에만 NAND에 다시 기록될 수 있다. PCA는 일반적으로 NAND에 다시 기록되지 않을 수 있으므로 이 공간은 리두 로그 및 이중 쓰기 버퍼와 같은 임시 데이터에 사용되어야 한다. 최대 PCA 크기는 장치별로 다를 수 있으며 내부/외부 커패시터 용량 및 NAND 성능에 따라 결정될 수 있다. 사용자는 CXL.IO를 통해 관리 명령을 사용하여 PCA 크기를 구성할 수 있다. 실제 CPA 크기는 최대 PCA 크기와 사용자가 설정한 PCA 크기 중 최소값으로 결정될 수 있다. 리두 로그 크기와 이중 쓰기 버퍼 크기가 할당된 PCA 크기를 초과하면 오류가 반환될 수 있다.
동시 로드/스토어 동작을 지원하기 위해, 도 1의 PMEM(135)은 여러 대기열을 가질 수 있다.
장치의 영구 메모리 공간으로 알려질 수 있는 NAND 공간 외에도 장치는 장치의 내구성을 향상시키기 위해 더 많은 NAND 공간을 사용할 수 있다. 예를 들어 장치에 4TB NAND 용량이 있는 경우 NAND가 지원하는 영구 메모리 공간은 768GB이고 나머지 3.5TB NAND 공간은 보이지 않고 내구성을 위해 사용될 수 있다. 보이지 않는 NAND 공간의 크기는 WBA 캐시 미스율, SLC(Single Level Cell), MLC(Multi-Level Cell) 및 TLC(Triple Level Cell)와 같은 NAND 유형 및 5년 DWPD(Drive write per day)와 같은 보장 기간 등에 의해 결정될 수 있다.
DRAM 캐시 공간은 VA(volatile area), WBA(write back area) 및 PCA(pinned cache area)의 세 영역으로 나눌 수 있다. 사용자는 CXL.IO를 통해 관리 명령을 사용하여 캐시를 구성할 수 있다. 이러한 명령의 예로는 INT cxlssd_create_cache(CACHE_TYPE 유형, UINT 크기, UINT *주소)가 있을 수 있다. 여기서 유형은 CXLSSD _CACHE_ TYPE_ VA, CXLSSD _CACHE_ TYPE_ WBA 또는 CXLSSD_CACHE_TYPE_PCA일 수 있다. 크기는 512바이트의 배수일 수 있다. 주소는 0부터 시작하여 바이트 단위의 캐시 시작 주소의 오프셋일 수 있다. 기본적으로 전체 DRAM 캐시는 VA에 할당될 수 있다. 따라서 사용자는 WBA 및 PCA의 크기를 지정할 수 있다. 이론상 VA, WBA, PCA는 각각 1개 이상 있을 수 있다. 명령이 성공하면 캐시 ID를 반환할 수 있다. 본 개시의 실시예들은 단순화를 위해 VA, WBA 및 PCA 각각을 사용할 수 있다.
캐시 정보는 Cache Space Allocation Table에 저장될 수 있다. 테이블은 (캐시 유형, 오프셋, 크기)를 유지할 수 있다. 테이블의 인덱스는 캐시 ID로 사용될 수 있다.
다음 논의는 본 발명의 특정 측면이 구현될 수 있는 적절한 기계 또는 기계들에 대한 간략하고 일반적인 설명을 제공하기 위한 것일 수 있다. 기계 또는 기계들은 적어도 부분적으로 키보드, 마우스 등과 같은 기존 입력 장치의 입력뿐만 아니라 다른 기계로부터 수신된 지시, VR(virtual reality) 환경과의 상호 작용, 생체 인식 피드백 또는 기타 입력 신호에 의해 제어될 수 있다. 본 명세서에서 사용되는 바와 같이, "기계"라는 용어는 단일 머신, 가상 머신, 또는 통신적으로 결합된 머신, 가상 머신 또는 함께 작동하는 장치의 시스템을 광범위하게 포함하도록 의도될 수 있다. 예시적인 기계는 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 핸드헬드 장치, 전화, 태블릿 등과 같은 컴퓨팅 장치뿐만 아니라 자동차, 기차, 택시 등과 같은 개인 또는 대중 교통과 같은 운송 장치를 포함할 수 있다.
머신 또는 머신들은 프로그래밍 가능 또는 프로그래밍 불가능 논리 장치 또는 어레이, ASIC(Application Specific Integrated Circuits), 임베디드 컴퓨터, 스마트 카드 등과 같은 임베디드 컨트롤러를 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀 또는 기타 통신 결합을 통한 것과 같이 하나 이상의 원격 기계에 대한 하나 이상의 연결을 이용할 수 있다. 기계는 인트라넷, 인터넷, 로컬 영역 네트워크, 광역 네트워크 등과 같은 물리적 및/또는 논리적 네트워크를 통해 상호 연결될 수 있다. 당업자는 네트워크 통신이 다양한 유선 및/또는 RF(무선 주파수), 위성, 마이크로웨이브, 전기전자공학회(IEEE) 802.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함한 무선 단거리 또는 장거리 캐리어 및 프로토콜을 활용할 수 있다는 것을 이해할 수 있다.
본 발명의 실시예는 기계에 의해 액세스될 때 기계가 작업을 수행하거나 추상적인 데이터 유형을 정의하거나 낮은 레벨의 하드웨어 컨텍스트를 정의하는 결과를 초래하는 기능, 절차, 데이터 구조, 애플리케이션 프로그램 등을 포함하는 관련 데이터를 참조하거나 그와 관련하여 설명될 수 있다. 관련 데이터는 예를 들어 RAM, ROM 등과 같은 휘발성 및/또는 비휘발성 메모리 또는 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 스토리지 등을 포함하는 다른 스토리지 장치에 저장될 수 있다. 관련 데이터는 물리적 및/또는 논리적 네트워크를 포함한 전송 환경을 통해 패킷, 직렬 데이터, 병렬 데이터, 전파 형식으로 전달될 수 있고, 신호 등으로 압축되거나 암호화된 형식으로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있으며 기계 액세스를 위해 로컬 및/또는 원격으로 저장될 수 있다.
본 발명의 실시예는 하나 이상의 프로세서에 의해 실행 가능한 명령을 포함하는 유형의 비일시적 기계 판독 가능 매체를 포함할 수 있으며, 명령은 여기에 설명된 바와 같은 개시의 요소를 수행하기 위한 명령을 포함할 수 있다.
전술한 방법의 다양한 동작은 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들), 회로 및/또는 모듈(들)과 같은 동작을 수행할 수 있는 임의의 적절한 수단에 의해 수행될 수 있다. 소프트웨어는 논리 기능을 구현하기 위한 실행 가능한 명령의 정렬된 목록을 포함할 수 있으며, 단일 또는 다중 코어 프로세서 또는 프로세서를 포함하는 시스템과 같은 명령어 실행 시스템, 장치 또는 장치에 의해 사용 또는 연결하기 위한 임의의 "프로세서 판독 가능 매체"에 구현될 수 있다.
본 명세서에 개시된 실시예와 관련하여 설명된 방법 또는 알고리즘의 블록 또는 단계 및 기능은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈 또는 이 둘의 조합으로 직접 구현될 수 있다. 소프트웨어로 구현되는 경우 기능은 유형의 비일시적 컴퓨터 판독 가능 매체에 하나 이상의 명령 또는 코드로 저장되거나 전송될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD ROM 또는 당업계에 알려진 임의의 다른 형태의 스토리지 매체에 있을 수 있다.
예시된 실시예를 참조하여 본 발명의 원리를 설명하고 예시하였지만, 예시된 실시예는 이러한 원리를 벗어나지 않고 배열 및 세부 사항에서 수정될 수 있고 임의의 원하는 방식으로 결합될 수 있음을 인식할 것이다. 그리고, 전술한 논의는 특정 실시예에 초점을 맞추었지만, 다른 구성이 고려될 수 있다. 특히, 본 명세서에서 "본 발명의 일 실시예에 따른" 등과 같은 표현이 사용되더라도, 이러한 문구는 일반적으로 실시예 가능성을 언급하는 것을 의미하며, 본 개시를 특정 실시예 구성으로 제한하려는 의도가 아니다. 본 명세서에서 사용된 바와 같이, 이들 용어는 다른 실시예로 결합 가능한 동일하거나 상이한 실시예를 지칭할 수 있다.
전술한 예시적인 실시예는 그 개시를 제한하는 것으로 해석되어서는 안 된다. 몇 가지 실시예가 설명되었지만, 당업자는 본 발명의 새로운 교시 및 이점으로부터 실질적으로 벗어나지 않고 이러한 실시예에 대한 많은 수정이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 이러한 모든 수정은 청구항에 정의된 바와 같이 본 개시의 범위 내에 포함되도록 의도될 수 있다.
개시 내용의 실시예는 제한 없이 다음 실시예들로 확장될 수 있다.
실시예 1. 본 발명의 실시예는 영구 메모리 장치를 포함하고, 영구 메모리 장치는,
캐시 일관성 상호 연결 인터페이스;
제1 영역 및 제2 영역 중 적어도 하나를 포함하는 휘발성 스토리지;
상기 휘발성 스토리지의 제2 영역에 선택적으로 백업 전원을 제공하도록 구성된 백업 전원 소스;
비휘발성 스토리지; 및
휘발성 스토리지와 비휘발성 스토리지를 제어하는 컨트롤러를 포함하고,
상기 영구 메모리 장치는 상기 영구 메모리 장치에 대한 주 전원의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역으로부터 상기 비휘발성 스토리지로 데이터를 전송하는 동안 상기 백업 전원 소스를 사용하도록 구성된다.
실시예 2. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서,
상기 제2 영역은 고정되지 않은 영역을 포함하고,
상기 휘발성 스토리지는 고정된 영역을 포함하는 제3 영역을 더 포함하고,
상기 백업 전원 소스는 휘발성 스토리지의 제2 영역 및 휘발성 스토리지의 제3 영역에 선택적으로 백업 전원을 제공하도록 구성된다.
실시예 3. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서,
상기 제1 영역은 고정되지 않은 영역을 포함하고,
상기 휘발성 스토리지는 고정된 영역을 포함하는 제3 영역을 더 포함한다.
실시예 4. 본 발명의 실시예는 실시예 1의 영구 메모리 장치를 포함하고, 여기에서, 상기 휘발성 스토리지는 DRAM(dynamic random access memory)를 포함한다.
실시예 5. 본 개시의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 비휘발성 스토리지는 SSD(solid state drive)를 포함한다.
실시예 6. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 캐시 일관성 상호 연결 인터페이스는 CXL(Compute Express Link) 인터페이스를 포함한다.
실시예 7. 본 개시의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 백업 전원 소스는 휘발성 상기 스토리지의 상기 제1 영역에 백업 전원을 제공하지 않도록 구성된다.
실시예 8. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서,
상기 제1 영역은 클린 데이터를 저장하도록 구성되고,
제2 영역은 더티 데이터를 저장하도록 구성된다.
실시예 9. 본 발명의 실시예는 실시예 8에 따른 영구 메모리 장치를 포함하며, 여기에서,
상기 제2 영역은 고정되지 않은 영역을 포함하고,
상기 휘발성 스토리지는 고정된 영역을 포함하고 일시적인 더티 데이터를 저장하도록 구성된 제3 영역을 더 포함하고;
상기 백업 전원 소스는 상기 휘발성 스토리지의 상기 제2 영역 및 상기 휘발성 스토리지의 상기 제3 영역에 선택적으로 백업 전원을 제공하도록 구성된다.
실시예 10. 본 개시의 실시예는 실시예 9에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 영구 메모리 장치는 적어도 일부 상기 영구 메모리 장치에 대한 주 전원의 손실에 기초하여 상기 휘발성 스토리지의 상기 제2 영역으로부터의 제1 데이터 또는 상기 휘발성 스토리지의 상기 제3 영역으로부터의 제2 데이터 중 적어도 하나를 상기 영구 메모리 장치의 상기 비휘발성 스토리지에 전송하는 동안 백업 전원을 사용하도록 구성된다.
실시예 11. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 캐시 일관성 상호 연결 인터페이스는 데이터에 대한 로드 요청을 수신하고 상기 제1 영역 또는 상기 제2 영역 중 적어도 하나로부터 데이터를 리턴하도록 구성된다.
실시예 12. 본 개시의 실시예는 실시예 11에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 컨트롤러는 상기 제1 영역에 있지 않은 데이터에 적어도 부분적으로 기초하여 비휘발성 스토리지로부터 상기 제1 영역으로 데이터를 복사하도록 구성된다.
실시예 13. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하며, 여기에서,
상기 캐시 일관성 상호 연결 인터페이스는 변경 데이터에 대한 저장 요청을 수신하도록 구성되고,
상기 컨트롤러는 변경 데이터에 적어도 부분적으로 기초하여 업데이트된 데이터를 생성하기 위해 상기 제2 영역의 주소에서 원래 데이터를 업데이트하도록 구성된다.
실시예 14. 본 개시의 실시예는 실시예 13에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 컨트롤러는 상기 제2 영역에 없는 원래 데이터에 적어도 부분적으로 기초하여 상기 제2 영역에 주소를 할당하도록 구성된다.
실시예 15. 본 개시의 실시예는 실시예 14에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 컨트롤러는 주소에 있는 기존 데이터를 상기 비휘발성 스토리지 및 할당되지 않은 주소가 없는 영역인 상기 제2 영역에 적어도 부분적으로 기초하여 상기 제1 영역 중 적어도 하나에 복사하도록 구성된다.
실시예 16. 본 발명의 실시예는 실시예 15에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 컨트롤러는 할당되지 않은 주소를 갖지 않는 상기 제1 영역에 적어도 부분적으로 기초하여 상기 제1 영역의 주소에서 기존 데이터를 폐기하도록 구성된다.
실시예 17. 본 개시의 실시예는 실시예 14에 따른 영구 메모리 장치를 포함하고, 상기 컨트롤러는 상기 제1 영역 또는 비휘발성 스토리지 중 적어도 하나로부터의 원본 데이터를 주소로 복사하도록 추가로 구성된다.
실시예 18. 본 발명의 실시예는 실시예 14에 따른 영구 메모리 장치를 포함하고, 상기 컨트롤러는 업데이트된 데이터를 비휘발성 스토리지에 기록하도록 추가로 구성된다.
실시예 19. 본 발명의 실시예는 실시예 18에 따른 영구 메모리 장치를 포함하고, 상기 컨트롤러는 기회적 쓰기 가용성에 적어도 부분적으로 기초하여 업데이트된 데이터를 비휘발성 스토리지에 쓰도록 추가로 구성된다.
실시예 20. 본 개시의 실시예는 실시예 18에 따른 영구 메모리 장치를 포함하고, 여기에서, 상기 컨트롤러는 업데이트된 데이터를 트리거되는 체크포인트에 적어도 부분적으로 기초하여 비휘발성 스토리지에 기록하도록 추가로 구성된다.
실시예 21. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하며, 여기에서,
상기 캐시 일관성 상호 연결 인터페이스는 일시적인 더티 데이터에 대한 저장 요청을 수신하도록 구성되고,
상기 컨트롤러는 일시적인 더티 데이터를 제3 영역의 주소에 저장하도록 구성된다.
실시예 22. 본 개시의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하고, 여기에서, 제1 영역의 제1 크기 및 제2 영역의 제2 크기는 사용자에 의해 구성 가능하다.
실시예 23. 본 개시의 실시예는 실시예 22에 따른 영구 메모리 장치를 포함하고, 여기에서, 제2 영역의 제2 크기는 백업 전원의 동작 기간에 적어도 부분적으로 기초한다.
실시예 24. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하며, 여기에서,
상기 영구 메모리 장치는 제2 비휘발성 스토리지를 더 포함하고,
상기 비휘발성 스토리지는 상기 제2 비휘발성 스토리지를 위한 캐시로서 구성된다.
실시예 25. 본 발명의 실시예는 실시예 24에 따른 영구 메모리 장치를 포함하며, 여기에서,
상기 비휘발성 스토리지는 제1 용량 및 제1 지연을 포함하고,
상기 제2 비휘발성 스토리지는 제2 용량 및 제2 지연을 포함하고,
상기 제2 용량은 상기 제1 용량보다 크고, 상기 제2 지연은 상기 제1 지연보다 크다.
실시예 26. 본 발명의 실시예는 실시예 1에 따른 영구 메모리 장치를 포함하며, 여기에서,
상기 휘발성 스토리지는 제1 용량 및 제1 지연을 포함하고,
상기 비휘발성 스토리지는 제2 용량과 제2 지연을 포함하고,
상기 제2 용량은 상기 제1 용량보다 크고, 상기 제2 지연은 상기 제1 지연보다 크다.
실시예 27. 본 발명의 실시예는 다음을 포함하는 방법을 포함한다.
영구 메모리 장치에서 데이터를 요청하는 로드 요청을 수신하는 단계;
상기 데이터를 상기 영구 메모리의 휘발성 스토리지의 제1 영역 또는 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 위치시키는 단계; 및
상기 영구 메모리 장치에서 주소의 데이터를 반환하는 단계를 포함하고,
상기 영구 메모리 장치는 비휘발성 스토리지를 포함하고,
상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제2 영역은 상기 영구 메모리에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역에 선택적으로 백업 전력을 제공하도록 구성된 백업 전원에 의해 백업된다.
실시예 28. 본 개시의 실시예는 실시예 27에 따른 방법을 포함하고, 여기서 영구 메모리 장치에서 로드 요청을 수신하는 단계는, 영구 메모리 장치의 캐시 일관성 상호 연결 인터페이스에서 로드 요청을 수신하는 단계를 포함한다.
실시예 29. 본 개시의 실시예는 실시예 28에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 캐시 일관성 상호접속 인터페이스에서 로드 요청을 수신하는 단계는 영구 메모리 장치의 CXL(Compute Express Link) 인터페이스에서 로드 요청을 수신하는 단계를 포함한다.
실시예 30. 본 발명의 실시예는 실시예 27에 따른 방법을 포함하고, 여기서 상기 백업 전원 소스는 휘발성 스토리지의 제1 영역에 백업 전원을 제공하지 않도록 구성된다.
실시예 31. 본 발명의 실시예는 실시예 27에 따른 방법을 포함하며, 여기서,
상기 영구 메모리의 휘발성 스토리지의 제1 영역 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 데이터를 위치시키는 단계는 상기 영구 메모리의 DRAM(Dynamic Random Access Memory)의 제1 영역 및 영구 메모리 장치의 DRAM의 제2 영역 중 적어도 하나의 주소에 데이터를 위치시키는 단계를 포함하고,
상기 비휘발성 스토리지는 SSD(solid state drive)가 포함된다.
실시예 32. 본 발명의 일 실시예는 실시예 27에 따른 방법을 포함하고, 여기서 데이터를 영구 메모리의 휘발성 스토리지의 제1 영역 및 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 위치시키는 단계는,
상기 영구 메모리 장치의 비휘발성 스토리지로부터 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로 상기 데이터를 로딩하는 단계; 및
영구 메모리 장치의 휘발성 스토리지의 첫 번째 영역의 주소에 데이터를 위치시키는 단계를 포함한다.
실시예 33. 본 개시의 실시예는 실시예 32에 따른 방법을 포함하고, 데이터를 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로딩하는 단계는, 상기 영구 메모리 장치의 상기 휘발성 스토리지의 제1 영역의 주소를 할당하는 단계를 포함한다.
실시예 34. 본 개시의 실시예는 실시예 32에 따른 방법을 포함하고, 데이터를 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로딩하는 단계는, 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로부터 제2 데이터를 삭제하는 단계를 포함한다.
실시예 35. 본 개시의 실시예는 실시예 27에 따른 방법을 포함하고, 여기서 영구 메모리의 휘발성 스토리지의 제1 영역 및 영구 메모리 디바이스의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 데이터를 위치시키는 단계는,
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역이 가득 찬 것에 적어도 부분적으로 기초하여 상기 영구 메모리 장치의 비휘발성 스토리지로부터 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 주소 및 비어있는 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 주소에 데이터를 로딩하는 단계; 및
영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 주소에 데이터를 위치시키는 단계를 포함한다.
실시예 36. 본 개시의 실시예는 실시예 35에 따른 방법을 포함하고, 여기서 데이터를 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 주소로 로딩하는 단계는 상기 영구 메모리 장치의 휘발서 스토리지의 제2 영역의 주소에 할당시키는 단계를 포함한다.
실시예 37. 본 개시내용의 실시예는 다음을 포함하는 방법을 포함한다:
영구 메모리 장치에서 변경 데이터를 포함하는 저장 요청을 수신하는 단계;
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 위치시키는 단계; 및
업데이트된 데이터를 생성하기 위해 변경 데이터로 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에서 원본 데이터를 업데이트하는 단계를 포함하고,
상기 영구 메모리 장치는 비휘발성 스토리지를 포함하고,
상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역은 상기 영구 메모리에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제1 영역에 선택적으로 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 백업되고,
상기 영구 메모리 디바이스의 상기 휘발성 스토리지는 제2 영역을 포함한다.
실시예 38. 본 개시의 실시예는 실시예 37에 따른 방법을 포함하고, 영구 메모리 장치에서 저장 요청을 수신하는 단계는 영구 메모리 장치의 캐시 일관성 있는 상호 연결 인터페이스에서 저장 요청을 수신하는 단계를 포함한다.
실시예 39. 본 발명의 실시예는 실시예 38에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 캐시 일관성 상호 연결 인터페이스에서 저장 요청을 수신하는 단계는 영구 메모리 장치의 CXL(Compute Express Link) 인터페이스에서 저장 요청을 수신하는 단계를 포함한다.
실시예 40. 본 발명의 실시예는 실시예 37에 따른 방법을 포함하고, 여기서 상기 백업 전원소스는 휘발성 스토리지의 제1 영역에 백업 전원을 제공하지 않도록 구성된다.
실시예 41. 본 발명의 실시예는 실시예 37에 따른 방법을 포함하며, 여기서:
영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 찾는 단계는, 영구 메모리 장치의 DRAM(Dynamic Random Access Memory)의 제1 영역의 주소에 원본 데이터를 찾는 단계를 포함하고,
상기 업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 주소에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계는, 상기 업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 DRAM의 상기 제1 영역의 상기 주소에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계를 포함하고,
상기 비휘발성 스토리지는 SSD(solid state drive)를 포함한다.
실시예 42. 본 개시의 실시예는 실시예 37에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 원본 데이터를 위치시키는 단계는, 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로드하는 단계를 포함한다.
실시예 43. 본 발명의 일 실시예는 실시예 42에 따른 방법을 포함하고, 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 로드하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 주소를 할당하는 단계를 포함한다.
실시예 44. 본 개시의 실시예는 실시예 42에 따른 방법을 포함하고, 여기서 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로드하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에서 제1 데이터를 축출하는 단계를 포함한다.
실시예 45. 본 개시의 실시예는 실시예 44에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역 내의 주소에서 제1 데이터를 축출하는 단계는 제1 데이터를 영구 메모리 장치의 비휘발성 스토리지에 기록하는 단계를 포함한다.
실시예 46. 본 개시의 실시예는 실시예 45에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역 내의 주소에 있는 제1 데이터를 축출하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역 내의 주소에 있는 제1 데이터를 삭제하는 단계를 더 포함한다.
실시예 47. 본 개시의 실시예는 실시예 45에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 축출하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 영구 메모리 장치의 휘발서 스토리지의 제2 영역의 제1 주소에 복사하는 단계를 더 포함한다.
실시예 48. 본 개시의 실시예는 실시예 47에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 제1 주소로 복사하는 단계는, 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 제1 주소를 할당하는 단계를 포함한다.
실시예 49. 본 개시의 실시예는 실시예 47에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 제1 주소로 복사하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소에서 제3 데이터를 삭제하는 단계를 포함한다.
실시예 50. 본 개시의 실시예는 실시예 42에 따른 방법을 포함하고, 여기서 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로드하는 단계는 영구 메모리 장치의 비휘발성 스토리지 또는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소중 적어도 하나로 부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 복사하는 단계를 포함한다.
실시예 51. 본 개시의 실시예는 실시예 50에 따른 방법을 포함하고, 영구 메모리 장치의 비휘발성 스토리지 또는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소중 적어도 하나로 부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 복사하는 단계는,
상기 원본 데이터를 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로 복사하는 단계; 및
상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역에서 원본 데이터를 삭제하는 단계를 포함한다.
실시예 52. 본 개시의 실시예는 실시예 50에 따른 방법을 포함하고, 영구 메모리 장치의 비휘발성 스토리지 또는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소중 적어도 하나로 부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 복사하는 단계는, 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로 원본 데이터를 복사하는 단계를 포함한다.
실시예 53. 본 개시의 실시예는 실시예 42에 따른 방법을 포함하고, 상기 업데이트된 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계를 더 포함한다.
실시예 54. 본 개시의 실시예는 실시예 53에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하는 단계는 기회주의적 쓰기 가용성에 적어도 부분적으로 기초하여 영구 메모리 장치의 휘발성 스토리지의 제1 영역에서 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하는 단계를 포함한다.
실시예 55. 본 개시의 실시예는 실시예 53에 따른 방법을 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하는 단계는, 트리거되고 있는 체크포인트에 적어도 부분적으로 기초하여 영구 메모리 장치의 휘발성 스토리지의 제1 영역에서 영구 메모리 장치의 비휘발성 스토리지에 업데이트된 데이터를 복사하는 단계를 포함한다.
실시예 56. 본 개시내용의 실시예는 다음을 포함하는 방법을 포함한다:
영구 메모리 장치에 대한 기본 전원의 손실이 발생했다고 결정하는 단계; 및
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터의 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터의 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계를 포함한다.
실시예 57. 본 개시의 실시예는 진술 56에 따른 방법을 포함하고, 여기서 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계는, 상기 영구 메모리 장치의 백업 전원을 이용하여 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계를 포함한다.
실시예 58. 본 개시의 실시예는 실시예 56에 따른 방법을 포함하고, 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계는, 상기 영구 메모리 장치의 비휘발성 저장 장치에 상기 영구 메모리 장치의 DRAM(Dynamic Random Access Memory)의 제1 영역으로부터의 제1 데이터 및 영구 메모리 장치의 DRAM의 제2 영역으로부터의 제1 데이터 중 적어도 하나를 메모리 장치를 영구 메모리 장치의 SSD(Solid State Drive)에 복사하는 단계를 포함한다.
실시예 59. 본 발명의 실시예는 비일시적 저장 메체를 포함하며, 비일시적 저장 매체는 기계에 의해 실행될 때 다음 방법을 초래하는 명령어를 저장한다:
영구 메모리 장치에서 데이터를 요청하는 로드 요청을 수신하는 단계;
상기 데이터를 상기 영구 메모리의 휘발성 스토리지의 제1 영역 또는 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 위치시키는 단계; 및
영구 메모리 장치에서 주소의 데이터를 반환하는 단계를 포함하고,
상기 영구 메모리 장치는 비휘발성 스토리지를 포함하고,
상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제2 영역은 상기 영구 메모리에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역에 선택적으로 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 백업된다.
실시예 60. 본 개시의 실시예는 실시예 59에 따른 매체를 포함하고, 여기서 영구 메모리 장치에서 로드 요청을 수신하는 단계는 영구 메모리 장치의 캐시 일관성 상호 연결 인터페이스에서 로드 요청을 수신하는 단계를 포함한다.
실시예 61. 본 개시의 실시예는 실시예 60에 따른 매체를 포함하고, 여기서 상기 영구 메모리 디바이스의 캐시 일관성 상호 연결 인터페이스에서 로드 요청을 수신하는 단계는 영구 메모리 디바이스의 컴퓨트 익스프레스 링크(CXL) 인터페이스에서 로드 요청을 수신하는 단계를 포함한다.
실시예 62. 본 발명의 실시예는 진술 59에 따른 메체를 포함하고, 여기서 상기 백업 전원 소스는 휘발성 스토리지의 제1 영역에 백업 전원을 제공하지 않도록 구성된다.
실시예 63. 본 발명의 실시예는 실시예 59에 따른 매체를 포함하며, 여기서:
상기 영구 메모리의 휘발성 스토리지의 제1 영역 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 데이터를 위치시키는 단계는 상기 영구 메모리의 DRAM(Dynamic Random Access Memory)의 제1 영역 및 상기 영구 메모리 장치의 DRAM의 제2 영역 중 적어도 하나의 주소에 데이터를 위치시키는 단계를 포함하고,
상기 비휘발성 스토리지는 SSD(solid state drive)를 포함한다.
실시예 64. 본 개시의 실시예는 실시예 59에 따른 매체를 포함하고, 여기서 데이터를 영구 메모리의 휘발성 스토리지의 제1 영역 및 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 위치시키는 단계는 다음을 포함한다:
상기 영구 메모리 장치의 비휘발성 스토리지로부터 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로 상기 데이터를 로딩하는 단계; 및
영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 데이터를 위치시키는 단계를 포함한다.
실시예 65. 본 개시의 실시예는 실시예 64에 따른 매체를 포함하며, 데이터를 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로드하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소를 할당하는 단계를 포함한다.
실시예 66. 본 개시의 실시예는 실시예 64에 따른 매체를 포함하며, 데이터를 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로딩하는 단계는,상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로부터 제2 데이터를 삭제하는 단계를 포함한다.
실시예 67. 본 개시의 실시예는 실시예 59에 따른 매체를 포함하고, 여기서 데이터를 영구 메모리의 휘발성 스토리지의 제1 영역 및 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 주소에 위치시키는 단계는 다음을 포함한다:
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역이 가득 찬 것에 적어도 부분적으로 기초하여 상기 영구 메모리 장치의 비휘발성 스토리지로부터 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 내의 주소 및 비어있는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 주소에 데이터를 로딩하는 단계; 및
상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 주소에 데이터를 위치시키는 단계를 포함한다.
실시예 68. 본 개시의 실시예는 실시예 67에 따른 매체를 포함하며, 데이터를 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 주소로 로드하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 주소를 할당하는 단계를 포함한다.
실시예 69. 본 발명의 실시예는 비일시적 저장 매체를 포함하며, 비일시적 저장 매체는 기계에 의해 실행될 때 다음 방법을 초래하는 명령어를 저장한다:
영구 메모리 장치에서 변경 데이터를 포함하는 저장 요청을 수신하는 단계;
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 위치시키는 단계; 및
업데이트된 데이터를 생성하기 위해 변경 데이터로 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에서 원본 데이터를 업데이트하는 단계를 포함하고,
상기 영구 메모리 장치는 비휘발성 스토리지를 포함하고,
상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역은 상기 영구 메모리에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제1 영역에 선택적으로 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 백업되고,
상기 영구 메모리 장치의 상기 휘발성 스토리지는 제1 영역을 포함한다.
실시예 70. 본 개시의 실시예는 실시예 69에 따른 매체를 포함하고, 여기서 영구 메모리 장치에서 저장 요청을 수신하는 단계는 영구 메모리 장치의 캐시 일관성 상호 연결 인터페이스에서 저장 요청을 수신하는 단계를 포함한다.
실시예 71. 본 개시의 실시예는 실시예 70에 따른 매체를 포함하며, 여기서 영구 메모리 장치의 캐시 일관성 상호 연결 인터페이스에서 저장 요청을 수신하는 단계는 영구 메모리 장치의 CXL(Compute Express Link) 인터페이스에서 저장 요청을 수신하는 단계를 포함한다.
실시예 72. 본 발명의 실시예는 실시예 69에 따른 매체를 포함하고, 여기서 상기 백업 전원 소스는 휘발성 스토리지의 제1 영역에 백업 전원을 제공하지 않도록 구성된다.
실시예 73. 본 발명의 실시예는 실시예 69에 따른 매체를 포함하며, 여기서:
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소에 원본 데이터를 위치시키는 단계는 영구 메모리 장치의 DRAM(Dynamic Random Access Memory)의 제1 영역의 주소에 원본 데이터를 위치시키는 단계를 포함하고,
상기 업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계는,
상기 업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 DRAM의 상기 제1 영역의 상기 어드레스에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계를 포함하고,
상기 비휘발성 스토리지는 SSD(solid state drive)를 포함한다.
실시예 74. 본 개시의 실시예는 실시예 69에 따른 매체를 포함하며, 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 원본 데이터를 위치시키는 단계는 원본 데이터를 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로딩하는 단계를 포함한다.
실시예 75. 본 개시의 실시예는 실시예 74에 따른 매체를 포함하며, 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 로드하는 단계는 영구 메모리의 휘발성 스토리지의 제1 영역에 주소를 할당하는 단계를 포함한다.
실시예 76. 본 개시의 실시예는 실시예 74에 따른 매체를 포함하며, 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소로 로드하는 것은 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에서 제1 데이터를 축출하는 것을 포함한다.
실시예 77. 본 개시의 실시예는 실시예 76에 따른 매체를 포함하며, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에서 제1 데이터를 축출하는 단계는 영구 메모리 장치의 비휘발성 스토리지에 제1 데이터를 기록하는 단계를 포함한다.
실시예 78. 본 개시의 실시예는 실시예 77에 따른 매체를 포함하고, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 축출하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 삭제하는 단계를 더 포함한다.
실시예 79. 본 개시의 실시예는 실시예 77에 따른 매체를 포함하며, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 축출하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 제1 주소에 복사하는 단계를 더 포함한다.
실시예 80. 본 개시의 실시예는 실시예 79에 따른 매체를 포함하며, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 제1 주소에 복사하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 제1 주소를 할당하는 단계를 포함한다.
실시예 81. 본 개시의 실시예는 실시예 79에 따른 매체를 포함하며, 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 있는 제1 데이터를 영구 메모리 장치의 휘발성 스토리지의 제2 영역에 있는 제1 주소에 복사하는 단계는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소에서 제3 데이터를 삭제하는 단계를 포함한다.
실시예 82. 본 개시의 실시예는 실시예 74에 따른 물품을 포함하며, 여기서 원본 데이터를 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 로드하는 단계는 원본 데이터를 영구 메모리 장치의 비휘발성 스토리지 또는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소 중 적어도 하나로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 복사하는 단계를 포함한다.
실시예 83. 본 개시의 실시예는 실시예 82에 따른 매체를 포함하며, 원본 데이터를 영구 메모리 장치의 비휘발성 스토리지 또는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소 중 적어도 하나로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 복사하는 단계는 다음을 포함한다:
상기 원본 데이터를 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로 복사하는 단계; 및
영구 메모리 장치의 휘발성 스토리지의 제2 영역에서 원본 데이터를 삭제하는 단계를 포함한다.
실시예 84. 본 개시의 실시예는 실시예 82에 따른 매체를 포함하며, 원본 데이터를 영구 메모리 장치의 비휘발성 스토리지 또는 영구 메모리 장치의 휘발성 스토리지의 제2 영역의 제1 주소 중 적어도 하나로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역에 있는 주소에 복사하는 단계는 영구 메모리 장치의 비휘발성 스토리지로부터 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 주소로 원본 데이터를 복사하는 단계를 포함한다.
실시예 85. 본 발명의 실시예는 실시예 74에 따른 매체를 포함하고, 상기 비일시적 저장 매체는 기계에 의해 실행될 때 영구 메모리의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지에 업데이트된 데이터를 복사하는 단계를 포함하는 방법을 초래하는 추가 명령을 저장한다.
실시예 86. 본 개시의 실시예는 실시예 85에 따른 매체를 포함하며, 여기서 영구 메모리 장치의 휘발성 스토리지 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하는 단계는 기회주의적 쓰기 가용성에 적어도 부분적으로 기초하여 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하느 단계를 포함한다.
실시예 87. 본 개시의 실시예는 실시예 85에 따른 매체를 포함하며, 여기서 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하는 단계는 트리거되고 있는 체크포인트에 적어도 부분적으로 기초하여 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터 영구 메모리 장치의 비휘발성 스토리지로 업데이트된 데이터를 복사하는 단계를 포함한다.
실시예 88. 본 발명의 실시예는 비일시적 저장 매체를 포함하며, 비일시적 저장 매체는 기계에 의해 실행될 때 다음 방법을 초래하는 명령어를 저장한다:
영구 메모리 장치에 대한 기본 전원의 손실이 발생했다고 결정하는 단계; 및
상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터의 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터의 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계를 포함하는 방법.
실시예 89. 본 개시의 실시예는 실시예 88에 따른 매체를 포함하며, 여기서 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터의 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터의 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계는 상기 영구 메모리 장치의 백업 전원 소스를 사용하여 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터의 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터의 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계를 포함한다.
실시예 90. 본 개시의 실시예는 실시예 88에 따른 매체를 포함하며, 여기서 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역으로부터의 제1 데이터 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역으로부터의 제1 데이터 중 적어도 하나를 상기 영구 메모리 장치의 비휘발성 스토리지로 복사하는 단계는 상기 영구 메모리 장치의 비휘발성 저장 장치에 상기 영구 메모리 장치의 DRAM(Dynamic Random Access Memory)의 제1 영역으로부터의 제1 데이터 및 영구 메모리 장치의 DRAM의 제2 영역으로부터의 제1 데이터를 적어도 하나를 상기 영구 메모리 장치의 SSD(solid state drive)에 복사하는 단계를 포함한다.
결과적으로, 본 명세서에 기술된 실시예에 대한 다양한 변경의 관점에서, 이 상세한 설명 및 수반되는 자료는 단지 예시를 위한 것이며 본 발명의 범위를 제한하는 것으로 간주되어서는 안 된다. 따라서, 본 개시로 주장되는 것은 다음 청구항의 범위 및 관점에 포함될 수 있는 모든 수정 및 이에 상응하는 것이다.

Claims (20)

  1. 영구 메모리 장치에 있어서,
    캐시 일관성 상호 연결 인터페이스;
    적어도 제1 영역 및 제2 영역을 포함하는 휘발성 스토리지;
    상기 휘발성 스토리지의 상기 제2 영역에 선택적으로 백업 전원을 제공하도록 구성된 백업 전원 소스;
    비휘발성 스토리지; 및
    휘발성 스토리지와 비휘발성 스토리지를 제어하는 컨트롤러를 포함하고,
    상기 영구 메모리 장치는 상기 영구 메모리 장치에 대한 주 전원의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역으로부터 상기 비휘발성 스토리지로 데이터를 전송하는 동안 상기 백업 전원 소스를 사용하도록 구성된 영구 메모리 장치.
  2. 제1 항에 있어서,
    상기 캐시 일관성 상호 연결 인터페이스는 Compute Express Link(CXL) 인터페이스를 포함하고,
    상기 휘발성 스토리지는 동적 랜덤 액세스 메모리(DRAM)를 포함하고,
    상기 비휘발성 스토리지는 솔리드 스테이트 드라이브(SSD)를 포함하는 영구 메모리 장치.
  3. 제1항에 있어서,
    상기 제1 영역은 클린 데이터를 저장하도록 구성되고,
    상기 제2 영역은 더티 데이터를 저장하도록 구성되는 영구 메모리 장치.
  4. 제3항에 있어서,
    상기 제2 영역은 고정되지 않은 영역을 포함하고,
    상기 휘발성 스토리지는 제3 영역을 더 포함하고,
    상기 제3 영역은 고정된 영역을 포함하고 일시적인 더티 데이터를 저장하도록 구성되고,
    상기 백업 전원 소스는 상기 휘발성 스토리지의 상기 제2 영역 및 상기 휘발성 스토리지의 상기 제3 영역에 백업 전원을 제공하도록 구성된 영구 메모리 저장 장치.
  5. 제4항에 있어서,
    상기 영구 메모리 장치는 상기 영구 메모리 장치를 위한 주 전원의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역으로부터의 제1 데이터 또는 상기 휘발성 스토리지의 상기 제3 영역으로부터의 제2 데이터 중 적어도 하나를 상기 비휘발성 스토리지로 전송하면서 상기 백업 전원 소스를 사용하도록 구성된 영구 메모리 장치.
  6. 제1항에 있어서,
    상기 캐시 일관성 상호 연결 인터페이스는 데이터에 대한 로드 요청을 수신하고 상기 제1 영역 또는 상기 제2 영역 중 적어도 하나로부터 상기 데이터를 반환하도록 구성되는 영구 메모리 장치.
  7. 제1항에 있어서,
    상기 캐시 일관성 상호 연결 인터페이스는 변경 데이터에 대한 저장 요청을 수신하도록 구성되고,
    상기 컨트롤러는 상기 변경 데이터에 적어도 부분적으로 기초하여 업데이트된 데이터를 생성하기 위해 상기 제2 영역의 어드레스에서 원래 데이터를 업데이트하도록 구성된 영구 메모리 장치.
  8. 제1항에 있어서,
    상기 제1 영역의 제1 크기 및 상기 제2 영역의 제2 크기는 사용자에 의해 설정 가능한 영구 메모리 장치.
  9. 영구 메모리 장치에서 데이터를 요청하는 로드 요청을 수신하는 단계;
    상기 데이터를 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 어드레스에 위치시키는 단계; 및
    영구 메모리 장치에서 상기 어드레스의 상기 데이터를 반환하는 단계를 포함하고,
    상기 영구 메모리 장치는 비휘발성 스토리지를 포함하고,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제2 영역은 상기 영구 메모리에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제2 영역에 선택적으로 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 뒷받침 되는 방법.
  10. 제9항에 있어서,
    상기 데이터를 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 어드레스에 위치시키는 단계는 상기 데이터를 상기 영구 메모리 장치의 동적 랜덤 액세스 메모리(DRAM)의 상기 제1 영역 및 상기 영구 메모리 장치의 상기 DRAM의 상기 제2 영역 중 적어도 하나의 상기 어드레스에 위치시키는 단계를 포함하고,
    상기 비휘발성 스토리지는 솔리드 스테이트 드라이브(SSD)를 포함하는 방법.
  11. 제9항에 있어서,
    상기 데이터를 상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역 및 상기 영구 메모리 장치의 휘발성 스토리지의 제2 영역 중 적어도 하나의 어드레스에 위치시키는 단계는,
    상기 영구 메모리 장치의 상기 비휘발성 스토리지로부터 상기 영구 메모리 장치의 상기 휘발성 스토리지의 제1 영역의 상기 어드레스로 상기 데이터를 로딩하는 단계; 및
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스에 상기 데이터를 위치시키는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    상기 영구 메모리 장치의 상기 비휘발성 스토리지로부터 상기 영구 메모리 장치의 상기 휘발성 스토리지의 제1 영역의 상기 어드레스로 상기 데이터를 로딩하는 단계는,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스를 할당하는 단계를 포함하는 방법.
  13. 제11항에 있어서,
    상기 영구 메모리 장치의 상기 비휘발성 스토리지로부터 상기 영구 메모리 장치의 상기 휘발성 스토리지의 제1 영역의 상기 어드레스로 상기 데이터를 로딩하는 단계는,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스로부터 제2 데이터를 삭제하는 단계를 포함하는 방법.
  14. 영구 메모리 장치에서 변경 데이터를 포함하는 저장 요청을 수신하는 단계;
    상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 어드레스에 원본 데이터를 위치시키는 단계; 및
    업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계를 포함하고,
    상기 영구 메모리 장치는 비휘발성 스토리지를 포함하고,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역은 상기 영구 메모리 장치에 대한 주 전력의 손실에 적어도 부분적으로 기초하여 상기 휘발성 스토리지의 상기 제1 영역에 백업 전력을 제공하도록 구성된 백업 전원 소스에 의해 뒷받침되고,
    상기 영구 메모리 장치의 상기 휘발성 스토리지는 제2 영역을 포함하는 방법.
  15. 제14항에 있어서,
    상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 어드레스에 원본 데이터를 위치시키는 단계는,
    상기 영구 메모리 장치의 동적 랜덤 액세스 메모리(DRAM)의 상기 제1 영역의 상기 어드레스에 상기 원본 데이터를 찾는 단계를 포함하고,
    상기 업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계는,
    상기 업데이트된 데이터를 생성하기 위해 상기 영구 메모리 장치의 상기 DRAM의 상기 제1 영역의 상기 어드레스에서 상기 원본 데이터를 상기 변경 데이터로 업데이트하는 단계를 포함하고,
    상기 비휘발성 스토리지는 솔리드 스테이트 드라이브(SSD)를 포함하는 방법.
  16. 제14항에 있어서,
    상기 영구 메모리 장치의 휘발성 스토리지의 제1 영역의 어드레스에 원본 데이터를 위치시키는 단계는,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 어드레스에 상기 원본 데이터를 로딩하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 어드레스에 상기 원본 데이터를 로딩하는 단계는,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스를 할당하는 단계를 포함하는 방법.
  18. 제16항에 있어서,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 어드레스에 상기 원본 데이터를 로딩하는 단계는,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스에서 제1 데이터를 제거하는 단계를 포함하는 방법.
  19. 제18항에 있어서,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역의 상기 어드레스에서 제1 데이터를 제거하는 단계는,
    상기 영구 메모리 장치의 상기 비휘발성 스토리지에 상기 제1 데이터를 기입하는 단계를 포함하는 방법.
  20. 제16항에 있어서,
    상기 영구 메모리 장치의 상기 휘발성 스토리지의 상기 제1 영역으로부터 상기 업데이트된 데이터를 상기 영구 메모리 장치의 상기 비휘발성 스토리지에 복사하는 단계를 더 포함하는 방법.
KR1020230025281A 2022-02-25 2023-02-24 캐시 일관성 상호 연결 인터페이스를 포함하는 영구 메모리 장치 KR20230127934A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202263314361P 2022-02-25 2022-02-25
US63/314,361 2022-02-25
US202263340437P 2022-05-10 2022-05-10
US63/340,437 2022-05-10
US17/858,058 2022-07-05
US17/858,058 US11966590B2 (en) 2022-02-25 2022-07-05 Persistent memory with cache coherent interconnect interface

Publications (1)

Publication Number Publication Date
KR20230127934A true KR20230127934A (ko) 2023-09-01

Family

ID=85381194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230025281A KR20230127934A (ko) 2022-02-25 2023-02-24 캐시 일관성 상호 연결 인터페이스를 포함하는 영구 메모리 장치

Country Status (4)

Country Link
US (1) US11966590B2 (ko)
EP (1) EP4235433A1 (ko)
KR (1) KR20230127934A (ko)
TW (1) TW202340965A (ko)

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074034B2 (en) 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
EP2441005A2 (en) 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
US8806134B2 (en) * 2010-04-16 2014-08-12 Pmc-Sierra Us, Inc. Mirrored cache protection
US8688899B2 (en) 2010-09-28 2014-04-01 Fusion-Io, Inc. Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9223709B1 (en) 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US20150012699A1 (en) 2013-07-02 2015-01-08 Lsi Corporation System and method of versioning cache for a clustering topology
US9383932B2 (en) 2013-12-27 2016-07-05 Intel Corporation Data coherency model and protocol at cluster level
EP3140743B1 (en) 2014-05-08 2021-11-24 Micron Technology, INC. Hybrid memory cube system interconnect directory-based cache coherence methodology
US10346091B2 (en) 2016-03-31 2019-07-09 Intel Corporation Fabric resiliency support for atomic writes of many store operations to remote nodes
US10402326B1 (en) 2016-04-26 2019-09-03 Apple Inc. Accessing memories in coherent and non-coherent domains in a computing system
US20180107596A1 (en) 2016-10-13 2018-04-19 Microsoft Technology Licensing, Llc Battery-based data persistence management in computing systems
US11175853B2 (en) 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
US10642743B2 (en) 2017-06-28 2020-05-05 Arm Limited Apparatus and method of handling caching of persistent data
US20210042228A1 (en) 2019-07-17 2021-02-11 Intel Corporation Controller for locking of selected cache regions
US11726793B2 (en) 2019-11-15 2023-08-15 Intel Corporation Data locality enhancement for graphics processing units
US11698879B2 (en) 2019-12-06 2023-07-11 Intel Corporation Flexible on-die fabric interface
US20200192715A1 (en) 2020-02-24 2020-06-18 Intel Corporation Workload scheduler for memory allocation
EP4115296A1 (en) 2020-03-04 2023-01-11 Telefonaktiebolaget Lm Ericsson (Publ) Snapshotting data of a host application
US20210373951A1 (en) 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for composable coherent devices
US20210311871A1 (en) 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. System and method for aggregating server memory
WO2021243340A1 (en) 2020-05-29 2021-12-02 Netlist, Inc. Computer memory expansion device and method of operation
US20220043753A1 (en) 2021-10-26 2022-02-10 Intel Corporation Dynamic allocation of cache resources
US11734217B2 (en) * 2021-12-13 2023-08-22 Xilinx, Inc. Software or firmware managed hardware capability and control configuration for PCIe devices
CN114020655A (zh) 2022-01-05 2022-02-08 苏州浪潮智能科技有限公司 一种内存扩展方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20230273731A1 (en) 2023-08-31
US11966590B2 (en) 2024-04-23
TW202340965A (zh) 2023-10-16
EP4235433A1 (en) 2023-08-30

Similar Documents

Publication Publication Date Title
US9983993B2 (en) Apparatus, system, and method for conditional and atomic storage operations
US9569130B2 (en) Storage system having a plurality of flash packages
US9158700B2 (en) Storing cached data in over-provisioned memory in response to power loss
US9218278B2 (en) Auto-commit memory
US9047178B2 (en) Auto-commit memory synchronization
US10248322B2 (en) Memory system
US8527693B2 (en) Apparatus, system, and method for auto-commit memory
US9665442B2 (en) Smart flushing of data to backup storage
US8806165B2 (en) Mass-storage system utilizing auxiliary solid-state storage subsystem
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
US8909855B2 (en) Storage system employing MRAM and physically addressed solid state disk
US20190324859A1 (en) Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive
US10310984B2 (en) Storage apparatus and storage control method
CN114556310A (zh) 数据存储***中的垃圾收集
TWI782847B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
US11966590B2 (en) Persistent memory with cache coherent interconnect interface
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
CN116662217A (zh) 持久性存储器装置及应用持久性存储器装置的方法
JP6867586B2 (ja) ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法
JP6138318B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5945040B2 (ja) 複数のフラッシュパッケージを有するストレージシステム