KR20240131091A - Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치 - Google Patents

Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치 Download PDF

Info

Publication number
KR20240131091A
KR20240131091A KR1020230024389A KR20230024389A KR20240131091A KR 20240131091 A KR20240131091 A KR 20240131091A KR 1020230024389 A KR1020230024389 A KR 1020230024389A KR 20230024389 A KR20230024389 A KR 20230024389A KR 20240131091 A KR20240131091 A KR 20240131091A
Authority
KR
South Korea
Prior art keywords
storage device
plp
data
module
volatile memory
Prior art date
Application number
KR1020230024389A
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 삼성전자주식회사
Priority to KR1020230024389A priority Critical patent/KR20240131091A/ko
Priority to US18/367,701 priority patent/US20240289026A1/en
Priority to CN202311247583.3A priority patent/CN118535078A/zh
Publication of KR20240131091A publication Critical patent/KR20240131091A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

일 실시예에 따른 제1 스토리지 장치와 연결되어, 상기 제1 스토리지 장치에 PLP 동작을 수행하기 위한 PLP 모듈은, 호스트의 커맨드에 따라 데이터를 저장하는 휘발성 메모리; 상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면, 상기 휘발성 메모리의 데이터를 수신하여 저장하는 비휘발성 메모리; 상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면, 상기 휘발성 메모리 및 상기 비휘발성 메모리에 전압을 공급하는 커패시터 모듈; 및 상기 휘발성 메모리, 상기 비휘발성 메모리, 및 상기 커패시터 모듈의 동작을 제어하기 위한 컨트롤러를 포함한다.

Description

PLP 동작을 수행하는 방법, PLP 모듈, 및 전자 장치{METHOD FOR PERFORMING POWER LOSS PROTECTION (PLP) OPERATION, PLP MODULE, AND ELECTRONIC DEVICE}
개시 내용은 PLP 동작을 수행하는 방법, PLP 모듈, 및 전자 장치에 관한 것이다.
스토리지 장치(storage device)는 다양한 전자 장치들의 데이터 저장 매체로서 사용되고 있다. 스토리지 장치에는 다양한 전자 장치들에서 생성되거나 편집된 데이터가 저장될 수 있다.
이러한 스토리지 장치는 SPO(Sudden Power Off) 상황에서도 안정적인 데이터 저장을 위해서 스토리지 장치 내부에 데이터 저장용 에너지를 제공할 수 있도록 커패시터를 탑재하는 경우가 있다. 커패시터를 포함하는 스토리지 장치는 SPO 상황이 발생하면 PLP(Power Loss Protection) 동작을 수행하여 데이터의 손상을 방지할 수 있다.
하지만 이러한 스토리지 장치는 개발과정에서 복잡한 구성으로 인하여 하드웨어 및 소프트웨어 개발기간 장기화를 야기하고 검증 비용을 증가시키는 등 개발 난이도를 상승시키며 제품의 가격을 증가시키는 원인이 된다.
일 실시예는 PLP 동작을 수행하지 못하는 스토리지 장치를 대상으로 PLP 동작을 수행하는 방법, PLP 모듈, 및 전자 장치를 제공하고자 한다.
이러한 기술적 과제를 해결하기 위한 일 실시예에 따른 제1 스토리지 장치와 연결되어, 상기 제1 스토리지 장치에 PLP(Power Loss Protection) 동작을 수행하기 위한 PLP 모듈은, 호스트의 커맨드에 따라 데이터를 저장하는 휘발성 메모리; 상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면, 상기 휘발성 메모리의 데이터를 수신하여 저장하는 비휘발성 메모리; 상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면, 상기 휘발성 메모리 및 상기 비휘발성 메모리에 전압을 공급하는 커패시터 모듈; 및 상기 휘발성 메모리, 상기 비휘발성 메모리, 및 상기 커패시터 모듈의 동작을 제어하기 위한 컨트롤러를 포함한다.
상기 제1 스토리지 장치에 액세스할 수 없는 상황은 SPO(Sudden Power Off) 상황 또는 단절 상황을 포함할 수 있다.
상기 휘발성 메모리는 상기 제1 스토리지 장치의 제1 데이터에 대응하는 제2 데이터를 저장하고, 상기 컨트롤러는, 상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면 상기 제2 데이터를 상기 비휘발성 메모리에 저장할 수 있다.
상기 PLP 모듈은 인터페이스를 통해 상기 제1 스토리지 장치와 연결될 수 있다.
상기 인터페이스는 상기 호스트의 읽기 커맨드를 상기 제1 스토리지 장치에 전달하고, 상기 호스트의 쓰기 커맨드 또는 소거 커맨드를 상기 제1 스토리지 장치와 상기 PLP 모듈에 전달할 수 있다.
상기 컨트롤러는, 상기 비휘발성 메모리의 데이터를 상기 제1 스토리지 장치에 전송할 수 있다.
상기 컨트롤러는, 상기 제1 스토리지 장치에 액세스 가능한 상황이 되면, 상기 비휘발성 메모리의 데이터를 상기 제1 스토리지 장치에 전송할 수 있다.
상기 컨트롤러는, 상기 제1 스토리지 장치에 액세스 가능한 상황이 되면, 상기 제1 스토리지 장치의 요청 신호에 응답하여 상기 비휘발성 메모리의 데이터를 상기 제1 스토리지 장치에 전송할 수 있다.
상기 컨트롤러는, 상기 커패시터 모듈의 상태 정보를 상기 제1 스토리지 장치에 전송하고, 상기 상태 정보는 상기 제1 스토리지 장치가 저장 단위를 결정하는 것에 사용될 수 있다.
상기 컨트롤러는, 상기 제1 스토리지 장치의 요청 신호에 응답하여 상기 상태 정보를 상기 제1 스토리지 장치에 전송할 수 있다.
상기 휘발성 메모리의 용량은, 상기 제1 스토리지 장치의 버퍼 메모리의 용량보다 클 수 있다.
상기 휘발성 메모리의 용량은, 상기 제1 스토리지 장치의 버퍼 메모리의 용량의 두 배일 수 있다.
상기 PLP 모듈은 제2 스토리지 장치와 더 연결되고, 상기 휘발성 메모리는 상기 제1 스토리지 장치의 제1 데이터에 대응하는 제2 데이터를 저장하고, 상기 제2 스토리지 장치의 제3 데이터에 대응하는 제4 데이터를 저장하고, 상기 컨트롤러는, 상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면 상기 제2 데이터를 상기 비휘발성 메모리에 저장하고, 상기 제2 스토리지 장치에 액세스할 수 없는 상황이 발생하면 상기 제4 데이터를 상기 비휘발성 메모리에 저장할 수 있다.
상기 휘발성 메모리의 용량은, 상기 제1 스토리지 장치의 버퍼 메모리의 용량 및 상기 제2 스토리지 장치의 버퍼 메모리의 용량의 합보다 클 수 있다.
상기 휘발성 메모리의 용량은, 상기 제1 스토리지 장치의 버퍼 메모리의 용량 및 상기 제2 스토리지 장치의 버퍼 메모리의 용량의 합의 두 배일 수 있다.
상기 컨트롤러는, 상기 휘발성 메모리가 데이터로 가득 차 있는 상태에서 상기 호스트로부터 쓰기 커맨드를 수신하면, 상기 휘발성 메모리에서 가장 오래된 데이터를 저장하고 있는 저장 영역의 데이터를 삭제하고 데이터를 기록할 수 있다.
상기 컨트롤러는, 상기 휘발성 메모리가 데이터로 가득 차 있는 상태에서 상기 호스트로부터 쓰기 커맨드를 수신하면, 상기 휘발성 메모리에서 가장 오래된 데이터를 저장하고 있는 저장 영역에 데이터를 덮어쓸 수 있다.
일 실시예에 따른 전자 장치는, 상기 전자 장치의 동작을 제어하는 호스트; 상기 호스트의 커맨드에 따라 데이터를 처리하는 스토리지 장치; 상기 스토리지 장치에 이상이 발생하면, PLP 동작을 수행하는 PLP 모듈; 및 상기 호스트, 상기 스토리지 장치, 및 상기 PLP 모듈을 연결하고, 상기 커맨드가 읽기 커맨드이면 상기 스토리지 장치에 상기 읽기 커맨드를 전달하고, 상기 커맨드가 쓰기 커맨드 또는 소거 커맨드이면 상기 스토리지 장치 및 상기 PLP 모듈에 상기 쓰기 커맨드 또는 소거 커맨드를 전달하는 인터페이스를 포함한다.
상기 PLP 모듈은, 상기 호스트의 커맨드에 따라 데이터를 처리하는 휘발성 메모리; 상기 스토리지 장치에 이상이 발생하면 상기 휘발성 메모리의 데이터를 저장하는 비휘발성 메모리; 및 상기 스토리지 장치가 이상이 발생하였다가 정상이 되면 상기 비휘발성 메모리에 저장된 데이터를 상기 스토리지 장치에 출력하는 컨트롤러를 포함할 수 있다.
일 실시예에 따른 PLP 동작을 수행하는 방법은 호스트로부터 쓰기 커맨드 또는 소거 커맨드를 수신하는 단계; 상기 쓰기 커맨드 또는 상기 소거 커맨드에 따라 휘발성 메모리를 제어하는 단계; SPO(Sudden Power Off) 상황이 발생하면 커패시터 모듈이 출력하는 전압을 사용하여 상기 휘발성 메모리의 데이터를 비휘발성 메모리에 저장하는 단계; 및 상기 SPO 상황이 해소되면 상기 비휘발성 메모리의 데이터를 출력하는 단계를 포함한다.
도 1은 일 실시예에 따른 전자 장치의 개략적인 블록도이다.
도 2는 일 실시예에 따른 PLP 모듈의 블록도이다.
도 3은 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 스토리지 장치와 PLP 모듈의 동작을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 스토리지 장치와 PLP 모듈의 동작을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 스토리지 장치와 PLP 모듈의 동작을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 스토리지 장치와 PLP 모듈의 동작을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 PLP 모듈의 동작을 설명하기 위한 도면이다.
도 13은 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 도면이다.
도 16은 일 실시예에 따른 전자 장치의 개략적인 블록도이다.
도 17은 일 실시예에 따른 PLP 동작을 수행하는 방법의 순서도이다.
도 18은 일 실시예에 따른 컴퓨터 시스템의 블록도이다.
도 19는 일 실시예에 따른 컴퓨터 시스템의 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
또한, 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다. 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소를 설명하는 데 사용될 수 있지만, 구성요소는 이러한 용어에 의해 한정되지는 않는다. 이들 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다.
도 1은 일 실시예에 따른 전자 장치의 개략적인 블록도이고, 도 2는 일 실시예에 따른 PLP 모듈의 블록도이다.
도 1을 참조하면, 일 실시예에 따른 전자 장치(100)는 호스트(110), 인터페이스(120), 스토리지 장치(130), 및 PLP(Power Loss Protection) 모듈(140)을 포함한다. 어떤 실시예에서, 전자 장치(100)는 개인용 컴퓨터(Personal Computer, PC), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기, 디지털 카메라 등과 같은 사용자 장치들, 또는 내비게이션(navigation), 블랙 박스, 차량용 전장 장치 등과 같은 차량용 장비(automotive device)에 포함될 수 있다. 또는, 전자 장치(100)는 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet Personal Computer), 웨어러블 기기, 헬스케어 기기 또는 사물 인터넷(Internet of Things, IoT) 기기와 같은 모바일(mobile) 시스템일 수 있다.
호스트(110)는 전자 장치(100)의 제반 동작을 제어할 수 있다. 일 실시예에서, 호스트(110)는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), TPU(Tensor Processing Unit), DPU(Data Processing Unit) 등과 같은 다양한 프로세서들 중 하나일 수 있다. 일 실시예에서, 호스트(110)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
호스트(110)는 스토리지 장치(130)에 대한 신호를 생성할 수 있다. 신호는 커맨드와 어드레스를 포함할 수 있다. 어떤 실시예에서, 커맨드들은 기입 커맨드들 또는 판독 커맨드들과 같은 커맨드들을 포함할 수 있다. 어떤 실시예에서, 커맨드는 활성화(activate) 명령, 및 읽기/쓰기 명령을 포함할 수 있다.
활성화 명령은 스토리지 장치(130)에 데이터를 쓰거나 스토리지 장치(130)로부터 데이터를 읽기 위해 스토리지 장치(130) 내의 메모리의 대상 행을 액티브 상태로 전환하는 명령일 수 있다. 읽기/쓰기 명령은 액티브 상태로 전환된 행의 대상 메모리 셀에서 읽기 또는 쓰기 동작을 수행하기 위한 명령일 수 있다.
일 실시예에서, 전자 장치(100)는 호스트(110)와 연결된 메모리를 더 포함하며, 메모리는 전자 장치(100)의 메인 메모리 또는 시스템 메모리로서 사용될 수 있다. 호스트(110)는 메모리를 위한 활성화 명령, 읽기/쓰기 명령, 프리차지(precharge) 명령, 리프레시(refresh) 명령 등의 커맨드를 더 출력할 수 있다. 일 실시예에서, 메모리는 DRAM(Dynamic Random Access Memory) 장치일 수 있으며, DIMM(Dual In-line Memory Module)의 폼 팩터를 가질 수 있다. 그러나 본 발명은 이에 한정되는 것은 아니며, 메모리는 플래시 메모리, PRAM, RRAM, MRAM 등과 같은 비휘발성 메모리를 포함할 수도 있다.
호스트(110), 스토리지 장치(130), 및 PLP 모듈(140)은 동일한 인터페이스(120)를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트(110) 및 스토리지 장치(130)는 인터페이스(120)를 통해 서로 통신할 수 있다. 일 실시예에서, 인터페이스(120)는 일관성(coherency), 메모리 액세스(memory access), 및 입출력 프로토콜(IO protocol)의 동적 프로토콜 다중화(dynamic protocol muxing)를 지원하여 가속기들, 메모리 장치들, 또는 다양한 전자 장치들 사이의 다양한 연결을 가능하게 하는 저지연(low-latency) 및 고대역폭(high-bandwidth) 링크를 가리킬 수 있다. 예를 들어, 인터페이스(120)는 CXL(Compute Express Link) 프로토콜을 사용하는 I/O 스위치(예를 들어, CXL 스위치)로 구현될 수 있다. 또한, 호스트(110), 스토리지 장치(130), 및 PLP 모듈(140)은 GEN-Z 프로토콜, NVLink 프로토콜, CCIX 프로토콜, Open CAPI 프로토콜 등과 같은 다양한 컴퓨팅 인터페이스를 기반으로 서로 통신할 수도 있다.
인터페이스(120)는 커맨드 분배기(125)를 포함할 수 있다. 커맨드 분배기(125)는 호스트(110)의 커맨드를 분배할 수 있다. 예를 들어, 호스트(110)는 스토리지 장치(130)에 커맨드를 전송하고, 커맨드 분배기(125)는 호스트(110)의 커맨드를 스토리지 장치(130)와 PLP 모듈(140)에 분배할 수 있다.
커맨드 분배기(125)는 호스트(110)의 커맨드가 사용자 데이터(user data)와 관련된 커맨드인 경우 커맨드를 분배할 수 있다. 사용자 데이터와 관련된 커맨드는 쓰기 또는 소거를 포함할 수 있다. 예를 들어, 커맨드 분배기(125)는 호스트(110)의 커맨드가 읽기인 경우, 상기 읽기 커맨드를 스토리지 장치(130)에 전송할 수 있다. 이때, 커맨드 분배기(125)는 읽기 커맨드를 PLP 모듈(140)에는 전송하지 않을 수 있다. 커맨드 분배기(125)는 호스트(110)의 커맨드가 쓰기 또는 소거인 경우, 상기 쓰기 또는 소거 커맨드를 스토리지 장치(130) 및 PLP 모듈(140)에 전송할 수 있다.
인터페이스(120), 스토리지 장치(130), 및 PLP 모듈(140)은 디바이스 셀렉터(device selector)를 더 포함할 수 있다. 디바이스 셀렉터는 전자 장치(100)의 일 구성요소(예를 들어, 호스트(110))가 다른 구성요소(예를 들어, 스토리지 장치(130))에 액세스하고자 하는 위치를 설정할 수 있다. 일 예로, 디바이스 셀렉터는 호스트(110)가 액세스하고자 하는 스토리지 장치(130)의 위치 또는 PLP 모듈(140)의 위치를 결정할 수 있다. 디바이스 셀렉터는 결정된 위치에 기초하여 커맨드를 스토리지 장치(130) 또는 PLP 모듈(140)에 전송할 수 있다. 다른 예로, 디바이스 셀렉터는 PLP 모듈(140)이 데이터를 저장하고자 하는 스토리지 장치(130)의 위치를 결정할 수 있다. 디바이스 셀렉터는 결정된 위치에 기초하여 PLP 모듈(140)의 데이터를 스토리지 장치(130)에 전송할 수 있다. 즉, 디바이스 셀렉터를 사용함으로써 스토리지 장치(130)와 PLP 모듈(140) 간 통신이 가능할 수 있다.
스토리지 장치(130)는 컨트롤러 및 메모리를 포함할 수 있다. 스토리지 장치(130)의 컨트롤러는 ASIC(Application Specific Integrated Circuit) 및/또는 FPGA(Field-Programmable Gate Array) 구현을 위해 설계된 IP(Intellectual Property) 회로를 포함할 수 있다. 다양한 실시예에서, 스토리지 장치(130)의 컨트롤러는 CXL 프로토콜(예컨대, CXL 2.0 프로토콜, CXL 3.0 프로토콜, 또는 임의의 다른 버전)을 지원하도록 구현될 수 있다.
스토리지 장치(130)의 메모리는 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. 예를 들어, 스토리지 장치(130)의 메모리는 DRAM(Dynamic Random Access Memory), NAND(Not-AND) 플래시 메모리(flash memory), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM, NVMDIMM(Non-Volatile Memory DIMM), DDR SDRAM(Double Data Rate Synchronous DRAM), 및 LPDDR SDRAM(Low-Power Double Data Rate Synchronous Dynamic Random Access Memory) 중 하나 또는 이들의 조합을 포함할 수 있다.
스토리지 장치(130)는 SPO(Sudden Power Off) 상황에서 자체적으로 PLP 동작을 수행하지 못하는 장치일 수 있다. PLP 동작은 쓰기 동작 또는 소거 동작 중 SPO 상황이 발생한 경우, 쓰기 동작 또는 소거 동작을 정상적으로 완료하기 위한 동작을 의미할 수 있다. 예를 들어, 스토리지 장치(130)는 커패시터 모듈이나 보조 전원 등과 같은 에너지 저장 장치를 포함하지 않을 수 있다. 이에, 스토리지 장치(130)는 SPO 상황이 발생하면 바로 전원이 꺼질 수 있다. PLP 모듈(140)은 SPO 상황이 발생하면 PLP 동작을 수행하고, 이후에 스토리지 장치(130)의 전원이 켜지면 복구 데이터를 전송할 수 있다. 예를 들어, PLP 모듈(140)은 스토리지 장치(130)가 정상적으로 완료하지 못한 커맨드를 처리함으로써 PLP 동작을 수행할 수 있다. PLP 모듈(140)은 인터페이스(120)를 사용하여 스토리지 장치(130)에 PLP 동작을 통해 저장한 복구 데이터를 전송할 수 있다.
자체적으로 PLP 동작을 수행하는 기존 스토리지 장치의 경우, SPO 상황이 발생하면 내부 전원을 사용하여 데이터를 저장하고 전원을 끄기까지 수행해야 하는 내부 동작이 복잡하며 시간이 오래 걸리는 문제가 있었다. 예를 들어, 기존 스토리지 장치는 현재 작업을 중단하기 위한 인터럽트(interrupt) 동작 및 어보트(abort) 동작과, 현재 작업을 정리하고 보고하기 위한 헤더 정보(header information) 및 메타 정보(meta information)를 갱신하는 동작을 수행해야 했다. 반면에, 일 실시예에 따른 전자 장치(100)는 SPO 상황이 발생하면 스토리지 장치(130)는 이러한 동작 없이 바로 전원이 꺼지고, PLP 모듈(140)이 PLP 동작을 수행할 수 있다. 이후에 스토리지 장치(130)가 정상 동작을 수행하면 PLP 모듈(140)이 스토리지 장치(130)에 복구 데이터를 전송할 수 있다. 따라서, 스토리지 장치(130)의 동작을 단순화시켜 개발 난이도를 낮추면서 PLP 모듈(140)을 사용함으로써 안정성을 향상시킬 수 있다.
도 2를 참조하면, PLP 모듈(140)은 휘발성 메모리(Volatile Memory, VM; 141), 비휘발성 메모리(Non-Volatile Memory, NVM; 142), 커패시터 모듈(CAP module; 143), 및 컨트롤러(controller; 144)를 포함할 수 있다.
휘발성 메모리(141)는 호스트(110)로부터 수신하는 데이터를 저장할 수 있다. 예를 들어, 인터페이스(120)는 호스트(110)가 쓰기 커맨드 또는 소거 커맨드를 전송한 경우, 쓰기 커맨드 또는 소거 커맨드와, 이에 대응하는 데이터를 PLP 모듈(140)에 전송할 수 있다. PLP 모듈(140)은 휘발성 메모리(141)에 호스트(110)의 커맨드에 따라 데이터를 저장하거나 소거할 수 있다. 휘발성 메모리(141)는 SPO 상황이 발생하면, 컨트롤러(144)의 제어에 응답하여, 저장하고 있는 데이터를 비휘발성 메모리(142)에 전송할 수 있다.
비휘발성 메모리(142)는 휘발성 메모리(141)가 전송하는 데이터를 저장할 수 있다. 휘발성 메모리(141)는 전원이 꺼지면 데이터가 삭제되는 반면에, 비휘발성 메모리(142)는 전원이 꺼지더라도 데이터를 저장할 수 있다. 이에, PLP 모듈(140)은 스토리지 장치(130)가 전원이 켜진 후에 비휘발성 메모리(142)가 저장하는 데이터를 사용하여 PLP 동작을 수행할 수 있다.
커패시터 모듈(143)은 전하를 충전하고 있을 수 있다. 커패시터 모듈(143)은 SPO 상황이 발생하면 축적된 전하를 사용하여 PLP 모듈(240)을 구동시킬 수 있다. 즉, 휘발성 메모리(141)와 비휘발성 메모리(142)는 커패시터 모듈(143)의 전하에 기초하여 동작할 수 있다. 예를 들어, 휘발성 메모리(141)는 커패시터 모듈(143)이 출력하는 전압에 기초하여 비휘발성 메모리(142)에 데이터를 전송할 수 있다. 비휘발성 메모리(142)는 커패시터 모듈(143)이 출력하는 전압에 기초하여 휘발성 메모리(141)의 데이터를 저장할 수 있다.
도 2에서는 PLP 모듈(140)이 커패시터 모듈(143)을 포함하는 것으로 설명하였으나, 반드시 이에 한정되는 것은 아니고, 커패시터 모듈(143)은 보조 전원 등과 같이 SPO 상황이 발생하면 PLP 모듈(140)에 전력을 공급할 수 있는 구성요소로 구현될 수도 있다.
컨트롤러(144)는 휘발성 메모리(141), 비휘발성 메모리(142), 및 커패시터 모듈(143)의 동작을 제어할 수 있다. 예를 들어, 컨트롤러(144)는 스토리지 장치(130)에 액세스할 수 없는 상황이 발생하면 휘발성 메모리(141)의 데이터를 비휘발성 메모리(143)에 저장할 수 있다. 컨트롤러(144)는 SPO 상황이 발생하면 커패시터 모듈(143)을 동작시켜 휘발성 메모리(141) 및 비휘발성 메모리(142)를 구동시킬 수 있다.
컨트롤러(144)는 스토리지 장치(130)가 액세스 가능한 상황이 되면 비휘발성 메모리(143)의 데이터를 스토리지 장치(130)에 전송할 수 있다. 예를 들어, 스토리지 장치(130)는 전원이 켜지고 컨트롤러(144)에 요청 신호를 전송할 수 있다. 컨트롤러(144)는 요청 신호에 응답하여 비휘발성 메모리(143)의 데이터를 스토리지 장치(130)에 전송할 수 있다.
실시예에 따라, 스토리지 장치(130)는 전원이 켜지면 컨트롤러(144)에 커패시터 모듈(143)의 상태 정보에 대한 요청 신호를 전송할 수 있다. 컨트롤러(144)는 스토리지 장치(130)의 요청 신호에 응답하여 커패시터 모듈(143)의 상태 정보를 전송할 수 있다. 스토리지 장치(130)는 커패시터 모듈(143)의 상태 정보에 기초하여 저장 단위를 결정할 수 있다. 예를 들어, 스토리지 장치(130)는 커패시터 모듈(143)의 상태 정보가 양호하면 저장 단위를 상대적으로 크게 결정하거나 저장 빈도(시간 간격)를 상대적으로 길게 결정할 수 있다. 스토리지 장치(130)는 커패시터 모듈(143)의 상태 정보가 불량하면 저장 단위를 상대적으로 작게 결정하거나 저장 빈도를 상대적으로 짧게 결정할 수 있다.
컨트롤러(144)는 휘발성 메모리(141)의 저장 영역에 데이터가 가득 차 있는 상태에서 호스트(110)로부터 쓰기 커맨드를 수신할 수 있다. 일 실시예에서, 컨트롤러(144)는 휘발성 메모리(141)에서 가장 오래된 데이터를 저장하고 있는 저장 영역의 데이터를 삭제하고 데이터를 기록할 수 있다. 일 실시예에서, 컨트롤러(144)는 휘발성 메모리(141)에서 가장 오래된 데이터를 저장하고 있는 저장 영역에 데이터를 덮어쓸 수 있다.
도 3 내지 도 15는 일 실시예에 따른 전자 장치의 동작을 설명하기 위한 도면이다. 이 중 도 6 내지 9 및 12는 일 실시예에 따른 스토리지 장치와 PLP 모듈의 동작을 설명하기 위한 도면이고, 도 15는 일 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 도면이다.
도 3 내지 도 15에서, 일 실시예에 따른 전자 장치(200)는 호스트(210), 인터페이스(220), 스토리지 장치(230), 및 PLP 모듈(240)을 포함할 수 있다. 도 3 내지 도 15의 전자 장치(200), 호스트(210), 인터페이스(220), 스토리지 장치(230), 및 PLP 모듈(240)은 도 1의 전자 장치(100), 호스트(110), 인터페이스(120), 스토리지 장치(130), 및 PLP 모듈(140)과 실질적으로 동일할 수 있다.
도 3을 참조하면, 일 실시예에 따른 전자 장치(200)는 전원이 켜질 수 있다. 전원이 켜진 PLP 모듈(240)은 스토리지 장치(230)에 상태 정보(STT)를 전송할 수 있다. 예를 들어, 전원이 켜진 스토리지 장치(230)는 PLP 모듈(240)에 상태 정보(STT)를 요청할 수 있다. 스토리지 장치(230)와 PLP 모듈(240)은 인터페이스(220)를 통해 서로 통신할 수 있다. 상태 정보(STT)는 PLP 모듈(240)이 포함하는 커패시터 모듈(또는 보조 전원)의 상태에 대한 정보를 포함할 수 있다. 예를 들어, 상태 정보(STT)는 커패시터 모듈의 캡 헬스(CAP health), 커패시턴스 등을 포함할 수 있다. 캡 헬스는 SPO 상황에서 PLP 모듈(240)이 잔여 동작을 수행하는데 소요되는 시간과 연관될 수 있다. 예를 들어, SPO 상황에서 PLP 모듈(240)의 잔여 시간이 길면 캡 헬스가 상대적으로 좋은 것으로 이해될 수 있다. 커패시턴스는 커패시터 모듈이 축적할 수 있는 전하 용량과 관련될 수 있다.
스토리지 장치(230)는 상태 정보(STT)에 기초하여 동작할 수 있다. 스토리지 장치(230)는 상태 정보(STT)에 기초하여 PLP 모듈(240)의 레벨을 결정할 수 있다. 예를 들어, 스토리지 장치(230)는 상태 정보(STT)와 임계값을 비교하여 PLP 모듈(240)의 레벨을 결정할 수 있다. 실시예에 따라, 복수의 임계값들이 존재하고, 스토리지 장치(230)는 임계값들에 따라 PLP 모듈(240)의 레벨을 결정할 수 있다. 일 실시예에서, PLP 모듈(240)의 레벨은 커패시터 모듈의 충전 상태와 연관될 수 있다. 예를 들어, 커패시터 모듈의 충전 상태가 양호한 경우, 스토리지 장치(230)는 PLP 모듈(240)이 상대적으로 높은 레벨(high level)인 것으로 결정할 수 있다. 커패시터 모듈의 충전 상태가 양호하지 않은 경우, 스토리지 장치(230)는 PLP 모듈(240)이 상대적으로 낮은 레벨(low level)인 것으로 결정할 수 있다.
스토리지 장치(230)는 PLP 모듈(240)이 상대적으로 낮은 레벨인 경우, 제1 저장 단위로 데이터를 저장할 수 있다. 스토리지 장치(230)는 PLP 모듈(240)이 상대적으로 높은 레벨인 경우, 제2 저장 단위로 데이터를 저장할 수 있다. 여기서, 제1 저장 단위는 제2 저장 단위보다 작을 수 있다. 즉, 스토리지 장치(230)는 PLP 모듈(240)이 상대적으로 낮은 레벨이면 작은 크기 단위로 자주 데이터를 저장할 수 있다. 스토리지 장치(230)는 PLP 모듈(240)이 상대적으로 높은 레벨이면 큰 크기 단위로 가끔 데이터를 저장할 수 있다.
도 4를 참조하면, 전자 장치(200)는 전원이 켜진 후 정상 동작을 수행할 수 있다. 예를 들어, 호스트(210)는 스토리지 장치(230)에 커맨드(CMD1)를 전송할 수 있다. 호스트(210)는 인터페이스(220)를 사용하여 스토리지 장치(230)에 액세스할 수 있다. 커맨드(CMD1)는 쓰기 커맨드 또는 소거 커맨드가 아닐 수 있다. 예를 들어, 커맨드(CMD1)는 읽기 커맨드, 로그(log) 데이터 획득 커맨드 등을 포함할 수 있다.
스토리지 장치(230)는 호스트(210)의 커맨드(CMD1)에 응답하여 동작할 수 있다. 예를 들어, 스토리지 장치(230)는 호스트(210)가 요청한 데이터를 호스트(210)에 전송할 수 있다. 스토리지 장치(230)는 인터페이스(220)를 사용하여 호스트(210)와 통신할 수 있다. 실시예에 따라, 스토리지 장치(230)는 호스트(210)의 커맨드(CMD1)에 따라 PLP 모듈(240)에 액세스할 수도 있다. 예를 들어, 스토리지 장치(230)는 인터페이스(220)를 사용하여 PLP 모듈(240)에 신호를 출력할 수 있다.
도 5를 참조하면, 전자 장치(200)는 전원이 켜진 후 정상 동작을 수행할 수 있다. 예를 들어, 호스트(210)는 스토리지 장치(230)에 커맨드(CMD2)를 전송할 수 있다. 호스트(210)는 인터페이스(220)를 사용하여 스토리지 장치(230)에 액세스할 수 있다. 커맨드(CMD2)는 사용자 데이터와 관련된 커맨드일 수 있다. 예를 들어, 커맨드(CMD2)는 쓰기 커맨드, 소거 커맨드, 포맷(format) 커맨드 등을 포함할 수 있다. 일 실시예에서, 쓰기 커맨드는 부분 쓰기(partial write) 커맨드를 포함할 수 있다.
인터페이스(220)는 호스트(210)의 커맨드(CMD2)가 사용자 데이터 관련 커맨드인지 여부를 판정할 수 있다. 인터페이스(220)는 커맨드(CMD2)가 사용자 데이터 관련 커맨드인 경우, PLP 모듈(240)에 커맨드(CMD2)를 전송할 수 있다. 즉, 인터페이스(220)는 커맨드(CMD2)를 스토리지 장치(230)와 PLP 모듈(240)에 출력할 수 있다.
스토리지 장치(230)는 호스트(210)의 커맨드(CMD2)에 응답하여 동작할 수 있다. 예를 들어, 스토리지 장치(230)는 호스트(210)가 요청한 데이터를 기록할 수 있다. 스토리지 장치(230)는 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. 스토리지 장치(230)는 호스트(210)의 데이터를 휘발성 메모리 및/또는 비휘발성 메모리에 기록할 수 있다. 또한, 스토리지 장치(230)는 호스트(210)가 요청한 데이터를 삭제할 수 있다. 스토리지 장치(230)는 커맨드(CMD2)를 처리하고 호스트(210)에 보고할 수 있다. 스토리지 장치(230)는 인터페이스(220)를 사용하여 호스트(210)와 통신할 수 있다.
PLP 모듈(240)은 호스트(210)의 커맨드(CMD2)에 응답하여 동작할 수 있다. 예를 들어, PLP 모듈(240)은 호스트(210)가 요청한 데이터를 기록할 수 있다. PLP 모듈(240)은 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. PLP 모듈(240)은 호스트(210)의 데이터를 휘발성 메모리 및/또는 비휘발성 메모리에 기록할 수 있다.
스토리지 장치(230)의 메모리 용량과 PLP 모듈(240)의 메모리 용량은 동일할 수도 있고, 상이할 수도 있다. 스토리지 장치(230)의 휘발성 메모리의 용량과 PLP 모듈(240)의 휘발성 메모리의 용량이 상이하게 구현되는 경우, PLP 모듈(240)의 휘발성 메모리의 용량은 스토리지 장치(230)의 휘발성 메모리의 버퍼 메모리보다 클 수 있다. 버퍼 메모리는 스토리지 장치(230)가 휘발성 메모리에서 비휘발성 메모리로 데이터를 저장할 때의 저장 단위를 나타내며, 이에 대해서는 도 6 내지 9를 참조하여 후술한다.
또한, PLP 모듈(240)은 호스트(210)가 요청한 데이터를 삭제할 수 있다. PLP 모듈(240)은 커맨드(CMD2)를 처리하고 호스트(210)에 보고할 수 있다. PLP 모듈(240)은 인터페이스(220)를 사용하여 호스트(210)와 통신할 수 있다.
도 6 내지 9는 호스트(210)가 커맨드(CMD3)를 출력한 경우 스토리지 장치(230)와 PLP 모듈(240)의 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 스토리지 장치(230)는 휘발성 메모리(231) 및 비휘발성 메모리(232)를 포함할 수 있다. 스토리지 장치(230)는 비휘발성 메모리(232)에 데이터를 저장하기 전에 휘발성 메모리(231)에 데이터를 저장할 수 있다. 즉, 휘발성 메모리(231)는 스토리지 장치(230)의 버퍼로 동작할 수 있다. PLP 모듈(240)은 휘발성 메모리(241) 및 비휘발성 메모리(242)를 포함할 수 있다. 휘발성 메모리(231)의 용량과 휘발성 메모리(241)의 용량은 상이할 수 있다. 예를 들어, 휘발성 메모리(231)는 저장 영역(310, 320, 및 330)을 포함하고, 휘발성 메모리(241)는 저장 영역(410 및 420)을 포함할 수 있다.
각각의 저장 영역(310, 320, 및 330)은 휘발성 메모리(231)의 버퍼 메모리를 의미할 수 있다. 예를 들어, 저장 영역(310)은 휘발성 메모리(231)의 제1 버퍼 메모리를 의미하고, 저장 영역(320)은 제2 버퍼 메모리를 의미하고, 저장 영역(330)은 제3 버퍼 메모리를 의미할 수 있다. 스토리지 장치(230)는 버퍼 메모리에 데이터가 채워지면, 비휘발성 메모리(232)에 버퍼 메모리의 데이터를 저장할 수 있다. 예를 들어, 휘발성 메모리(231)는 저장 영역(310), 저장 영역(320), 저장 영역(330)의 순서로 데이터를 저장할 수 있다. 휘발성 메모리(231)는 저장 영역(310)이 데이터로 가득 차면, 저장 영역(320)에 데이터를 저장할 수 있다. 또한, 휘발성 메모리(231)는 저장 영역(310)이 데이터로 가득 차면, 저장 영역(310)의 데이터를 비휘발성 메모리(232)에 전달할 수 있다. 마찬가지로, 휘발성 메모리(231)는 저장 영역(320) 및 저장 영역(330)의 데이터를 비휘발성 메모리(232)에 전달할 수 있다.
또한, 각각의 저장 영역(410 및 420)은 휘발성 메모리(241)의 버퍼 메모리를 의미할 수 있다. 예를 들어, 저장 영역(410)은 휘발성 메모리(241)의 제1 버퍼 메모리를 의미하고, 저장 영역(420)은 제2 버퍼 메모리를 의미할 수 있다. 휘발성 메모리(241)는 저장 영역(410), 저장 영역(420)의 순서로 데이터를 저장할 수 있다. 휘발성 메모리(241)는 저장 영역(410)이 데이터로 가득 차면, 저장 영역(420)에 데이터를 저장할 수 있다. 휘발성 메모리(241)는 저장 영역(420)이 데이터로 가득 차면, 가장 오래된 데이터를 저장하고 있는 저장 영역(410)에 데이터를 저장할 수 있다. 휘발성 메모리(241)는 저장 영역(410)에 새로운 데이터를 저장하기 전에 기존에 있던 데이터를 삭제할 수 있다. 휘발성 메모리(241)는 SPO 상황이 발생하면 저장 영역(410 및 420)의 데이터를 비휘발성 메모리(242)에 전달할 수 있다.
도 6에서 휘발성 메모리(231)의 용량과 휘발성 메모리(241)의 용량은 상이한 것으로 도시하였으나, 반드시 이에 한정되는 것은 아니고, 동일하게 구현될 수도 있다.
스토리지 장치(230)와 PLP 모듈(240)은 호스트(210)로부터 커맨드(CMD3)를 수신할 수 있다. 커맨드(CMD3)는 쓰기 커맨드일 수 있다. 스토리지 장치(230)와 PLP 모듈(240)은 커맨드(CMD3)에 따라 동작할 수 있다.
도 7을 참조하면, 스토리지 장치(230)는 휘발성 메모리(231)의 저장 영역(310)에 데이터를 저장할 수 있다. PLP 모듈(240)은 휘발성 메모리(241)의 저장 영역(410)에 데이터를 저장할 수 있다. 스토리지 장치(230)와 PLP 모듈(240)은 인터페이스(220)로부터 동일한 커맨드(CMD3)와 데이터를 수신하므로, 저장 영역(310)과 저장 영역(410)이 저장하는 데이터는 동일할 수 있다.
도 8을 참조하면, 스토리지 장치(230)는 저장 영역(310)에 데이터가 가득 차면 저장 영역(320)에 데이터를 저장할 수 있다. 스토리지 장치(230)는 저장 영역(310)의 데이터를 비휘발성 메모리(232)로 전달할 수 있다. 비휘발성 메모리(232)는 휘발성 메모리(231)로부터 수신한 데이터를 저장할 수 있다. PLP 모듈(240)은 저장 영역(410)에 데이터가 가득 차면 저장 영역(420)에 데이터를 저장할 수 있다. 저장 영역(320)과 저장 영역(420)이 저장하는 데이터는 동일할 수 있다.
도 9를 참조하면, 스토리지 장치(230)는 저장 영역(320)에 데이터가 가득 차면 저장 영역(330)에 데이터를 저장할 수 있다. 스토리지 장치(230)는 저장 영역(320)의 데이터를 비휘발성 메모리(232)로 전달할 수 있다. 비휘발성 메모리(232)는 휘발성 메모리(231)로부터 수신한 데이터를 저장할 수 있다. PLP 모듈(240)은 저장 영역(420)에 데이터가 가득 차면 저장 영역(410)에 데이터를 저장할 수 있다. PLP 모듈(240)은 저장 영역(410)에 새로운 데이터를 저장하기 전에 기존에 있던 데이터를 삭제할 수 있다. 저장 영역(330)과 저장 영역(410)이 저장하는 데이터는 동일할 수 있다.
PLP 모듈(240)은 SPO 상황이 발생하고 새로운 데이터를 저장해야 하는 경우, 저장 영역(410 및 420)의 기존 데이터를 비휘발성 메모리(242)에 저장할 수 있다. PLP 모듈(240)은 새로운 데이터를 저장 영역(410)에 저장한 후 비휘발성 메모리(242)에 저장할 수 있다.
실시예에 따라, PLP 모듈(240)은 저장 영역(410)에 새로운 데이터를 저장할 때 기존에 있던 데이터에 덮어쓰기를 수행하는 것으로 구현될 수 있다.
도 5 내지 도 9에서는 호스트(210)의 커맨드(CMD3)가 쓰기 커맨드인 구성을 설명하였으나, 실시예가 반드시 이에 한정되는 것은 아니고, 호스트(210)의 커맨드가 소거 커맨드인 경우에도 동일한 설명이 적용될 수 있다.
예를 들어, 스토리지 장치(230)는 호스트(210)의 소거 커맨드에 응답하여 휘발성 메모리(231)의 데이터를 소거할 수 있다. PLP 모듈(240)은 호스트(210)의 소거 커맨드에 응답하여 휘발성 메모리(241)의 데이터를 소거할 수 있다. 소거 동작 중 스토리지 장치(230)는 SPO 상황이 발생하여 전원이 꺼질 수 있다. PLP 모듈(240)은 커패시터 모듈을 사용하여 소거 동작을 마무리하고 휘발성 메모리(241)의 데이터를 비휘발성 메모리(242)에 저장할 수 있다. 이후에 스토리지 장치(230)는 전원이 켜지고 PLP 모듈(240)에 요청 신호를 전송할 수 있다. PLP 모듈(240)은 비휘발성 메모리(242)의 데이터를 스토리지 장치(230)에 전달하고, 스토리지 장치(230)는 비휘발성 메모리(242)의 데이터에 기초하여 소거 동작을 완료할 수 있다. 예를 들어, 스토리지 장치(230)는 비휘발성 메모리(242)의 데이터에 기초하여, 소거된 데이터를 제외하고 복원할 수 있다.
도 10을 참조하면, 일 실시예에 따른 전자 장치(200)는 SPO 상황이 발생할 수 있다. 스토리지 장치(230)는 SPO 상황이 발생하면 전원이 꺼질 수 있다. 즉, 호스트(210) 또는 PLP 장치(240)는 스토리지 장치(230)에 액세스하지 못할 수 있다. 이때, PLP 장치(240)는 커패시터 모듈을 사용하여 PLP 동작을 수행할 수 있다. PLP 장치(240)는 스토리지 장치(230)가 전원이 켜지면 데이터를 전달할 수 있다.
도 11을 참조하면, 일 실시예에 따른 전자 장치(200)는 단절(break) 상황(BRK)이 발생할 수 있다. 스토리지 장치(230)는 단절 상황(BRK)이 발생하면 인터페이스(220)와 접속이 끊어질 수 있다. 즉, 호스트(210) 또는 PLP 장치(240)는 스토리지 장치(230)에 액세스하지 못할 수 있다. 이때, PLP 장치(240)는 커패시터 모듈을 사용하여 PLP 동작을 수행할 수 있다. PLP 장치(240)는 스토리지 장치(230)가 전원이 켜지면 데이터를 전달할 수 있다.
도 12를 참조하면, 도 10과 같이 SPO 상황이 발생하거나, 또는 도 11과 같이 단절 상황(BRK)이 발생하는 경우, PLP 모듈(240)은 커패시터 모듈을 사용하여 PLP 동작을 수행할 수 있다. 예를 들어, PLP 모듈(240)은 휘발성 메모리(241)의 저장 영역(410 및 420)이 저장하고 있는 데이터를 비휘발성 메모리(242)에 저장할 수 있다. 즉, PLP 모듈(240)의 커패시터 모듈은 휘발성 메모리(241)의 데이터를 비휘발성 메모리(242)에 저장하는 동안 전압을 공급하도록 충분히 축적된 전하를 가지고 있을 수 있다. PLP 모듈(240)은 휘발성 메모리(241)의 데이터를 모두 비휘발성 메모리(242)에 저장시킨 후 전원이 꺼질 수 있다.
도 13을 참조하면, 전자 장치(200)는 정상 동작을 수행할 수 있다. 일 예로, SPO 상황이 발생한 스토리지 장치(230)는 전원이 켜지어 인터페이스(220)에 접속할 수 있다. 다른 예로, 단절 상황이 발생한 스토리지 장치(230)는 다시 인터페이스(220)에 접속할 수 있다. 스토리지 장치(230)는 전원이 켜지면 SPO 상황이 발생했는지 여부를 확인할 수 있다. 스토리지 장치(230)는 인터페이스(220)에 접속하면 단절 상황이 발생했는지 여부를 확인할 수 있다. 예를 들어, 스토리지 장치(230)는 메타데이터(metadata)를 확인하여 SPO 상황 또는 단절 상황의 발생 여부를 확인할 수 있다.
스토리지 장치(230)는 SPO 상황 또는 단절 상황이 발생한 것을 확인하고, PLP 모듈(240)에 요청 신호(REQ)를 전송할 수 있다. 스토리지 장치(230)는 인터페이스(220)를 통해 PLP 모듈(240)에 액세스할 수 있다. 요청 신호(REQ)는 스토리지 장치(230)가 SPO 상황 또는 단절 상황에서 처리를 완료하지 못한 데이터에 관한 요청을 포함할 수 있다.
도 14를 참조하면, PLP 모듈(240)은 요청 신호(REQ)에 응답하여 복구 데이터(RDAT)를 전송할 수 있다. PLP 모듈(240)은 비휘발성 메모리에 복구 데이터(RDAT)를 저장하고 있을 수 있다. 복구 데이터(RDAT)는 스토리지 장치(230)가 SPO 상황 또는 단절 상황에서 처리를 완료하지 못한 데이터를 의미할 수 있다. PLP 모듈(240)은 인터페이스(220)를 통해 스토리지 장치(230)에 액세스할 수 있다.
스토리지 장치(230)는 복구 데이터(RDAT)를 저장할 수 있다. 예를 들어, 스토리지 장치(230)는 복구 데이터(RDAT)를 휘발성 메모리에 저장하고, 비휘발성 메모리에 저장할 수 있다.
실시예에 따라, PLP 모듈(240)은 비휘발성 메모리가 저장하고 있는 복구 데이터(RDAT)가 없는 경우, 복구 데이터(RDAT)가 없음을 스토리지 장치(230)에 알릴 수 있다. 스토리지 장치(230)는 복구 데이터(RDAT)가 없음을 확인하고 정상 동작을 수행할 수 있다.
도 15를 참조하면, 스토리지 장치(230)는 복구 데이터(RDAT)를 수신할 수 있다. 스토리지 장치(230)는 휘발성 메모리(231)에 복구 데이터(RDAT)를 저장할 수 있다. 예를 들어, 스토리지 장치(230)는 저장 영역(310 및 320)에 복구 데이터(RDAT)를 저장할 수 있다. 스토리지 장치(230)는 휘발성 메모리(231)로부터 비휘발성 메모리(232)에 복구 데이터(RDAT)를 저장할 수 있다.
이와 같이, 스토리지 장치(230)는 SPO 상황 또는 단절 상황이 발생하여 호스트(210)의 커맨드(CMD3)를 불완전하게 처리하고 전원이 꺼지더라도, PLP 모듈(240)은 PLP 동작을 수행하고 스토리지 장치(230)의 전원이 켜지면 복구 데이터(RDAT)를 전송할 수 있다. 따라서, 스토리지 장치(230)는 복구 데이터(RDAT)를 사용하여 커맨드(CMD3)의 처리를 완료할 수 있다. 즉, 스토리지 장치(230)는 별도의 커패시터 모듈 또는 보조 전원이 없더라도 SPO 상황 또는 단절 상황 등에 대응할 수 있으므로, 스토리지 장치(230)의 소모 전력이 감소할 수 있다. 또한, 스토리지 장치(230)는 별도의 커패시터 모듈 또는 보조 전원이 없으므로 펌웨어 기능이 단순화되어 설계 난이도 및 제조 비용이 감소할 수 있다.
도 16은 일 실시예에 따른 전자 장치의 개략적인 블록도이다.
도 16을 참조하면, 일 실시예에 따른 전자 장치(500)는 호스트(510), 인터페이스(520), 복수의 스토리지 장치들(530), 및 PLP 모듈(540)을 포함할 수 있다. 어떤 실시예에서, 전자 장치(500)는 개인용 컴퓨터(PC), 랩탑 컴퓨터, 서버, 미디어 재생기, 디지털 카메라 등과 같은 사용자 장치들, 또는 내비게이션, 블랙 박스, 차량용 전장 장치 등과 같은 차량용 장비에 포함될 수 있다. 또는, 전자 장치(500)는 휴대용 통신 단말기, 스마트폰, 태블릿 PC, 웨어러블 기기, 헬스케어 기기 또는 사물 인터넷(IoT) 기기와 같은 모바일 시스템일 수 있다.
호스트(510)는 전자 장치(500)의 제반 동작을 제어할 수 있다. 일 실시예에서, 호스트(510)는 CPU, GPU, NPU, TPU, DPU 등과 같은 다양한 프로세서들 중 하나일 수 있다. 일 실시예에서, 호스트(510)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
호스트(510)는 복수의 스토리지 장치들(530)에 대한 신호를 생성할 수 있다. 복수의 스토리지 장치들(530)은 제1 내지 제m 스토리지 장치들을 포함할 수 있다. 여기서, m은 1보다 큰 정수일 수 있다. 신호는 커맨드와 어드레스를 포함할 수 있다. 어떤 실시예에서, 커맨드들은 기입 커맨드들 또는 판독 커맨드들과 같은 커맨드들을 포함할 수 있다. 어떤 실시예에서, 커맨드는 활성화 명령, 및 읽기/쓰기 명령을 포함할 수 있다.
활성화 명령은 복수의 스토리지 장치들(530)에 데이터를 쓰거나 복수의 스토리지 장치들(530)로부터 데이터를 읽기 위해 복수의 스토리지 장치들(530) 내의 메모리의 대상 행을 액티브 상태로 전환하는 명령일 수 있다. 읽기/쓰기 명령은 액티브 상태로 전환된 행의 대상 메모리 셀에서 읽기 또는 쓰기 동작을 수행하기 위한 명령일 수 있다.
복수의 스토리지 장치들(530)은 SPO 상황에서 자체적으로 PLP 동작을 수행하지 못하는 장치일 수 있다. 예를 들어, 복수의 스토리지 장치들(530)은 커패시터 모듈이나 보조 전원 등과 같은 에너지 저장 장치를 포함하지 않을 수 있다. 이에, 복수의 스토리지 장치들(530)은 SPO 상황이 발생하면 바로 전원이 꺼질 수 있다. SPO 상황은 개별적으로 발생할 수 있다. 예를 들어, 복수의 스토리지 장치들(530) 중 적어도 하나가 SPO 상황이 발생하여 전원이 꺼질 수 있다. 복수의 스토리지 장치들(530) 중 SPO 상황이 발생하지 않은 장치는 정상적으로 동작할 수 있다.
PLP 모듈(540)은 SPO 상황이 발생하면 SPO 상황이 발생한 스토리지 장치들(예를 들어, 제1 스토리지 장치(530_1) 및 제2 스토리지 장치(530_2))에 대한 PLP 동작을 수행할 수 있다. 예를 들어, PLP 모듈(540)은 제1 스토리지 장치(530_1) 및 제2 스토리지 장치(530_2)가 정상적으로 완료하지 못한 커맨드들을 처리함으로써 PLP 동작을 수행할 수 있다. PLP 모듈(540)은 인터페이스(520)를 사용하여 제1 스토리지 장치(530_1) 및 제2 스토리지 장치(530_2)에 대해 PLP 동작을 수행할 수 있다.
PLP 모듈(540)은 제1 스토리지 장치(530_1)의 데이터와 제2 스토리지 장치(530_2)의 데이터를 구별하여 저장할 수 있다. 예를 들어, PLP 모듈(540)은 제1 스토리지 장치(530_1)의 식별자, 어드레스, 및 데이터를 함께 저장하고, 제2 스토리지 장치(530_2)의 식별자, 어드레스, 및 데이터를 함께 저장할 수 있다. 이에, PLP 모듈(540)은 데이터의 목적지를 확인할 수 있다.
이후에 제1 스토리지 장치(530_1) 및 제2 스토리지 장치(530_2)의 전원이 켜지면 PLP 모듈(540)은 제1 스토리지 장치(530_1) 및 제2 스토리지 장치(530_2)에 PLP 동작을 통해 저장한 복구 데이터를 전송할 수 있다. PLP 모듈(540)은 데이터와 함께 저장된 식별자 및 어드레스에 기초하여 데이터를 제1 스토리지 장치(530_1) 및 제2 스토리지 장치(530_2)에 전송할 수 있다.
실시예에 따라, 전자 장치(500)는 SPO 상황에서 자체적으로 PLP 동작을 수행하는 스토리지 장치를 더 포함할 수 있다. 이 경우, PLP 모듈(540)은 상기 스토리지 장치에 대해서는 PLP 동작을 수행하지 않을 수 있다. 즉, PLP 모듈(540)은 복수의 스토리지 장치들(530)에 대해서만 PLP 동작을 수행할 수 있다.
일 실시예에서, 전자 장치(500)는 호스트(510)와 연결된 메모리를 더 포함하며, 메모리는 전자 장치(500)의 메인 메모리 또는 시스템 메모리로서 사용될 수 있다. 호스트(510)는 메모리를 위한 활성화 명령, 읽기/쓰기 명령, 프리차지 명령, 리프레시 명령 등의 커맨드를 더 출력할 수 있다. 일 실시예에서, 메모리는 DRAM 장치일 수 있으며, DIMM의 폼 팩터를 가질 수 있다. 그러나 본 발명은 이에 한정되는 것은 아니며, 메모리는 플래시 메모리, PRAM, RRAM, MRAM 등과 같은 비휘발성 메모리를 포함할 수도 있다.
호스트(510), 복수의 스토리지 장치들(530), 및 PLP 모듈(540)은 동일한 인터페이스(520)를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트(510) 및 복수의 스토리지 장치들(530)은 인터페이스(520)를 통해 서로 통신할 수 있다. 일 실시예에서, 인터페이스(520)는 일관성, 메모리 액세스, 및 입출력 프로토콜의 동적 프로토콜 다중화를 지원하여 가속기들, 메모리 장치들, 또는 다양한 전자 장치들 사이의 다양한 연결을 가능하게 하는 저지연 및 고대역폭 링크를 가리킬 수 있다. 예를 들어, 인터페이스(520)는 CXL 프로토콜을 사용하는 I/O 스위치(예를 들어, CXL 스위치)로 구현될 수 있다. 또한, 호스트(510), 복수의 스토리지 장치들(530), 및 PLP 모듈(540)은 GEN-Z 프로토콜, NVLink 프로토콜, CCIX 프로토콜, Open CAPI 프로토콜 등과 같은 다양한 컴퓨팅 인터페이스를 기반으로 서로 통신할 수도 있다.
인터페이스(520)는 커맨드 분배기(525)를 포함할 수 있다. 커맨드 분배기(525)는 호스트(510)의 커맨드를 분배할 수 있다. 예를 들어, 호스트(510)는 복수의 스토리지 장치들(530)에 커맨드를 전송하고, 커맨드 분배기(525)는 호스트(510)의 커맨드를 복수의 스토리지 장치들(530)과 PLP 모듈(540)에 분배할 수 있다.
커맨드 분배기(525)는 호스트(510)의 커맨드가 사용자 데이터와 관련된 커맨드인 경우 커맨드를 분배할 수 있다. 사용자 데이터와 관련된 커맨드는 쓰기 또는 소거를 포함할 수 있다. 예를 들어, 커맨드 분배기(525)는 호스트(510)의 커맨드가 읽기인 경우, 읽기 커맨드를 복수의 스토리지 장치들(530) 중 어느 하나에 전송할 수 있다. 이때, 커맨드 분배기(525)는 읽기 커맨드를 PLP 모듈(540)에는 전송하지 않을 수 있다. 커맨드 분배기(525)는 호스트(510)의 커맨드가 쓰기인 경우, 쓰기 커맨드를 복수의 스토리지 장치들(530) 중 어느 하나 및 PLP 모듈(540)에 전송할 수 있다.
인터페이스(520), 복수의 스토리지 장치들(530), 및 PLP 모듈(540)은 디바이스 셀렉터를 더 포함할 수 있다. 디바이스 셀렉터는 전자 장치(500)의 일 구성요소(예를 들어, 호스트(510))가 다른 구성요소(예를 들어, 제1 스토리지 장치(530_1))에 액세스하고자 하는 위치를 설정할 수 있다. 일 예로, 디바이스 셀렉터는 호스트(510)가 액세스하고자 하는 스토리지 장치의 위치 또는 PLP 모듈(540)의 위치를 결정할 수 있다. 디바이스 셀렉터는 결정된 위치에 기초하여 커맨드를 스토리지 장치 또는 PLP 모듈(540)에 전송할 수 있다. 다른 예로, 디바이스 셀렉터는 PLP 모듈(540)이 데이터를 저장하고자 하는 스토리지 장치의 위치를 결정할 수 있다. 디바이스 셀렉터는 결정된 위치에 기초하여 PLP 모듈(540)의 데이터를 스토리지 장치에 전송할 수 있다. 즉, 디바이스 셀렉터를 사용함으로써 복수의 스토리지 장치들(530)과 PLP 모듈(540) 간 통신이 가능할 수 있다.
복수의 스토리지 장치들(530)은 컨트롤러 및 메모리를 포함할 수 있다. 복수의 스토리지 장치들(530)의 컨트롤러는 ASIC 및/또는 FPGA 구현을 위해 설계된 IP 회로를 포함할 수 있다. 다양한 실시예에서, 복수의 스토리지 장치들(530)의 컨트롤러는 CXL 프로토콜(예컨대, CXL 2.0 프로토콜, CXL 3.0 프로토콜, 또는 임의의 다른 버전)을 지원하도록 구현될 수 있다.
복수의 스토리지 장치들(530)의 메모리는 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. 예를 들어, 복수의 스토리지 장치들(530)의 메모리는 DRAM, NAND 플래시 메모리, HBM, HMC, DIMM, Optane DIMM, NVMDIMM, DDR SDRAM, 및 LPDDR SDRAM 중 하나 또는 이들의 조합을 포함할 수 있다.
PLP 모듈(540)의 휘발성 메모리의 용량은 복수의 스토리지 장치들(530)의 휘발성 메모리들의 용량과 연관이 있을 수 있다. 예를 들어, PLP 모듈(540)의 휘발성 메모리의 용량은 복수의 스토리지 장치들(530)의 휘발성 메모리들 각각의 버퍼 메모리의 용량의 합보다 클 수 있다. 일 실시예에서, 복수의 스토리지 장치들(530)의 휘발성 메모리들의 버퍼 메모리들의 용량들은 동일할 수 있다. 다른 실시예에서, 복수의 스토리지 장치들(530)의 휘발성 메모리들의 버퍼 메모리들의 용량들은 상이할 수 있다.
일 실시예에서, PLP 모듈(540)의 휘발성 메모리의 용량과 복수의 스토리지 장치들(530)의 휘발성 메모리들의 용량의 관계는 수학식 1과 같을 수 있다.
여기서, VCM_P는 PLP 모듈(540)의 휘발성 메모리의 용량을 나타내고, BUC_n은 제n 스토리지 장치의 휘발성 메모리의 버퍼 메모리의 용량을 나타낼 수 있다(n은 1 이상 m 이하의 정수). 즉, PLP 모듈(540)의 휘발성 메모리의 용량은, 스토리지 장치들(530)의 휘발성 메모리들의 버퍼 메모리들의 용량들의 합의 두 배보다 크거나 같을 수 있다.
일 실시예에서, PLP 모듈(540)의 휘발성 메모리의 용량과 복수의 스토리지 장치들(530)의 휘발성 메모리들의 용량의 관계는 수학식 2과 같을 수 있다.
여기서, VCM_P는 PLP 모듈(540)의 휘발성 메모리의 용량을 나타내고, BUC_r은 제r 스토리지 장치의 휘발성 메모리의 버퍼 메모리의 용량을 나타내고(r은 1 이상 m 이하의 정수), ir은 제r 스토리지 장치에 대한 미리 결정된 가중치를 나타낼 수 있다. ir은 1 이상의 실수일 수 있다. 즉, PLP 모듈(540)의 휘발성 메모리의 용량은, 스토리지 장치들(530)의 휘발성 메모리들 각각의 버퍼 메모리의 용량에 미리 결정된 가중치를 곱한 값들의 총합보다 크거나 같을 수 있다.
도 16에서는 전자 장치(500)가 하나의 PLP 모듈(540)을 포함하는 것으로 도시하였으나, 반드시 이에 한정되는 것은 아니고, 전자 장치(500)는 복수 개의 PLP 모듈들을 포함하는 것으로 구현될 수도 있다. 이때, 각 PLP 모듈은 적어도 하나의 스토리지 장치에 대해 PLP 동작을 수행할 수 있다.
도 17은 일 실시예에 따른 PLP 동작을 수행하는 방법의 순서도이다.
도 17을 참조하면, 일 실시예에 따른 PLP 동작은 PLP 모듈에 의해 수행될 수 있다. PLP 모듈은 인터페이스를 통해 스토리지 장치와 연결되며 스토리지 장치에 SPO 상황이 발생하면 PLP 동작을 수행하여 스토리지 장치의 데이터의 손상을 방지할 수 있다. 실시예는 SPO 상황에만 한정되는 것이 아니고, 단절 상황 등으로 인해 스토리지 장치에 액세스할 수 없는 경우를 포함할 수 있다.
PLP 모듈은 호스트로부터 쓰기 커맨드 또는 소거 커맨드를 수신할 수 있다(S1710). PLP 모듈과 호스트는 인터페이스를 통해 연결될 수 있다. 인터페이스는 호스트가 출력하는 커맨드가 쓰기 커맨드 또는 소거 커맨드인 경우 커맨드를 스토리지 장치 및 PLP 모듈에 전달할 수 있다. 인터페이스는 호스트가 출력하는 커맨드가 읽기 커맨드인 경우 커맨드를 스토리지 장치에 전달할 수 있다.
PLP 모듈은 쓰기 커맨드 또는 소거 커맨드에 따라 휘발성 메모리를 제어할 수 있다(S1720). 예를 들어, PLP 모듈은 호스트의 쓰기 커맨드에 따라 휘발성 메모리에 데이터를 저장할 수 있다. PLP 모듈은 호스트의 소거 커맨드에 따라 휘발성 메모리에 저장된 데이터를 소거할 수 있다. 이때, 스토리지 장치도 인터페이스에 의해 PLP 모듈과 동일한 커맨드를 수신하므로, PLP 모듈과 동일하게 동작할 수 있다. 예를 들어, 스토리지 장치도 커맨드에 따라 데이터를 저장하거나 소거할 수 있다. 즉, 호스트의 쓰기 커맨드에 따라 스토리지 장치는 A 데이터를 저장하고, PLP 모듈은 A 데이터에 대응하는 A' 데이터를 저장할 수 있다. A 데이터 및 A' 데이터는 실질적으로 동일할 수 있다. 호스트의 소거 커맨드에 따라 스토리지 장치는 B 데이터를 소거하고, PLP 모듈은 B 데이터에 대응하는 B' 데이터를 소거할 수 있다. B 데이터 및 B' 데이터는 실질적으로 동일할 수 있다.
PLP 모듈은 휘발성 메모리가 데이터로 가득 차 있는 상태에서 호스트로부터 쓰기 커맨드를 수신할 수 있다. 일 실시예에서, PLP 모듈은 휘발성 메모리에서 가장 오래된 데이터를 저장하고 있는 저장 영역의 데이터를 삭제하고 데이터를 기록할 수 있다. 이때, PLP 모듈은 삭제되는 데이터를 비휘발성 메모리에 저장하고 관리할 수 있다. 일 실시예에서, PLP 모듈은 휘발성 메모리에서 가장 오래된 데이터를 저장하고 있는 저장 영역에 데이터를 덮어쓸 수 있다.
PLP 모듈의 휘발성 메모리의 용량은 스토리지 장치의 버퍼 메모리의 용량보다 클 수 있다. 스토리지 장치는 복수의 버퍼 메모리를 포함할 수 있다. 버퍼 메모리는 스토리지 장치가 휘발성 메모리에서 비휘발성 메모리로 데이터를 저장할 때의 저장 단위를 나타낼 수 있다. 예를 들어, PLP 모듈의 휘발성 메모리의 용량은 스토리지 장치의 버퍼 메모리의 용량의 두 배일 수 있다. 이에, PLP 모듈이 오래된 데이터를 삭제하고 기록하는 시점, 또는 덮어쓰기를 수행하는 시점에, 스토리지 장치는 버퍼 메모리에서 PLP 모듈의 기존 데이터에 대응하는 스토리지 장치의 데이터를 비휘발성 메모리로 저장했을 수 있다.
실시예에 따라, PLP 모듈은 인터페이스를 통해 복수의 스토리지 장치와 연결될 수 있다. 예를 들어, PLP 모듈은 제1 스토리지 장치 및 제2 스토리지 장치와 연결될 수 있다. 제1 스토리지 장치는 C 데이터를 저장하고, 제2 스토리지 장치는 D 데이터를 저장할 수 있다. PLP 모듈은 휘발성 메모리에 C 데이터에 대응하는 C' 데이터 및 D 데이터에 대응하는 D' 데이터를 저장할 수 있다. C 데이터 및 C' 데이터는 실질적으로 동일하고, D 데이터 및 D' 데이터는 실질적으로 동일할 수 있다. 이때, 휘발성 메모리의 용량은 제1 스토리지 장치의 버퍼 메모리의 용량 및 제2 스토리지 장치의 버퍼 메모리의 용량의 합보다 클 수 있다. 예를 들어, PLP 모듈의 휘발성 메모리의 용량은 제1 스토리지 장치의 버퍼 메모리의 용량 및 제2 스토리지 장치의 버퍼 메모리의 용량의 합의 두 배일 수 있다.
SPO 상황이 발생하면 커패시터 모듈이 출력하는 전압을 사용하여 휘발성 메모리의 데이터를 비휘발성 메모리에 저장할 수 있다(S1730). SPO 상황이 발생하면 스토리지 장치의 전원이 꺼질 수 있다. SPO 상황이 발생하면 PLP 모듈은 커패시터 모듈이 출력하는 전압을 사용하여 동작할 수 있다.
실시예에 따라, PLP 모듈이 복수의 스토리지 장치와 연결된 경우, PLP 모듈은 액세스할 수 없는 스토리지 장치에 대응하는 휘발성 메모리의 데이터를 비휘발성 메모리에 저장할 수 있다. 예를 들어, 복수의 스토리지 장치 중 제1 스토리지 장치가 액세스 불가한 상황이 되고, PLP 모듈은 제1 스토리지 장치의 A 데이터에 대응하는 A' 데이터를 비휘발성 메모리에 저장할 수 있다.
SPO 상황이 해소되면 비휘발성 메모리의 데이터를 출력할 수 있다(S1740). 예를 들어, SPO 상황이 해소되어 스토리지 장치가 액세스 가능한 상황이 되면, PLP 모듈은 비휘발성 메모리의 데이터를 스토리지 장치에 전송할 수 있다. PLP 모듈은 호스트를 경유하지 않고 인터페이스를 통해 스토리지 장치에 액세스할 수 있다.
스토리지 장치는 SPO 상황이 해소되어 전원이 켜지면 PLP 모듈에 요청 신호를 전송할 수 있다. 요청 신호는 스토리지 장치가 SPO 상황에서 처리를 완료하지 못한 데이터에 관한 요청을 포함할 수 있다. PLP 모듈은 스토리지 장치의 요청 신호에 응답하여 비휘발성 메모리의 데이터를 스토리지 장치에 전송할 수 있다.
실시예에 따라, 스토리지 장치는 전원이 켜지면 PLP 모듈에 상태 정보를 요청할 수 있다. 상태 정보는 PLP 모듈의 커패시터 모듈에 대한 상태 정보이며, 스토리지 장치가 저장 단위를 결정하는 것에 사용될 수 있다. PLP 모듈은 스토리지 장치의 상태 정보 요청에 응답하여 상태 정보를 스토리지 장치에 전송할 수 있다.
도 18은 일 실시예에 따른 컴퓨터 시스템의 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다.
도 18을 참조하면, 컴퓨터 시스템(1800)은 호스트(1810), 복수의 메모리들(1820a, 1820b), CXL 스위치(SW_CXL), 복수의 CXL 스토리지들(1830_1~1830_u; u는 1 보다 큰 정수), CXL 메모리(1840), 및 PLP 모듈(1850)을 포함할 수 있다.
호스트(1810)는 복수의 메모리들(1820a, 1820b)과 직접 연결될 수 있다. 호스트(1810), 복수의 CXL 스토리지들(1830_1~1830_u), 및 CXL 메모리(1840)는 CXL 스위치(SW_CXL)와 연결될 수 있고, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다.
일 실시예에서, 복수의 CXL 스토리지들(1830_1~1830_u) 각각은 개별적인 스토리지 장치 또는 스토리지 모듈로 구현될 수 있으며, 서로 다른 물리 포트들을 통해 CXL 스위치(SW_CXL)와 연결될 수 있다. 즉, 복수의 CXL 스토리지들(1830_1~1830_u)이 CXL 스위치(SW_CXL)와 연결됨으로써, 호스트(1810)에 의해 사용 가능한 스토리지 영역이 대용량화 될 수 있다.
복수의 CXL 스토리지들(1830_1~1830_u) 중 하나(예를 들어, 제1 CXL 스토리지(1830_1))는 SPO 상황에서 자체적으로 PLP 동작을 수행하지 못하는 장치일 수 있다. 제1 CXL 스토리지(1830_1)는 SPO 상황에서 전원이 꺼질 수 있다. 제1 CXL 스토리지(1830_1)는 전원이 켜지면 PLP 모듈(1850)로부터 복구 데이터를 수신할 수 있다.
CXL 스위치(SW_CXL)는 호스트(1810)의 커맨드를 제1 CXL 스토리지(1830_1)와 PLP 모듈(1850)에 전달할 수 있다. 예를 들어, CXL 스위치(SW_CXL)는 호스트(1810)의 쓰기 커맨드 또는 소거 커맨드를 제1 CXL 스토리지(1830_1)와 PLP 모듈(1850)에 전달할 수 있다. 이에, 제1 CXL 스토리지(1830_1)와 PLP 모듈(1850)은 유사한 동작을 수행할 수 있다. CXL 스위치(SW_CXL)는 제1 CXL 스토리지(1830_1)와 PLP 모듈(1850)이 서로 통신할 수 있게 하는 인터페이스를 제공할 수 있다. 이에, 제1 CXL 스토리지(1830_1)는 CXL 스위치(SW_CXL)를 통해 PLP 모듈(1850)에 요청 신호를 전송하고, PLP 모듈(1850)은 CXL 스위치(SW_CXL)를 통해 제1 CXL 스토리지(1830_1)에 응답 신호를 전송할 수 있다. 예를 들어, 응답 신호는 상태 정보, 복구 데이터 등을 포함할 수 있다.
일 실시예에서, CXL 메모리(1840)의 적어도 일부 영역은 복수의 CXL 스토리지들(1830_1~1830_u)에 대한 전용 영역으로 할당될 수 있다. 예를 들어, 호스트(1810)는 복수의 CXL 스토리지들(1830_1~1830_u)을 하나의 스토리지 클러스터로 관리할 수 있고, 하나의 스토리지 클러스터에 대하여, CXL 메모리(1840)의 일부 영역을 전용 영역으로 할당할 수 있다. 또는 호스트(1810)는 복수의 CXL 스토리지들(1830_1~1830_u) 각각에 대하여, CXL 메모리(1840)의 일부 영역들을 각각 전용 영역으로서 할당할 수 있다. 실시예에 따라, CXL 메모리(1840)는 복수 개로 구현될 수도 있다.
PLP 모듈(1850)은 도 1 내지 도 17을 참조하여 설명한 PLP 모듈에 대한 설명이 동일하게 적용될 수 있다. 제1 CXL 스토리지(1830_1)에 액세스할 수 없는 상황(예를 들어, SPO 상황 또는 단절 상황 등)이 발생하면, PLP 모듈(1850)은 휘발성 메모리의 데이터를 비휘발성 메모리에 저장할 수 있다. PLP 모듈(1850)은 제1 CXL 스토리지(1830_1)가 액세스 가능한 상황이 되면 비휘발성 메모리에 저장한 데이터를 제1 CXL 스토리지(1830_1)에 전송할 수 있다. 예를 들어, 제1 CXL 스토리지(1830_1)는 정상 상태가 되면 PLP 모듈(1850)에 요청 신호를 전송하고, PLP 모듈(1850)은 요청 신호에 응답하여 데이터를 제1 CXL 스토리지(1830_1)에 전송할 수 있다. 실시예에 따라, PLP 모듈(1850)은 복수 개의 CXL 스토리지에 대해 PLP 동작을 수행할 수도 있다.
도 19는 일 실시예에 따른 컴퓨터 시스템의 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다.
도 19을 참조하면, 컴퓨터 시스템(1900)은 호스트(1910), 스토리지 장치(1920), 및 시스템온칩(System on Chip, SoC; 1930)을 포함할 수 있다.
호스트(1910), 스토리지 장치(1920), 및 시스템온칩(1930)은 CXL 스위치(SW_CXL)와 연결될 수 있고, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다.
CXL 스위치(SW_CXL)는 호스트(1910)의 커맨드를 스토리지 장치(1920)와 시스템온칩(1930)에 전달할 수 있다. 예를 들어, CXL 스위치(SW_CXL)는 호스트(1910)의 쓰기 커맨드 또는 소거 커맨드를 스토리지 장치(1920)와 시스템온칩(1930)에 전달할 수 있다. 이에, 스토리지 장치(1920)와 시스템온칩(1930)은 유사한 동작을 수행할 수 있다. CXL 스위치(SW_CXL)는 스토리지 장치(1920)와 시스템온칩(1930)이 서로 통신할 수 있게 하는 인터페이스를 제공할 수 있다. 이에, 스토리지 장치(1920)는 CXL 스위치(SW_CXL)를 통해 시스템온칩(1930)에 요청 신호를 전송하고, 시스템온칩(1930)은 CXL 스위치(SW_CXL)를 통해 스토리지 장치(1920)에 응답 신호를 전송할 수 있다. 예를 들어, 응답 신호는 상태 정보, 복구 데이터 등을 포함할 수 있다.
스토리지 장치(1920)는 SPO 상황에서 자체적으로 PLP 동작을 수행하지 못하는 장치일 수 있다. 예를 들어, 스토리지 장치(1920)는 커패시터 모듈이나 보조 전원 등과 같은 에너지 저장 장치를 포함하지 않을 수 있다. 이에, 스토리지 장치(1920)는 SPO 상황이 발생하면 바로 전원이 꺼질 수 있다. 스토리지 장치(1920)는 전원이 켜지면 시스템온칩(1930)으로부터 복구 데이터를 수신할 수 있다.
시스템온칩(1930)은 CXL 메모리(1931), CXL 스토리지(1932), 및 PLP 모듈(1933)을 포함할 수 있다. CXL 메모리(1931)는 일반 메모리를 대체하여 사용될 수 있다. 예를 들어, 호스트(1910)는 일반 메모리 대신 CXL 메모리(1931)를 사용함으로써 속도가 향상될 수 있다. CXL 스토리지(1932)는 호스트(1910)가 사용 가능한 스토리지 영역을 확장시킬 수 있다. 즉, 호스트(1910)는 CXL 스위치(SW_CXL)를 통해 스토리지 장치(1920) 및 CXL 스토리지(1932)와 연결됨으로써, 호스트(1910)의 사용 가능한 스토리지 영역이 대용량화 될 수 있다.
PLP 모듈(1933)은 도 1 내지 도 17을 참조하여 설명한 PLP 모듈에 대한 설명이 동일하게 적용될 수 있다. 스토리지 장치(1920)에 액세스할 수 없는 상황(예를 들어, SPO 상황 또는 단절 상황 등)이 발생하면, PLP 모듈(1933)은 휘발성 메모리의 데이터를 비휘발성 메모리에 저장할 수 있다. PLP 모듈(1933)은 스토리지 장치(1920)가 액세스 가능한 상황이 되면 비휘발성 메모리에 저장한 데이터를 스토리지 장치(1920)에 전송할 수 있다. 예를 들어, 스토리지 장치(1920)는 정상 상태가 되면 PLP 모듈(1933)에 요청 신호를 전송하고, PLP 모듈(1933)은 요청 신호에 응답하여 데이터를 스토리지 장치(1920)에 전송할 수 있다. 실시예에 따라, PLP 모듈(1933)은 복수 개의 스토리지 장치에 대해 PLP 동작을 수행할 수도 있다.
일 실시예에서, PLP 모듈(1933)은 CXL 메모리(1931)를 사용하여 PLP 동작을 수행할 수 있다. 예를 들어, 스토리지 장치(1920)와 시스템온칩(1930)은 호스트(1910)의 쓰기 커맨드 또는 소거 커맨드에 따라 데이터를 기록하거나 소거할 수 있다. 이때, SPO 상황 또는 단절 상황 등이 발생하면, 스토리지 장치(1920)는 전원이 꺼지고, 시스템온칩(1930)은 PLP 모듈(1933)의 전원을 사용하여 계속 동작할 수 있다. 이후에 스토리지 장치(1920)의 전원이 켜지면 스토리지 장치(1920)는 시스템온칩(1930)에 요청 신호를 전송할 수 있다. 시스템온칩(1930)은 요청 신호에 응답하여 CXL 메모리(1931)의 데이터를 스토리지 장치(1920)에 전송할 수 있다. 이와 같이, PLP 모듈(1933)은 내부의 비휘발성 메모리를 사용하지 않고 CXL 메모리(1931)에 데이터를 저장하고 관리함으로써 오버헤드가 줄어들 수 있습니다.
어떤 실시예에서, 도 1 내지 도 19를 참고로 하여 설명한 각 구성요소 또는 둘 이상의 구성요소의 조합은 디지털 회로, 프로그램 가능한 또는 프로그램할 수 없는 로직 장치 또는 어레이, 응용 주문형 집적 회로(application specific integrated circuit, ASIC) 등으로 구현될 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 제1 스토리지 장치와 연결되어, 상기 제1 스토리지 장치에 PLP(Power Loss Protection) 동작을 수행하기 위한 PLP 모듈로서,
    호스트의 커맨드에 따라 데이터를 저장하는 휘발성 메모리;
    상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면, 상기 휘발성 메모리의 데이터를 수신하여 저장하는 비휘발성 메모리;
    상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면, 상기 휘발성 메모리 및 상기 비휘발성 메모리에 전압을 공급하는 커패시터 모듈; 및
    상기 휘발성 메모리, 상기 비휘발성 메모리, 및 상기 커패시터 모듈의 동작을 제어하기 위한 컨트롤러
    를 포함하는 PLP 모듈.
  2. 제1항에 있어서,
    상기 휘발성 메모리는 상기 제1 스토리지 장치의 제1 데이터에 대응하는 제2 데이터를 저장하고,
    상기 컨트롤러는,
    상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면 상기 제2 데이터를 상기 비휘발성 메모리에 저장하는,
    PLP 모듈.
  3. 제1항에 있어서,
    상기 PLP 모듈은 인터페이스를 통해 상기 제1 스토리지 장치와 연결되는,
    PLP 모듈.
  4. 제3항에 있어서,
    상기 인터페이스는 상기 호스트의 읽기 커맨드를 상기 제1 스토리지 장치에 전달하고, 상기 호스트의 쓰기 커맨드 또는 소거 커맨드를 상기 제1 스토리지 장치와 상기 PLP 모듈에 전달하는,
    PLP 모듈.
  5. 제1항에 있어서,
    상기 컨트롤러는,
    상기 커패시터 모듈의 상태 정보를 상기 제1 스토리지 장치에 전송하고,
    상기 상태 정보는 상기 제1 스토리지 장치가 저장 단위를 결정하는 것에 사용되는,
    PLP 모듈.
  6. 제1항에 있어서,
    상기 휘발성 메모리의 용량은, 상기 제1 스토리지 장치의 버퍼 메모리의 용량보다 큰,
    PLP 모듈.
  7. 제1항에 있어서,
    상기 PLP 모듈은 제2 스토리지 장치와 더 연결되고,
    상기 휘발성 메모리는 상기 제1 스토리지 장치의 제1 데이터에 대응하는 제2 데이터를 저장하고, 상기 제2 스토리지 장치의 제3 데이터에 대응하는 제4 데이터를 저장하고,
    상기 컨트롤러는,
    상기 제1 스토리지 장치에 액세스할 수 없는 상황이 발생하면 상기 제2 데이터를 상기 비휘발성 메모리에 저장하고, 상기 제2 스토리지 장치에 액세스할 수 없는 상황이 발생하면 상기 제4 데이터를 상기 비휘발성 메모리에 저장하는,
    PLP 모듈.
  8. 제7항에 있어서,
    상기 휘발성 메모리의 용량은, 상기 제1 스토리지 장치의 버퍼 메모리의 용량 및 상기 제2 스토리지 장치의 버퍼 메모리의 용량의 합보다 큰,
    PLP 모듈.
  9. 전자 장치로서,
    상기 전자 장치의 동작을 제어하는 호스트;
    상기 호스트의 커맨드에 따라 데이터를 처리하는 스토리지 장치;
    상기 스토리지 장치에 이상이 발생하면, PLP 동작을 수행하는 PLP 모듈; 및
    상기 호스트, 상기 스토리지 장치, 및 상기 PLP 모듈을 연결하고, 상기 커맨드가 읽기 커맨드이면 상기 스토리지 장치에 상기 읽기 커맨드를 전달하고, 상기 커맨드가 쓰기 커맨드 또는 소거 커맨드이면 상기 스토리지 장치 및 상기 PLP 모듈에 상기 쓰기 커맨드 또는 소거 커맨드를 전달하는 인터페이스
    를 포함하는 전자 장치.
  10. 호스트로부터 쓰기 커맨드 또는 소거 커맨드를 수신하는 단계;
    상기 쓰기 커맨드 또는 상기 소거 커맨드에 따라 휘발성 메모리를 제어하는 단계;
    SPO(Sudden Power Off) 상황이 발생하면 커패시터 모듈이 출력하는 전압을 사용하여 상기 휘발성 메모리의 데이터를 비휘발성 메모리에 저장하는 단계; 및
    상기 SPO 상황이 해소되면 상기 비휘발성 메모리의 데이터를 출력하는 단계
    를 포함하는 PLP 동작을 수행하는 방법.


KR1020230024389A 2023-02-23 2023-02-23 Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치 KR20240131091A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020230024389A KR20240131091A (ko) 2023-02-23 2023-02-23 Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치
US18/367,701 US20240289026A1 (en) 2023-02-23 2023-09-13 Power loss protection (plp) operation and plp module for electronic devices
CN202311247583.3A CN118535078A (zh) 2023-02-23 2023-09-25 用于电子设备的断电保护(plp)操作和plp模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230024389A KR20240131091A (ko) 2023-02-23 2023-02-23 Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치

Publications (1)

Publication Number Publication Date
KR20240131091A true KR20240131091A (ko) 2024-08-30

Family

ID=92393333

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230024389A KR20240131091A (ko) 2023-02-23 2023-02-23 Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치

Country Status (3)

Country Link
US (1) US20240289026A1 (ko)
KR (1) KR20240131091A (ko)
CN (1) CN118535078A (ko)

Also Published As

Publication number Publication date
US20240289026A1 (en) 2024-08-29
CN118535078A (zh) 2024-08-23

Similar Documents

Publication Publication Date Title
TWI709853B (zh) 特定記憶體裝置之自我更新進入與退出技術
CN108154895B (zh) 执行锤击刷新操作和关联操作的存储器设备和存储器系统
TWI735529B (zh) 多階層記憶體之管理的技術
US20180004659A1 (en) Cribbing cache implementing highly compressible data indication
US10740010B2 (en) Memory module and memory system including memory module
US11709777B2 (en) Memory system
US10915254B2 (en) Technologies for contemporaneous access of non-volatile and volatile memory in a memory device
US20180285252A1 (en) Optimized memory access bandwidth devices, systems, and methods for processing low spatial locality data
US11657889B2 (en) Error correction for dynamic data in a memory that is row addressable and column addressable
US12112069B2 (en) Memory module and computing device containing the memory module
US10871915B2 (en) Data processing system and operating method thereof
KR20220111444A (ko) 리프레쉬 동작을 수행하는 메모리 장치, 그 동작방법 및 메모리 시스템
KR20240131091A (ko) Plp 동작을 수행하는 방법, plp 모듈, 및 전자 장치
US20210389885A1 (en) Fast Recovery For Persistent Memory Region (PMR) of a Data Storage Device
US20230236732A1 (en) Memory device
KR20200034312A (ko) 데이터 저장 장치 및 그것의 동작 방법
US12019545B2 (en) Memory system and operating method thereof
US20230376427A1 (en) Memory system and computing system including the same
US20130151766A1 (en) Convergence of memory and storage input/output in digital systems
CN114721980A (zh) 加速器、包括加速器的计算系统以及加速器的操作方法
CN115878367A (zh) 存储器模块的操作方法、存储器控制器的操作方法
CN112817517A (zh) 数据存储装置、其操作方法及使用其的存储系统