KR102669752B1 - 호스트를 이용해 비정상 셧다운을 핸들링하기 위한 ssd 보조 배터리 전력 - Google Patents

호스트를 이용해 비정상 셧다운을 핸들링하기 위한 ssd 보조 배터리 전력 Download PDF

Info

Publication number
KR102669752B1
KR102669752B1 KR1020220062756A KR20220062756A KR102669752B1 KR 102669752 B1 KR102669752 B1 KR 102669752B1 KR 1020220062756 A KR1020220062756 A KR 1020220062756A KR 20220062756 A KR20220062756 A KR 20220062756A KR 102669752 B1 KR102669752 B1 KR 102669752B1
Authority
KR
South Korea
Prior art keywords
power
controller
storage device
memory
power management
Prior art date
Application number
KR1020220062756A
Other languages
English (en)
Other versions
KR20230099605A (ko
Inventor
양 니안
감미엘 한 조다
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20230099605A publication Critical patent/KR20230099605A/ko
Application granted granted Critical
Publication of KR102669752B1 publication Critical patent/KR102669752B1/ko

Links

Classifications

    • 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
    • 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/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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
    • 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/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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/0063Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries with circuits adapted for supplying loads from the battery
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

RAID 시스템에서 전력 제어 및 전력 손실 핸들링을 제공하는 저장 디바이스의 양태들이 제공된다. 저장 디바이스는 메모리, 메모리에 결합된 제어기, 메모리 및 제어기에 결합된 전력 관리 회로, 및 전력 관리 회로에 결합된 재충전가능 배터리를 포함할 수 있다. 제어기는 RAID 제어기에 의해 공급된 전력을 수신하고, 다른 저장 디바이스에 공급된 전력의 손실의 통지를 수신하고, 전력 관리 회로로 하여금 통지에 응답하여 재충전가능 배터리의 충전량을 검출하게 할 수 있다. 전력 관리 회로는 또한 RAID 제어기에 의해 공급된 전력의 다른 손실을 검출하고, 제어기로 하여금 전력의 손실을 나타내는 메시지를 RAID 제어기에 송신하게 하고, 메시지에 응답하여 RAID 제어기로부터 전력을 수신할 수 있다. 그 결과, RAID 내의 UGSD들이 검출되고 해결될 수 있다.

Description

호스트를 이용해 비정상 셧다운을 핸들링하기 위한 SSD 보조 배터리 전력{SSD AUXILIARY BATTERY POWER FOR HANDLING UNGRACEFUL SHUTDOWN WITH HOST}
기술분야
본 개시내용은 대체로 전자 디바이스들에 관한 것으로, 더 구체적으로는, 저장 디바이스들에 관한 것이다.
발명의 배경이 되는 기술
저장 디바이스들은 사용자들이 데이터를 저장 및 취출(retrieve)할 수 있게 한다. 저장 디바이스들의 예들은 비휘발성 메모리 디바이스들을 포함한다. 비휘발성 메모리는 대체적으로 전력 사이클 후에 데이터를 보유한다. 비휘발성 메모리의 일례는 플래시 메모리이며, 이는 하나 이상의 다이들 상에 NAND 셀들의 어레이(들)를 포함할 수 있다. 플래시 메모리는 솔리드 스테이트 디바이스(solid-state device, SSD), 보안 디지털(Secure Digital, SD) 카드 등에서 발견될 수 있다.
플래시 저장 디바이스는 데이터와 연관된 제어 정보를 저장할 수 있다. 예를 들어, 플래시 저장 디바이스는 논리적 어드레스들을 물리적 어드레스들에 맵핑(mapping)하는 것을 포함하는 제어 테이블들을 유지할 수 있다. 이러한 제어 테이블들은 플래시 메모리 내의 논리 섹터들 또는 블록들의 물리적 위치를 추적하는 데 사용된다. 제어 테이블들은 전력 사이클 후에 저장된 데이터에 대한 액세스를 가능하게 하도록 비휘발성 메모리에 저장된다.
플래시 저장 디바이스들은 비휘발성 메모리의 블록들에서 데이터를 판독, 기록, 또는 소거하는 것과 같은 다수의 동작들을 수행할 수 있다. 이러한 동작들 중 많은 것들은 완료하는 데 마이크로초 또는 심지어 밀리초 정도가 걸릴 수 있고; 예를 들어, 전형적인 기록 동작은 완료하는 데 10 ms가 걸릴 수 있다. 이렇게 긴 시간이 지나면, 동작이 여전히 진행 중인 동안에 플래시 저장 디바이스는 전력 손실을 경험하게 될 수 있다. 예를 들어, 플래시 저장 디바이스는 호스트 디바이스로부터 갑자기 연결해제될 수 있거나, 또는 일부 경우들에서, 호스트-레벨 열 충격, 발전소 장애, 또는 해커 공격이 호스트 디바이스로부터의 전력의 공급을 중지할 수 있다. 이러한 전력 손실은 비정상적 셧다운(ungraceful shutdown, UGSD)으로 이어져, 그것의 진행 중인 동작과 관련하여 플래시 저장 디바이스의 불확실한 상태를 초래할 수 있다. 예를 들어, 블록에 대한 기록 동작이 진행 중인 동안 UGSD가 발생하는 경우, 전력이 손실된 시점에 데이터는 전송 중이었을 수 있거나 비휘발성 메모리에 부분적으로만 프로그래밍될 수 있기 때문에, 기록 동작 상태는 불확실할 수 있다. 그 결과, 일단 플래시 저장 디바이스에 전력이 복구되고 블록을 판독하려는 시도가 이루어지면, 블록으로부터 판독된 데이터가 유효한지 또는 이전 데이터가 손실되었는지 또는 프로그래밍되지 않았는지에 대한 불확실성이 존재할 수 있다. 따라서 UGSD를 해결하기 위해 전력-손실 보호(power-loss protection, PLP) 메커니즘을 설계하는 것이 도움이 될 것이다.
저장 디바이스의 일 양태가 본 명세서에 개시된다. 저장 디바이스는 메모리, 메모리에 결합된 제어기, 및 메모리 및 제어기에 결합된 전력 관리 회로를 포함한다. 전력 관리 회로는 복수 배열 독립 디스크(redundant array of independent disks, RAID) 제어기에 의해 공급된 전력의 손실을 검출하고, 제어기로 하여금 전력의 손실을 나타내는 메시지를 RAID 제어기에 송신하게 하고, 메시지에 응답하여 RAID 제어기로부터 전력을 수신하도록 구성된다. 제어기는 RAID 제어기로부터의 전력을 사용하여 데이터를 메모리에 기록하도록 구성된다.
저장 디바이스의 다른 양태가 본 명세서에 개시된다. 저장 디바이스는 메모리, 메모리에 결합된 제어기, 메모리 및 제어기에 결합된 전력 관리 회로, 및 전력 관리 회로에 결합된 재충전가능 배터리를 포함한다. 제어기는 RAID 제어기에 의해 공급된 전력을 수신하고, RAID 제어기에 의해 다른 저장 디바이스에 공급된 전력의 손실의 통지를 수신하고, 통지에 응답하여 재충전가능 배터리의 충전량을 모니터링하도록 구성된다.
저장 디바이스의 추가 양태가 본 명세서에 개시된다. 저장 디바이스는 메모리, 메모리에 결합된 제어기, 메모리 및 제어기에 결합된 전력 관리 회로, 및 전력 관리 회로에 결합된 재충전가능 배터리를 포함한다. 제어기는 RAID 제어기에 의해 공급된 전력을 수신하고, RAID 제어기에 의해 다른 저장 디바이스에 공급된 전력의 손실의 통지를 수신하고, 전력 관리 회로로 하여금 통지에 응답하여 재충전가능 배터리의 충전량을 검출하게 하도록 구성된다. 전력 관리 회로는 RAID 제어기에 의해 공급된 전력의 다른 손실을 검출하고, 제어기로 하여금 전력의 손실을 나타내는 메시지를 RAID 제어기에 송신하게 하고, 메시지에 응답하여 RAID 제어기로부터 전력을 수신하도록 구성된다.
저장 디바이스의 다른 양태들은 하기의 상세한 설명으로부터 당업자에게 용이하게 명백해질 것임이 이해되며, 여기서 장치들 및 방법들의 다양한 양태들이 예시로서 도시되고 설명된다. 실현되는 바와 같이, 이러한 양태들은 다른 그리고 상이한 형태들로 구현될 수 있고, 그의 여러 세부사항들은 다양한 다른 양태들에서 수정될 수 있다. 따라서, 도면 및 상세한 설명은 사실상 예시적인 것으로 간주되어야 하며 제한적인 것은 아니다.
이제, 본 발명의 다양한 양태들이, 첨부 도면을 참조하여, 제한으로서가 아니라 예로서 상세한 설명에서 제시될 것이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 논리적-물리적 맵핑 테이블의 일례를 예시하는 개념도이다.
도 3은 도 1의 저장 디바이스 내의 메모리 셀들의 어레이의 일례를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스 내의 블록들의 어레이의 일례를 예시하는 개념도이다.
도 5는 도 1의 저장 디바이스 내의 3중 레벨 셀들에 대한 전압 분포 차트의 일례를 예시하는 개념도이다.
도 6은 호스트 디바이스와 통신하는 도 1의 저장 디바이스와 같은 저장 디바이스의 일례를 예시하는 개념도이며, 여기서 저장 디바이스는 전력 손실 보호를 위한 재충전가능 배터리들을 포함한다.
도 7은 도 1 및 도 6의 저장 디바이스 내의 전력 관리 회로의 일례를 예시하는 개념도이다.
도 8은 도 1 및 도 6의 저장 디바이스를 포함하는 다수의 저장 디바이스들을 포함하는 RAID 시스템의 일례를 예시하는 개념도이다.
도 9는 도 1, 도 6 및 도 8의 저장 디바이스에 의해 수행되는 것과 같은, 전력 제어를 위한 방법의 일례를 예시하는 흐름도이다.
도 10은 도 1, 도 6 및 도 8의 저장 디바이스에 의해 수행되는 것과 같은, 전력 손실 핸들링을 위한 방법의 일례를 예시하는 흐름도이다.
도 11는 도 1, 도 6 및 도 8의 저장 디바이스에 의해 수행되는 것과 같은, RAID 시스템 내의 전력 제어 및 전력 손실 핸들링을 위한 방법의 일례를 예시하는 흐름도이다.
도 12는 도 1, 도 6 및 도 8의 저장 디바이스에서 RAID 시스템 내의 전력 제어 및 전력 손실 핸들링을 수행하는 제어기의 일례를 예시하는 개념도이다.
첨부된 도면들과 관련하여 하기에서 설명되는 상세한 설명은 본 발명의 다양한 예시적인 실시예들의 설명으로서 의도되며, 본 발명이 실시될 수 있는 유일한 실시예들을 표현하도록 의도되지 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공하려는 목적으로 구체적인 상세사항들을 포함한다. 그러나, 본 발명이 이러한 구체적인 상세사항들 없이 실시될 수 있다는 것은 당업자들에게 명백할 것이다. 일부 경우에, 주지된 구조물들 및 컴포넌트들은 본 발명의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다. 두문자어들 및 다른 서술적 용어는 단지 편의상 그리고 명확함을 위해 사용될 수 있으며, 본 발명의 범주를 제한하도록 의도되지 않는다.
단어들 "예시적" 및 "예"는 본 명세서에서 일례, 사례, 또는 예시의 역할을 의미하는 데 사용된다. 본 명세서에서 "예시적인"으로 기술되는 임의의 예시적인 실시예는 반드시 다른 예시적인 실시예들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 마찬가지로, 장치, 방법 또는 제조 물품의 "예시적인 실시예"라는 용어는 본 발명의 모든 예시적인 실시예들이 기술된 컴포넌트들, 구조, 특징부들, 기능성, 프로세스들, 이점들, 이득들, 또는 동작 모드들을 포함하는 것을 요구하지는 않는다.
본 명세서에 사용되는 바와 같이, 용어 "결합된"은 2개의 컴포넌트들 사이의 직접적인 연결 또는, 적절한 경우, 개재된 또는 중간 컴포넌트들을 통한 서로에 대한 간접적인 연결을 나타내는 데 사용된다. 대조적으로, 컴포넌트가 다른 컴포넌트에 "직접 결합된" 것으로 지칭될 때, 개재된 요소가 존재하지 않는다.
하기의 상세한 설명에서, 호스트 디바이스와 통신하는 저장 디바이스의 다양한 양태들이 제시될 것이다. 이들 양태들은 SSD들 및 SD 카드들과 같은 플래시 저장 디바이스들에 매우 적합하다. 그러나, 당업자는 이러한 양태들이 데이터를 저장할 수 있는 모든 유형들의 저장 디바이스들로 확장될 수 있다는 것을 인식할 것이다. 따라서, 특정 장치 또는 방법에 대한 임의의 언급은, 본 발명의 다양한 양태들이 본 발명의 사상 및 범주로부터 벗어남이 없이 광범위한 응용들을 가질 수 있다는 이해 하에, 단지 그러한 양태들을 예시하도록 의도된다.
저장 디바이스는 데이터를 판독, 기록, 및 소거하는 것과 같은 다수의 동작들을 수행할 수 있다. 이러한 동작들 중 많은 것(예를 들어, 기록 및 소거)은 완료하는 데 수 밀리초가 걸릴 수 있기 때문에, 예를 들어, 진행 중인 동작 동안 저장 디바이스가 호스트 디바이스로부터 전력이 연결해제되는 경우 저장 디바이스는 UGSD를 경험하게 될 수 있다. UGSD는 호스트 데이터가 완전히 프로그래밍되었는지, 부분적으로 프로그래밍되었는지, 또는 손실되었는지와 관련하여 저장 디바이스 내의 데이터의 불확실한 상태로 이어질 수 있으며, 따라서 전력이 후속적으로 플래시 저장 디바이스로 복구될 때 가능한 판독 데이터 오류들로 이어질 수 있다.
UGSD를 해결하기 위한 하나의 PLP 접근법은 전력 손실의 경우에 보충 백업 전력을 제공하려는 시도로 저장 디바이스 전체에 걸쳐 커패시터들을 구현하는 것을 수반할 수 있다. 그러나, 이 접근법은 단독으로는 비효율적일 수 있다. 예를 들어, 커패시터들은 저장 디바이스에서 인쇄 회로 보드(PCB)의 상당한 풋프린트를 차지하는 경향이 있으며, 저장 디바이스가 더 많은 수의 전력 사이클들을 경험함에 따라 수명 또는 신뢰성이 감소할 수 있다. 또한, 더 큰 저장 디바이스들은 더 많은 보충 전력을 필요로 할 수 있고 따라서 더 큰 크기의 커패시터들을 필요로 할 수 있으며, 이는 비용이 많이 드는 것일 수 있다. 따라서, UGSD를 해결하기 위해 보다 효율적인 PLP 접근법을 제공하는 것이 도움이 될 것이다.
이를 위해, 본 개시내용의 저장 디바이스는 일정 기간에 걸쳐 저장 디바이스에 비상 전력을 공급하도록 크기가 정해진, 리튬-이온(Li-ion) 배터리와 같은 저비용의 재충전가능 배터리를 포함할 수 있다. 전력 손실 트리거링 UGSD의 경우, 저장 디바이스의 제어기는 배터리로부터의 비상 전력을 사용하여 그의 진행 중인 동작(들)을 핸들링하여, 저장 디바이스가 UGSD의 효과를 최소화하고 가능하게는 대신에 정상적 셧다운(graceful shutdown, GSD)을 야기할 수 있게 할 수 있다. 예를 들어, 제어기가 블록에 기록될 데이터를 포함하는 기록 커맨드를 호스트 디바이스로부터 수신하는 경우, 제어기는 초기에 그 데이터를 캐시에 저장할 수 있다. 제어기가 캐싱된 데이터를 블록(예를 들어, 다중 레벨 셀 블록)에 기록하고 있는 시간 동안에 전력 손실이 발생하는 경우, 제어기는 배터리로부터의 비상 전력을 인가하여, 캐싱된 데이터를 백업 블록(예를 들어, 단일-레벨 셀 블록)에 기록하고 논리적-물리적 맵핑 또는 파일 시스템 정보와 같은 캐싱된 데이터와 연관된 메타데이터를 저장할 수 있다. 일단 전력이 복구되면, 제어기는 백업 블록으로부터 데이터를 판독하고 그 데이터를 원래 블록(예를 들어, 다중 레벨 셀 블록)에 기록할 수 있다. 따라서, 저장 디바이스는 배터리로부터의 비상 전력을 사용하여 UGSD를 더 효율적으로 해결할 수 있으며, 이는 이전에 설명된 커패시터들보다 더 긴 수명을 가지면서 저장 디바이스의 더 작은 풋프린트를 차지할 수 있다.
저장 디바이스는 저장 디바이스가 호스트 디바이스로부터 전력의 손실을 경험하는지 여부를 검출할 수 있는 전력 관리 회로를 포함할 수 있다. 전력 관리 회로는, 예를 들어, 전력 관리 집적 회로(PMIC) 또는 칩일 수 있지만, 다른 예들에서, 전력 관리 회로는 반드시 집적 칩 내에 있을 필요는 없을 수 있다. 전력 손실이 검출되는 경우, PMIC는 제어기가 그의 진행 중인 동작(들)의 수행을 완료하도록 배터리로부터 저장 디바이스로 비상 전력을 라우팅할 수 있다(예를 들어, 10초의 전력). 예를 들어, 제어기는 캐싱된 데이터를 비휘발성 메모리로(예를 들어, 백업 블록으로) 프로그래밍하는 것을 완료할 뿐만 아니라, 제어 정보 또는 메타데이터를 비휘발성 메모리에 저장할 수 있다. 한편, 전력 손실이 검출되지 않는 경우(예를 들어, 저장 디바이스는 정상적으로 동작하고 있음), PMIC는 배터리가 저장 디바이스에 전력을 공급하는 것을 방지할 수 있다. 예를 들어, PMIC는 전력 손실이 검출되는지 여부에 따라 PMIC가 인에이블 또는 디스에이블할 수 있는 스위치를 통해 배터리에 연결될 수 있다. 또한, 저장 디바이스의 제어기는 이용가능한 충전량을 체크하기 위해 배터리를 주기적으로 모니터링할 수 있다. 예를 들어, 제어기는 전력 손실의 경우에 배터리가 전체 충전 용량으로 유지되는지 확인하기 위해 배터리 전력 체크를 일별로 수행하도록 PMIC를 트리거링할 수 있다. 배터리 전력 체크가 배터리가 전체 충전 용량에 있지 않다고 결정하는 경우(예를 들어, 충전 누출 또는 이전 전력 손실 핸들링으로부터의 사용으로 인해), PMIC는 배터리를 전체 용량(full capacity)으로 재충전할 수 있다.
추가적으로, 다양한 예들에서, 저장 디바이스는 복수 배열 독립/저렴 디스크(RAID)로서 함께 연결된 다수의 저장 디바이스들의 시스템의 일부일 수 있다. RAID 시스템에서, 다수의 저장 디바이스들은 (예를 들어, 공유 버스를 통해) RAID 제어기에 연결될 수 있다. RAID 제어기는 호스트 디바이스 내에 있을 수 있거나, 또는 일부 경우들에서 다른 저장 디바이스(예를 들어, 다수의 저장 디바이스들을 포함하는 데이터 센터) 내에 있을 수 있다. 여기서, 각각의 저장 디바이스는 예를 들어, 저장 디바이스들의 여분 그룹의 일부일 수 있으며, 이때 그룹 내의 각각의 저장 디바이스는 RAID 제어기에 병렬로 연결되고, 그룹 내의 다른 저장 디바이스들을 위해 비휘발성 메모리 내에 그 자신의 데이터 백업을 포함한다. 저장 디바이스 레벨에서의 전력 손실 보호를 보장하기 위해, RAID 시스템 내의 저장 디바이스들 각각은 전술한 전력 관리 회로 및 재충전가능 배터리를 포함할 수 있고, 이전에 설명된 바와 같이 전력 손실 검출, 전력 손실 핸들링, 및 배터리 재충전을 수행할 수 있다. 또한, RAID 제어기가 RAID 시스템 내의 그의 다양한 연결된 저장 디바이스들을 서비스할 수 있도록 호스트 디바이스 레벨에서의 전력 손실 보호를 보장하기 위해, RAID 제어기는 전력 관리 회로 및 재충전가능 배터리에 유사하게 결합될 수 있고, 이전에 설명된 바와 같이 전력 손실 검출, 전력 손실 핸들링, 및 배터리 재충전을 유사하게 수행할 수 있다.
또한, RAID 시스템 내의 임의의 저장 디바이스가 전력을 손실하는 경우, 그 저장 디바이스는 검출된 임박한 전력 손실을 통지하는 메시지를 RAID 제어기에 제공할 수 있다. 예를 들어, 메시지는, 저장 디바이스가 그의 데이터 기록들을 완료하기 위해 그의 배터리로부터의 그의 비상 전력 공급부를 활성화했다는 것, 호스트는 그 사이에 기록될 어떠한 추가 데이터도 저장 디바이스에 송신하지 않아야 한다는 것, 그리고 호스트는 RAID 시스템 내의 다른 저장 디바이스들을 검사하여 이러한 디바이스들이 유사한 전력 손실 상황을 경험하고 있지 않도록 해야 한다는 것을 RAID 제어기에 알릴 수 있다. 메시지에 응답하여, 호스트는 RAID 시스템 내의 다른 저장 디바이스들에 임박한 전력 손실을 통지할 수 있고, 호스트는 다른 저장 디바이스들 각각에게 배터리 전력 체크를 수행하도록 지시하여 디바이스 전력 손실의 경우에 각각의 저장 디바이스의 배터리가 전체 충전 용량에 있도록 할 수 있다. 그 결과, 호스트는, 호스트가 이러한 다른 저장 디바이스들에 데이터를 계속 기록하기 전에, 또는 전력 손실된 저장 디바이스에 대한 데이터가 이러한 다른 저장 디바이스들 중 임의의 것에 백업되기 전에, 다른 저장 디바이스들의 전력 상태를 검증할 수 있다. 그 결과, RAID 시스템에서의 UGSD는 유사하게 해결될 수 있다.
도 1은 예시적인 실시예에 따른, 호스트 디바이스(104)(또한, "호스트")와 통신하는 저장 디바이스(102)의 예시적인 블록도(100)를 도시한다. 호스트(104) 및 저장 디바이스(102)는 컴퓨터 시스템(예컨대, 서버, 데스크톱, 모바일/랩톱, 태블릿, 스마트폰 등)과 같은 시스템을 형성할 수 있다. 도 1의 컴포넌트들은 물리적으로 공동 위치될 수 있거나 또는 공동 위치되지 않을 수 있다. 이와 관련하여, 호스트(104)는 저장 디바이스(102)로부터 원격으로 위치될 수 있다. 도 1은 호스트(104)가 저장 디바이스(102)와는 별개인 것으로 도시되어 있지만, 다른 실시예들에서, 호스트(104)는 전체적으로 또는 부분적으로 저장 디바이스(102) 내에 통합될 수 있다. 대안적으로, 호스트(104)는 그 전체가 다수의 원격 엔티티들에 걸쳐서, 또는 대안적으로, 저장 디바이스(102)에서의 일부 기능성을 갖고서 분산될 수 있다.
당업자는, 다른 예시적인 실시예들이 도 1에 도시된 그들 요소들보다 더 많게 또는 더 적게 포함할 수 있고, 개시된 프로세스들이 다른 환경들에서 구현될 수 있다는 것을 이해할 것이다. 예를 들어, 다른 예시적인 실시예들은 저장 디바이스(102)와 통신하는 상이한 수의 호스트들, 또는 호스트(들)와 통신하는 다수의 저장 디바이스들(102)을 포함할 수 있다.
호스트 디바이스(104)는 저장 디바이스(102)에 데이터를 저장하고/하거나 그로부터 데이터를 취출할 수 있다. 호스트 디바이스(104)는, 예를 들어 컴퓨터 서버, 네트워크 부착 저장소(network attached storage, NAS) 유닛, 데스크톱 컴퓨터, 노트북(예컨대, 랩톱) 컴퓨터, 태블릿 컴퓨터, 스마트폰과 같은 모바일 컴퓨팅 디바이스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스 등을 포함하는 임의의 컴퓨팅 디바이스를 포함할 수 있다. 호스트 디바이스(104)는 적어도 하나의 프로세서(101) 및 호스트 메모리(103)를 포함할 수 있다. 적어도 하나의 프로세서(101)는 데이터를 프로세싱할 수 있는 임의의 형태의 하드웨어를 포함할 수 있고, 범용 프로세싱 유닛(예컨대, 중앙 프로세싱 유닛(central processing unit, CPU)), 전용 하드웨어(예컨대, 주문형 집적 회로(application specific integrated circuit, ASIC)), 디지털 신호 프로세서(digital signal processor, DSP), 구성가능형 하드웨어(예컨대, 필드 프로그래밍가능 게이트 어레이(field programmable gate array, FPGA)), 또는 소프트웨어 명령어들, 펌웨어 등에 의해 구성되는 임의의 다른 형태의 프로세싱 유닛을 포함할 수 있다. 호스트 메모리(103)는, 호스트에 의해 프로세싱되는 데이터 또는 명령어들 또는 저장 디바이스(102)로부터 수신된 데이터를 저장하기 위해 호스트 디바이스(104)에 의해 사용될 수 있다. 일부 예들에서, 호스트 메모리(103)는 비휘발성 메모리, 예컨대 자기 메모리 디바이스들, 광학 메모리 디바이스들, 홀로그래픽 메모리 디바이스들, 플래시 메모리 디바이스들(예컨대, NAND 또는 NOR), 상변화 메모리(phase-change memory, PCM) 디바이스들, 저항성 랜덤 액세스 메모리(resistive random-access memory, ReRAM) 디바이스들, 자기 저항성 랜덤 액세스 메모리(magnetoresistive random-access memory, MRAM) 디바이스들, 강유전성 랜덤 액세스 메모리(ferroelectric random-access memory, F-RAM), 및 임의의 다른 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다. 다른 예들에서, 호스트 메모리(103)는 휘발성 메모리, 예컨대 랜덤 액세스 메모리(random-access memory, RAM), 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 정적 RAM(static RAM, SRAM), 및 동기식 동적 RAM(synchronous dynamic RAM, SDRAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 등)을 포함할 수 있다. 호스트 메모리(103)는, 또한, 함께 통합되든 아니면 별개의 유닛들로서든, 비휘발성 메모리 및 휘발성 메모리 둘 모두를 포함할 수 있다.
호스트 인터페이스(106)는 버스/네트워크(108)를 통해 저장 디바이스(102)를 호스트(104)와 인터페이싱하도록 구성되고, 예를 들어, 이더넷(Ethernet) 또는 와이파이(WiFi), 또는 다른 가능한 후보들 중에서, SATA(Serial Advanced Technology Attachment), PCIe(PCI express), SCSI(Small Computer System Interface), 또는 SAS(Serial Attached SCSI)와 같은 버스 표준을 사용하여 인터페이싱할 수 있다. 대안적으로, 호스트 인터페이스(106)는 무선일 수 있고, 예를 들어 셀룰러 통신(예컨대, 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 등), 액세스 포인트들을 통한 무선 분배 방법들(예컨대, IEEE 802.11, WiFi, HiperLAN 등), 적외선(Infra Red, IR), 블루투스(Bluetooth), 지그비(Zigbee), 또는 다른 무선 광역망(Wireless Wide Area Network, WWAN), 무선 근거리망(Wireless Local Area Network, WLAN), 무선 사설망(Wireless Personal Area Network, WPAN) 기술, 또는 유사한 광역, 근거리, 및 개인 영역 기술들을 사용하여, 저장 디바이스(102)를 호스트(104)와 인터페이싱할 수 있다.
저장 디바이스(102)는 메모리를 포함한다. 예를 들어, 도 1의 예시적인 실시예에서, 저장 디바이스(102)는 호스트(104)로부터 수신된 데이터의 영구 저장을 위해 비휘발성 메모리(NVM)(110)를 포함할 수 있다. NVM(110)은, 예를 들어 플래시 집적 회로들, NAND 메모리(예컨대, 단일 레벨 셀(single-level cell, SLC) 메모리, 다중 레벨 셀(multi-level cell, MLC) 메모리, 3중 레벨 셀(triple-level cell, TLC) 메모리, 4중 레벨 셀(quad-level cell, QLC) 메모리, 5중 레벨 셀(penta-level cell, PLC) 메모리, 또는 이들의 임의의 조합), 또는 NOR 메모리를 포함할 수 있다. NVM(110)은 저장 디바이스(102)를 동작시키기 위한 시스템 데이터 또는 저장 디바이스(102)에 저장하기 위해 호스트로부터 수신된 사용자 데이터를 저장할 수 있는 복수의 메모리 위치들(112)을 포함할 수 있다. 예를 들어, NVM은 n개의 행(row)들 및 m개의 열(column)들을 갖는 메모리 위치들(112)의 2-D NAND 어레이를 포함하는 크로스포인트 아키텍처를 가질 수 있으며, 여기서 mn은 NVM의 크기에 따라 사전정의된다. 도 1의 예시적인 실시예에서, 각각의 메모리 위치(112)는 다수의 셀들(116)의 다수의 블록들을 각각 포함하는 다수의 평면들을 포함하는 다이(114)일 수 있다. 대안적으로, 각각의 메모리 위치(112)는 셀들(116)의 다수의 블록들을 포함하는 평면일 수 있다. 셀들(116)은, 예를 들어 단일 레벨 셀들, 다중 레벨 셀들, 3중 레벨 셀들, 4중 레벨 셀들, 및/또는 5중 레벨 셀들일 수 있다. 메모리 위치들(112)의 다른 예들이 가능하고; 예를 들어, 각각의 메모리 위치는 한 블록 또는 블록들의 그룹일 수 있다. 각각의 메모리 위치는 3-D NAND 어레이 내의 하나 이상의 블록들을 포함할 수 있다. 각각의 메모리 위치(112)는 하나 이상의 물리적 블록들에 맵핑되는 하나 이상의 논리적 블록들을 포함할 수 있다. 대안적으로, 메모리 및 각각의 메모리 위치는 당업자들에게 알려진 다른 방식들로 구현될 수 있다.
저장 디바이스(102)는, 또한, 예를 들어 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있는 휘발성 메모리(118)를 포함한다. 휘발성 메모리(118)에 저장된 데이터는 NVM(110)으로부터 판독되는 데이터 또는 NVM(110)에 기록될 데이터를 포함할 수 있다. 이와 관련하여, 휘발성 메모리(118)는 데이터를 일시적으로 저장하기 위한 기록 버퍼 또는 판독 버퍼를 포함할 수 있다. 도 1은 휘발성 메모리(118)가 저장 디바이스(102)의 제어기(123)로부터 멀리 있는 것으로 도시하고 있지만, 휘발성 메모리(118)는 제어기(123) 내에 통합될 수 있다.
메모리(예컨대, NVM(110))는 호스트 디바이스(104)로부터 수신된 데이터(119)를 저장하도록 구성된다. 데이터(119)는 메모리 위치들(112) 중 임의의 것의 셀들(116)에 저장될 수 있다. 일례로서, 도 1은 데이터(119)가 상이한 메모리 위치들(112)에 저장된 것을 도시하지만, 데이터는 동일한 메모리 위치에 저장될 수도 있다. 다른 예에서, 메모리 위치들(112)은 상이한 다이들일 수 있고, 데이터는 상이한 다이들 중 하나 이상에 저장될 수 있다.
데이터(119) 각각은 논리적 어드레스와 연관될 수 있다. 예를 들어, NVM(110)은 저장 디바이스(102)가 각각의 데이터(119)를 논리적 어드레스와 연관시키기 위한 논리적-물리적(L2P) 맵핑 테이블(120)을 저장할 수 있다. L2P 맵핑 테이블(120)은 호스트(104)로부터 기록된 데이터에 대해 명시된 논리적 어드레스들을, 데이터 각각이 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리적 어드레스들에 맵핑시킨 것을 저장한다. 이러한 맵핑은 저장 디바이스의 제어기(123)에 의해 수행될 수 있다. L2P 맵핑 테이블은 데이터가 저장되는 NVM 내의 각각의 메모리 위치(112)와 연관된 논리적 블록 어드레스(LBA)와 같은 식별자를 포함하는 테이블 또는 다른 데이터 구조일 수 있다. 도 1이 도 1의 개념들을 과도하게 모호하게 하는 것을 회피하기 위해 NVM의 메모리 위치들(112) 중 하나에 저장된 단일 L2P 맵핑 테이블(120)을 도시하고 있지만, L2P 맵핑 테이블(120)은 사실상, NVM의 하나 이상의 메모리 위치들에 저장된 다수의 테이블들을 포함할 수 있다.
도 2는 호스트 디바이스로부터 수신된 데이터(202)를 도 1의 NVM(110) 내의 논리적 어드레스들 및 물리적 어드레스들에 맵핑시키는 것을 예시한 L2P 맵핑 테이블(205)의 일례의 개념도(200)이다. 데이터(202)는 도 1의 데이터(119)에 대응할 수 있는 반면, L2P 맵핑 테이블(205)은 도 1의 L2P 맵핑 테이블(120)에 대응할 수 있다. 하나의 예시적인 실시예에서, 데이터(202)는 하나 이상의 페이지들(204), 예컨대, 페이지 1 내지 페이지 x에 저장될 수 있으며, 여기서 x는 NVM(110)에 기록되고 있는 데이터의 페이지들의 총 수이다. 각각의 페이지(204)는 논리적 블록 어드레스(LBA)(208), NVM에 기록된 데이터와 연관된 물리적 어드레스(210), 및 데이터의 길이(212)를 식별하는 L2P 맵핑 테이블(205)의 하나 이상의 엔트리들(206)과 연관될 수 있다. LBA(208)는 호스트 디바이스로부터 수신된 데이터에 대한 기록 커맨드에서 명시된 논리적 어드레스일 수 있다. 물리적 어드레스(210)는 LBA(208)와 연관된 데이터가 물리적으로 기록되는 오프셋 및 블록을 나타낼 수 있다. 길이(212)는 기록된 데이터의 크기(예컨대, 4 KB 또는 일부 다른 크기)를 나타낼 수 있다.
도 1을 다시 참조하면, 휘발성 메모리(118)는 또한 저장 디바이스(102)를 위한 캐시(122)를 저장한다. 캐시(122)는 호스트(104)에 의해 요청된 데이터에 대해 명시된 논리적 어드레스들을, 데이터가 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리적 어드레스들에 맵핑시킨 것을 보여주는 엔트리들을 포함한다. 이러한 맵핑은 제어기(123)에 의해 수행될 수 있다. 제어기(123)가 데이터(119)에 대한 판독 커맨드 또는 기록 커맨드를 수신할 때, 제어기는 각각의 데이터의 논리적-물리적 맵핑을 위해 캐시(122)를 체크한다. 맵핑이 존재하지 않는 경우(예컨대, 그것이 데이터에 대한 첫 번째 요청인 경우), 제어기는 L2P 맵핑 테이블(120)에 액세스하고 캐시(122) 내에 맵핑을 저장한다. 제어기(123)가 판독 커맨드 또는 기록 커맨드를 실행할 때, 제어기는 캐시로부터의 맵핑에 액세스하고, 명시된 물리적 어드레스에서의 NVM(110)으로부터 데이터를 판독하거나 그에 데이터를 기록한다. 캐시는 데이터가 판독되고 있는 NVM 내의 각각의 메모리 위치(112)와 연관된 논리적 어드레스를 포함하는 테이블 또는 다른 데이터 구조의 형태로 저장될 수 있다.
NVM(110)은 각각의 메모리 위치(112)에 연결된 감지 증폭기들(124) 및 데이터 래치들(126)을 포함한다. 예를 들어, 메모리 위치(112)는 다수의 비트 라인들 상에 셀들(116)을 포함하는 블록일 수 있고, NVM(110)은 각각의 비트 라인 상에 감지 증폭기(124)를 포함할 수 있다. 게다가, 하나 이상의 데이터 래치들(126)은 비트 라인들 및/또는 감지 증폭기들에 연결될 수 있다. 데이터 래치들은, 예를 들어 시프트 레지스터들일 수 있다. 데이터가 메모리 위치(112)의 셀들(116)로부터 판독될 때, 감지 증폭기들(124)은 비트 라인들 상의 전압들을 논리 레벨(예컨대, '0' 또는 '1'로서 판독가능함)로 증폭시킴으로써 데이터를 감지하고, 감지된 데이터는 데이터 래치들(126)에 저장된다. 이어서, 데이터는 데이터 래치들(126)로부터 제어기(123)로 전송되고, 그 후에 데이터는 그가 호스트 디바이스(104)로 전송될 때까지 휘발성 메모리(118)에 저장된다. 데이터가 메모리 위치(112)의 셀들(116)에 기록될 때, 제어기(123)는 데이터 래치들(126)에 프로그래밍된 데이터를 저장하고, 데이터는 후속적으로 데이터 래치들(126)로부터 셀들(116)로 전송된다.
저장 디바이스(102)는, 명령어들을 실행하기 위한 하나 이상의 프로세서들과 같은 회로부를 포함하고 마이크로제어기, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 하드웨어 내장형 로직(hard-wired logic), 아날로그 회로부 및/또는 이들의 조합을 포함할 수 있는 제어기(123)를 포함한다.
제어기(123)는 판독 커맨드에 응답하여 다양한 메모리 위치들(112)의 셀들(116) 중 하나 이상으로부터 전송된 데이터를 수신하도록 구성된다. 예를 들어, 제어기(123)는 셀들(116)로부터 데이터 래치들(126)로의 데이터를 감지하기 위해 감지 증폭기들(124)을 활성화시킴으로써 데이터(119)를 판독할 수 있고, 제어기(123)는 데이터 래치들(126)로부터 데이터를 수신할 수 있다. 제어기(123)는, 또한, 기록 커맨드에 응답하여 셀들(116) 중 하나 이상 내로 데이터를 프로그래밍하도록 구성된다. 예를 들어, 제어기(123)는 데이터를 데이터 래치들(126)로 전송하여 셀들(116) 내로 프로그래밍되게 함으로써 데이터(119)를 기록할 수 있다. 제어기(123)는, 데이터를 판독하거나 셀들(116)에 기록할 때, NVM(110) 내의 L2P 맵핑 테이블(120)에 액세스하도록 추가로 구성된다. 예를 들어, 제어기(123)는 호스트 디바이스(104)로부터의 판독 또는 기록 커맨드들에 응답하여 NVM(110)으로부터 논리적-물리적 어드레스 맵핑들을 수신할 수 있고, 커맨드들에서 식별된 논리적 어드레스들에 맵핑된 물리적 어드레스들을 식별할 수 있고(예컨대, 논리적 어드레스들을 물리적 어드레스들로 변환함), 맵핑된 물리적 어드레스들에 위치된 데이터에 액세스하거나 또는 그에 위치된 셀들(116)에 데이터를 저장할 수 있다.
제어기(123) 및 그의 컴포넌트들은 본 개시내용 전반에 걸쳐서 기술된 제어기의 다양한 기능들을 수행하는 임베디드 소프트웨어로 구현될 수 있다. 대안적으로, 전술된 기능들 및 컴포넌트들 각각을 구현하기 위한 소프트웨어는 NVM(110)에, 또는 저장 디바이스(102) 또는 호스트 디바이스(104) 외부의 메모리에 저장될 수 있고, 제어기(123)의 하나 이상의 프로세서들에 의한 실행을 위해 제어기(123)에 의해 액세스될 수 있다. 대안적으로, 제어기의 기능들 및 컴포넌트들은 제어기(123) 내의 하드웨어로 구현될 수 있거나, 또는 전술된 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다.
동작 시, 호스트 디바이스(104)는 기록될 데이터의 길이뿐만 아니라 하나 이상의 논리적 어드레스들(예컨대, LBA들)을 명시하는 기록 커맨드를 저장 디바이스(102)로 송신함으로써 저장 디바이스(102)에 데이터를 저장한다. 인터페이스 요소(106)는 기록 커맨드를 수신하고, 제어기는 데이터를 저장하기 위해 저장 디바이스(102)의 NVM(110) 내의 메모리 위치(112)를 할당한다. 제어기(123)는, 데이터와 연관된 논리적 어드레스를, 데이터를 위해 할당된 메모리 위치(112)의 물리적 어드레스에 맵핑시킨 L2P 맵핑을 NVM(및 캐시(122))에 저장한다. 제어기는, 또한, L2P 맵핑된 데이터의 길이를 저장한다. 이어서, 제어기(123)는 할당된 메모리 위치에 연결된 하나 이상의 데이터 래치들(126)로 데이터를 송신함으로써 메모리 위치(112)에 데이터를 저장하며, 이로부터 데이터는 셀들(116)에 프로그래밍된다.
호스트(104)는, 판독될 데이터의 길이뿐 아니라 저장 디바이스(102)로부터 취출될 데이터와 연관된 하나 이상의 논리적 어드레스들을 명시하는 판독 커맨드를 전송함으로써 저장 디바이스(102)로부터 데이터를 취출할 수 있다. 인터페이스(106)는 판독 커맨드를 수신하고, 제어기(123)는 캐시(122) 또는 달리 NVM 내의 L2P 맵핑에 액세스하여, 판독 커맨드에 명시된 논리적 어드레스들을, 데이터의 위치를 나타내는 물리적 어드레스들로 변환한다. 이어서, 제어기(123)는, 판독 데이터가 호스트 인터페이스(106)를 통해 호스트(104)로 반환될 때까지 감지 증폭기들(124)을 사용하여 데이터를 감지하고 이들을 데이터 래치들(126)에 저장함으로써 물리적 어드레스들에 의해 명시된 요청된 데이터를 메모리 위치(112)로부터 판독한다.
도 3은 셀들(302)의 NAND 메모리 어레이(300)의 일례를 예시한다. 셀들(302)은 도 1의 NVM(110) 내의 셀들(116)에 대응할 수 있다. 다수의 셀들(302)은 워드 라인들(304) 및 비트 라인들(306)에 결합된다. 예를 들어, 메모리 어레이(300)는 NVM(110)의 다이(114)의 블록 내에 n 개의 워드 라인들 및 m 개의 비트 라인들을 포함할 수 있으며, 여기서 n 및 m은 블록의 크기에 따라 사전정의된다. 각각의 워드 라인 및 비트 라인은, 제어기(123)가 (예컨대, 행 및 열 디코더를 사용하여) 특정 워드 라인들 및 비트 라인들을 선택하는 데 사용할 수 있는, 행 및 열 어드레스와 각각 연관될 수 있다. 예를 들어, 워드 라인들 0 내지 n은 각각 그들 자신의 행 어드레스와 연관될 수 있고(예컨대, 워드 라인 0은 워드 라인 어드레스 0에 대응할 수 있고, 워드 라인 1은 워드 라인 어드레스 1에 대응할 수 있는 등), 비트 라인들 0 내지 m은 각각 그들 자신의 열 어드레스와 연관될 수 있다(예컨대, 비트 라인 0은 비트 라인 어드레스 0에 대응할 수 있고, 비트 라인 1은 비트 라인 어드레스 1에 대응할 수 있는 등). 선택 게이트 소스(select gate source, SGS) 셀들(308) 및 선택 게이트 드레인(select gate drain, SGD) 셀들(310)이 각각의 비트 라인(306) 상의 메모리 셀들(302)에 결합된다. SGS 셀들(308) 및 SGD 셀들(310)은 메모리 셀들(302)을 소스 라인(312)(예컨대, 접지) 및 비트 라인들(306)에 각각 연결시킨다. 스트링(314)은 블록 내의 하나의 비트 라인에 결합된 셀들(302)의 그룹(SGS 및 SGD 셀들(308, 310)을 포함함)을 포함할 수 있는 반면, 페이지(316)는 블록 내의 하나의 워드 라인에 결합된 셀들(302)의 그룹을 포함할 수 있다.
도 4는 다수의 스트링들(404)을 포함하는 블록들(402)의 NAND 메모리 어레이(400)의 일례를 예시한다. 블록들(402)은 도 1의 NVM(110) 내의 다이(114)의 블록들에 대응할 수 있고, 스트링들(404) 각각은 도 3의 스트링(314)에 대응할 수 있다. 도 3의 메모리 어레이(300)에서와 같이, 각각의 스트링(404)은 비트 라인(406)에 각각 결합되고 각자의 워드 라인들(408)에 개별적으로 결합된 메모리 셀들의 그룹을 포함할 수 있다. 유사하게, 각각의 스트링은 각각의 스트링(404) 내의 메모리 셀들을 소스 라인(414) 및 비트 라인(406)에 각각 연결시키는 SGS 셀(410) 및 SGD 셀(412)을 포함할 수 있다.
제어기(123)가 (즉, 워드 라인(304, 408) 상의) 셀들(302)의 페이지(316)로부터 데이터를 판독하거나 그것에 데이터를 기록할 때, 제어기는 판독 전압 또는 프로그래밍 전압을 선택된 워드 라인에 그리고 패스 쓰루 전압(pass through voltage)을 다른 워드 라인들에 인가하기 위한 커맨드를 송신할 수 있다. 이어서, 셀의 판독 또는 프로그래밍된 상태(예컨대, SLC들에 대한 논리 '0' 또는 논리 '1')는 셀들(302)의 임계 전압에 기초하여 결정될 수 있다. 예를 들어, SLC 판독 동작 동안, 셀(302)의 임계 전압이 판독 전압보다 작은 경우(즉, 전류가 판독 전압에 응답하여 셀을 통해 흐름), 제어기(123)는 셀이 논리 '1'을 저장한다고 결정할 수 있고, 한편 셀(302)의 임계 전압이 판독 전압보다 더 큰 경우(즉, 전류가 판독 전압에 응답하여 셀을 통해 흐르지 않음), 제어기(123)는 셀이 논리 '0'을 저장한다고 결정할 수 있다. 유사하게, SLC 프로그래밍 동작 동안, 제어기는, 셀이 임계 전압에 도달할 때까지, 워드 라인(304, 408) 상의 셀(302)에 프로그래밍 전압을 인가하기 위한 커맨드를 송신함으로써 논리 '0'을 저장할 수 있고, 소거 동작 동안, 제어기는, 셀들이 임계 전압 아래로 다시(다시 논리 '1'로) 감소할 때까지, 셀들(302)을 포함하는 블록(402)에 (예컨대, p-웰(p-well)과 같은 셀들의 기판에) 소거 전압을 인가하기 위한 커맨드를 송신할 수 있다.
다수의 비트들을 저장하는 셀들(예를 들어, MLC, TLC 등)의 경우, 각각의 워드 라인(304, 408)은 셀들(302)의 다수의 페이지들(316)을 포함할 수 있고, 제어기는 유사하게, 셀의 임계 전압에 기초하여 셀들의 판독 또는 프로그래밍된 상태를 결정하기 위해 워드 라인들에 판독 또는 프로그래밍 전압을 인가하기 위한 커맨드들을 송신할 수 있다. 예를 들어, TLC들의 경우, 각각의 워드 라인(304, 408)은, TLC에 저장된 상이한 비트들에 각각 대응하는, 하부 페이지(LP), 중간 페이지(MP), 및 상부 페이지(UP)를 포함하는 3개의 페이지들(316)을 포함할 수 있다. 일 예에서, TLC들을 프로그래밍할 때, LP가 먼저 프로그래밍되고, 뒤이어 MP 및 이어서 UP가 프로그래밍될 수 있다. 예를 들어, 셀이 셀의 최하위 비트(LSB)에 대응하는 제1 중간 임계 전압에 도달할 때까지, 프로그래밍 전압이 워드 라인(304, 408) 상의 셀에 인가될 수 있다. 다음으로, LP는 제1 중간 임계 전압을 결정하기 위해 판독될 수 있고, 이어서, 셀이 (LSB와 최상위 비트(MSB) 사이의) 셀의 다음 비트에 대응하는 제2 중간 임계 전압에 도달할 때까지, 프로그래밍 전압이 워드 라인 상의 셀에 인가될 수 있다. 마지막으로, MP는 제2 중간 임계 전압을 결정하기 위해 판독될 수 있고, 이어서, 셀이 셀의 MSB에 대응하는 최종 임계 전압에 도달할 때까지, 프로그래밍 전압이 워드 라인 상의 셀에 인가될 수 있다. 대안적으로, 다른 예들에서, LP, MP, 및 UP가 함께 프로그래밍될 수 있거나(예를 들어, 전체 시퀀스 프로그래밍 또는 포기-파인(Foggy-Fine) 프로그래밍에서), 또는 LP 및 MP가 먼저 프로그래밍되고, 뒤이어 UP(예를 들어, LM-포기-파인 프로그래밍)가 프로그래밍될 수 있다. 유사하게, TLC들을 판독할 때, 제어기(123)는 LP를 판독하여 LSB가 셀의 임계 전압에 따라 논리 0 또는 1을 저장하는지를 결정하고, MP를 판독하여 다음 비트가 셀의 임계 전압에 따라 논리 0 또는 1을 저장하는지를 결정하고, UP를 판독하여 최종 비트가 셀의 임계 전압에 따라 논리 0 또는 1을 저장하는지를 결정할 수 있다.
도 5는 3 비트의 데이터(예를 들어, 논리 000, 001 등으로부터 논리 111까지)를 저장하는 TLC들에 대한 상이한 NAND 상태들을 예시하는 전압 분포 차트(500)의 예를 예시한다. TLC들은 논리 '111'에 대응하는 소거 상태(502) 및 다른 논리 값들 '000 내지 110'에 대응하는 다수의 프로그램 상태들(504)(예를 들어, A 내지 G)을 포함할 수 있다. 프로그램 상태들(504)은 상이한 임계 전압들(506)에 의해 분리될 수 있다. 초기에, 셀들(116, 302)은, 예를 들어 제어기(123)가 셀들을 포함하는 블록(402)을 소거한 후, 소거 상태(502)에 있을 수 있다. 제어기(123)가 전술한 바와 같이 LP들, MP들, 및 UP들을 프로그래밍할 때, 셀들(116, 302)의 전압들은 저장될 논리 값들에 대응하는 임계 전압들(506)이 충족될 때까지 증가될 수 있으며, 이 지점에서 셀들은 그들의 각자의 프로그램 상태들(504)로 전이된다. 도 5는 TLC들에 대한 8개의 NAND 상태들을 예시하지만, 상태들의 수는 각각의 셀(116, 302)에 저장되는 데이터의 양에 따라 상이할 수 있다. 예를 들어, SLC는 2개의 상태를 가질 수 있고(예를 들어, 논리 0 및 논리 1), MLC들은 4개의 상태를 가질 수 있고(예를 들어, 논리 00, 01, 10, 11), QLC들은 16개의 상태를 가질 수 있다(예를 들어, 소거 및 A 내지 N).
제어기(123)가 블록들(402)의 셀들(116, 302) 내의 데이터(119)를 프로그램 상태들(504)로 프로그래밍하고 있는 동안, 제어기는 UGSD를 초래하는 호스트 디바이스(104)로부터의 전력의 손실을 경험할 수 있다. 이러한 전력의 손실을 보완하기 위해, 저장 디바이스(102)는 전력 손실이 검출되는 경우 저장 디바이스에 비상 전력을 공급하는 배터리를 포함할 수 있다. 배터리는 소정 량의 시간에 걸쳐 전력을 공급하도록 크기가 정해질 수 있다. 예를 들어, 배터리는 저장 디바이스에서 0.5 제곱밀리미터의 면적에 걸쳐 있고 10초의 일정한 전력을 생성하도록 설계될 수 있다. 저장 디바이스는 또한, 호스트 디바이스로부터 임박한 전력 손실을 검출하고 핸들링할 수 있는 PMIC와 같은 전력 관리 회로를 포함할 수 있다. 전력 관리 회로는 시간 경과에 따른 전력 감소량에 기초하여 UGSD가 막 발생하려고 하는지 여부를 검출할 수 있다. 예를 들어, 전력 관리 회로가 호스트-공급된 전력이 짧은 기간(예를 들어, 100 μs)에 전체 용량으로부터 75% 용량으로 감소되는 것을 검출하는 경우, 급격한 전력 손실은 호스트-공급된 전력이 곧 0%로 감소할 것임을 전력 관리 회로에 나타낼 수 있다. 이러한 임박한 전력 손실을 해결하기 위해, 전력 관리 회로는 배터리로부터 저장 디바이스의 다른 컴포넌트들(예를 들어, 제어기(123) 및 NVM(110))로 비상 전력을 라우팅할 수 있다. 예를 들어, 전력 관리 회로는 전력 손실 검출에 응답하여 전력 관리 회로가 트리거링할 수 있는 스위치(예를 들어, 트랜지스터 스위치)를 통해 배터리에 결합될 수 있다. 대안적으로, 배터리는 스위치 없이 전력 관리 회로에 결합될 수 있다. 어느 경우든, 배터리는 (전력 관리 회로를 통해) 호스트 디바이스로부터의 전원에 병렬로 연결될 수 있고, 호스트 공급된 전력의 급격한 손실에 응답하여, 배터리는 호스트 대신에 저장 디바이스 컴포넌트들에 비상 전력을 공급할 수 있다. 이러한 방식으로, 제어기는 블록(402)의 셀들(116, 302)에서 데이터(119)의 프로그래밍을 핸들링하기 위한 추가 시간(예를 들어, 비상 전력에 의해 제공되는 10초 또는 다른 시간량)을 획득할 수 있다. 예를 들어, 제어기는 호스트 기록 커맨드에 응답하여 데이터(119)의 프로그래밍을 완료하고, 제어 데이터(예를 들어, L2P 엔트리들), 파일 시스템 업데이트들, 또는 다른 메타데이터를 NVM(110)에 저장하고, 다른 미해결된 동작들을 수행하여 GSD를 야기할 수 있다. 저장 디바이스가 전력이 백업된 후, 저장 디바이스는, 블록(402)에 대한 블록 복구 동작이 일어나고 있거나 완료되었다는 것 또는 호스트가 그 블록에 추가 데이터를 프로그래밍할 수 있다는 것을 호스트 디바이스에 통지하는 것과 같은, 다른 전력 손실 보호 조치를 수행할 수 있다.
또한, 비상 전력을 공급하기 위해 배터리가 사용되고 있지 않을 때마다, 배터리는 재충전될 수 있다. 배터리의 이러한 재충전은 저장 디바이스(102)의 규칙적인 동작일 수 있다. 예를 들어, 매일 또는 다른 구성된 기간에, 전력 관리 회로는 배터리의 현재 충전량을 검출할 수 있다. 검출은 전력 손실 이벤트가 발생하지 않더라도 규칙적으로 발생할 수 있는데, 이는, 배터리가 대기중에 있고 전력을 공급하는 데 사용되고 있지 않더라도 배터리 충전 누설이 여전히 발생할 수 있기 때문이다. 전력 관리 회로가 배터리의 현재 충전량이 전체 용량 미만임을 검출하는 경우, 전력 관리 회로는 전체 용량이 획득될 때까지 배터리를 재충전할 수 있다. 예를 들어, 전력 관리 회로는 저장 디바이스 내의 전류원으로부터의 전류가 배터리에 도달하여 충전할 수 있게 하는 스위치를 트리거링할 수 있다. 따라서, 저장 디바이스(102)는 UGSD를 해결하기 위해 인가될 때 배터리가 완전 충전량으로 이용가능할 가능성을 증가시킬 수 있다. 또한, 일부 경우들에서, 저장 디바이스는, 예를 들어, 배터리와 동일한 시간에 또는 배터리 전력이 고갈되는 경우에, 저장 디바이스에 추가 비상 전력을 추가하기 위해 배터리 및 호스트 전원에 병렬로 배선된 커패시터들을 추가로 포함할 수 있다. 이러한 커패시터들은 전력 손실 검출의 경우에 충분한 비상 전력이 이용가능할 가능성을 증가시키기 위해 규칙적으로 배터리처럼 유사하게 재충전될 수 있다.
도 6은 호스트 디바이스(604)와 통신하는 저장 디바이스(602)의 예(600)를 예시한다. 저장 디바이스(602)는 저장 디바이스(102)에 대응할 수 있고, 호스트 디바이스(604)는 호스트 디바이스(104)에 대응할 수 있다. 저장 디바이스(602)는 NAND 패키지들(예를 들어, 다수의 다이들의 그룹들)을 포함하는 NVM(606)(예를 들어, NVM(110)), 제어기(608)(예를 들어, 제어기(123)), 전력 관리 회로(610)(예를 들어, PMIC), 및 하나 이상의 재충전가능 배터리들(614)(예를 들어, 리튬-이온 배터리들)을 포함하는 배터리 뱅크(612)를 포함할 수 있다. 저장 디바이스는 또한, 일부 경우들에서 DRAM을 포함하여, 예시된 것과 다른 컴포넌트들을 포함할 수 있다. 저장 디바이스(602)는 NVM, 제어기, 전력 관리 회로, 배터리 뱅크, 및 저장 디바이스의 다른 컴포넌트들을 연결시키는 PCB 보드를 포함할 수 있다.
호스트 디바이스(604)는 저장 디바이스에 전력(예를 들어, 3.3 V)을 공급하는 배터리(616) 또는 다른 전원을 포함할 수 있다. 도 6은 호스트 디바이스(604) 내부에 있는 배터리(616)의 예를 예시하지만, 다른 예들에서 배터리(616)는 호스트 디바이스 외부에 있을 수 있다. 전력 관리 회로(610)는 배터리(616) 또는 호스트 디바이스(604)에 의해 공급된 전압을 수신할 수 있고, 전력 관리 회로는 하나 이상의 전압 조정기들을 사용하여 이 전압을 조정하여, 저장 디바이스(602)의 다른 컴포넌트들에 전력을 공급하기 위한 다양한 출력 전압들을 형성할 수 있다. 예를 들어, 전력 관리 회로(610)는 0.8 V의 하나의 조정된 전압을 제어기(608)에, 2.5 V의 다른 조정된 전압을 NVM(606)에, 그리고 1.8 V의 다른 조정된 전압을 DRAM(존재하는 경우)에 공급할 수 있다. 호스트 디바이스는 또한 (예를 들어, 기록 커맨드들에서) NVM(606)에 저장될 데이터(618)(예를 들어, 데이터(119))를 제어기(608)에 제공할 수 있다. 전력 관리 회로(610)에 의해 조정된 호스트-공급된 전력을 사용하여, 제어기(608)는 데이터(618)뿐만 아니라, L2P 엔트리들 및 파일 시스템 업데이트들과 같은 제어 정보(620)(메타데이터)를 NVM(606)에 기록할 수 있다.
UGSD의 경우에, 전력 관리 회로(610)는 호스트 디바이스(604)로부터의 호스트-공급된 전력의 손실을 검출할 수 있다. 이러한 전력 손실 검출에 응답하여, 전력 관리 회로는 배터리 뱅크(612) 내의 재충전가능 배터리들(614)에 의해 공급된 비상 전력(622)을 NVM, 제어기, 및 저장 디바이스(602)의 다른 컴포넌트들로 라우팅할 수 있다. 예를 들어, 전력 관리 회로(610)는 배터리(616)를 배터리 뱅크(612)와 연결시키는, 전력 손실 검출에 응답하여 트리거되는, 스위치를 포함할 수 있다. 그 결과, 전력 관리 회로 내의 전압 조정기들은 배터리 뱅크(612) 내의 재충전가능 배터리들(614)에 의해 공급된 전체 전압을 수신하여, 이에 의해 전력 관리 회로가 UGSD를 해결하기 위해 호스트-공급된 전력과 유사한 방식으로 저장 디바이스의 다른 컴포넌트들에 조정된 비상 전력을 전달할 수 있게 할 수 있다.
도 7은 저장 디바이스(102, 602) 내의 전력 관리 회로(702)(예를 들어, 전력 관리 회로(610))의 예(700)를 예시한다. 추가로 설명되는 바와 같이, 전력 관리 회로(702)는, 전력을 조정하고 저장 디바이스(102, 602)의 다양한 컴포넌트들에 공급하는 것, (예를 들어, 호스트 디바이스(104, 604) 내의) 배터리(614)에 의해 공급된 전력의 손실을 검출하는 것, 검출된 전력 손실에 응답하여 배터리 뱅크(612)로부터 저장 디바이스의 다양한 컴포넌트들로 비상 전력을 라우팅하는 것, 배터리 뱅크 내의 재충전가능 배터리들(614)의 충전량의 감소를 검출하는 것, 및 검출된 충전량 감소에 응답하여 재충전가능 배터리들을 재충전하는 것을 포함하는, 다양한 기능들을 수행하도록 구성될 수 있다. 이러한 기능들 각각을 수행하기 위해, 전력 관리 회로(702)는 도 7의 예에 예시된 바와 같은 다양한 입력들, 출력들, 배선, 및 구조적 컴포넌트들을 포함할 수 있다. 그러나, 도 7의 예에서의 컴포넌트들의 구조 및 배열은, 전력 관리 회로가 도시된 것들과 상이한 입력들, 출력들, 배선 또는 다른 구조적 컴포넌트들에 기초하여 전술한 기능들을 수행하도록 구성될 수 있기 때문에, 단지 본질적으로 예시적인 것으로 의도되고 제한하지 않는다는 점에 유의해야 한다.
일 예에서, 전원 관리 회로(702)는 배터리(614)로부터 전력 공급부(704)에 대응하는 입력 전압(Vin)을 수신할 수 있다. 이전에 설명된 바와 같이, 배터리(614)는 호스트 디바이스(604)의 내부 또는 외부에 있을 수 있다. 대안적으로, 전원 공급부(704)는, 도 8과 관련하여 아래에서 추가로 설명되는 바와 같이, RAID 시스템 내의 RAID 제어기로부터 유래할 수 있다. 전력 관리 회로(702)는, 입력 전압(Vin)을 수신하고 이를 저장 디바이스(602)의 다양한 컴포넌트들에 대해 조정하는 전압 조정기들(706)을 포함할 수 있다. 예를 들어, 전력 관리 회로는 제어기로의 전달을 위해 3.3 V의 Vin을 0.8 V의 Vout로 변환하는 하나의 전압 조정기, 및 NVM으로의 전달을 위해 3.3 V의 Vin을 2.5 V의 다른 Vout로 변환하는 다른 전압 조정기를 포함할 수 있다. NVM이 다수의 채널들(예를 들어, 하나의 채널은 패키지의 하나 또는 2개의 다이에 연결됨)을 포함하는 다수의 NAND 패키지들을 갖는 다중-채널 디바이스에서, 전압 조정기들(706)은 NVM 내의 상이한 채널들로의 전달을 위해 하나 이상의 전압들을 출력할 수 있다. 예를 들어, 도 7의 예시된 예에서, 전압 조정기들(706)은 동일한 출력 전압 Vout 또는 상이한 출력 전압들 Vout1.N을 N개의 채널들로 출력할 수 있으며, 여기서 N은 NVM 내의 주어진 채널 수이다. 제어기는 또한, 특정 채널의 Vout이 전압 조정기들로부터 출력되는지 여부를 제어하는 채널 인에이블 신호를 전력 관리 회로에 제공할 수 있다. 예를 들어, 각각의 채널은 채널 인에이블 신호의 값에 응답하여 인에이블되거나 디스에이블되는 채널 인에이블 스위치(도 7에서 EN으로 도시됨)에 결합될 수 있다. 이러한 방식으로, 제어기는 (예를 들어, 다른 채널(들)에 대한 스위치들/전력을 디스에이블함으로써) 특정 채널로 전달되는 전력의 양을 제어하도록 전력 관리 회로를 구성할 수 있다.
전력 관리 회로(702)는 호스트/RAID-제어기 공급된 전력의 손실이 발생하여 임박한 UGSD를 초래했는지 여부를 검출하도록 구성된 전력 손실 검출기(708)를 포함할 수 있다. 일 예에서, 전력 손실 검출기는, 입력 전압(Vin)(수신된 전력 공급부에 대응함)을 호스트 전압 기준(Vref)(전력 손실 검출에 대한 전압 임계치에 대응함)과 비교하고 비교기 결과에 응답하여 전력 스위치 인에이블 신호를 출력하는 비교기일 수 있다. 비상 전력 스위치(710)는 또한 (예를 들어, 트랜지스터 스위치의 게이트에서) 전력 손실 검출기로부터 전력 스위치 인에이블 신호를 수신할 수 있고, 비상 전력 스위치는 전력 스위치 인에이블 신호의 값에 따라 전력 공급 라인(Vin)과 배터리 뱅크 라인(Vin2)을 결합 또는 결합-해제하도록(예를 들어, 트랜지스터 스위치의 소스와 드레인을 결합시킴) 구성될 수 있다.
전력 손실 검출기(708)는 또한, 제어기가 전력 손실 검출 커맨드에 응답하여 비교기를 인에이블 또는 디스에이블하는 데 사용할 수 있는 검출기 인에이블 입력을 포함할 수 있다. 예를 들어, 제어기가 전력 손실 검출기를 인에이블하는(예를 들어, 검출기 인에이블 입력에 값 '1'을 전송함) 전력 손실 검출 커맨드를 제공하는 경우, 전력 손실 검출기는 Vin을 Vref와 비교하고 그에 따라 전력 스위치 인에이블 신호를 출력할 수 있는 반면, 제어기가 전력 손실 검출 커맨드를 제공하지 않는 경우(예를 들어, 검출기 인에이블 입력을 값 '0'으로 전송하거나 남겨둠), 전력 스위치 인에이블 신호는 Vin에도 불구하고 전력 공급 라인과 배터리 뱅크 라인의 결합-해제를 유지하도록 고정될 수 있다. 대안적으로, 전력 관리 회로는 펌웨어 또는 하드웨어, 또는 펌웨어와 하드웨어의 조합을 포함할 수 있으며, 이는 제어기 대신에 전력 손실 검출 커맨드를 제공한다.
동작의 일 예에서(전력 손실 검출기가 인에이블되는 것으로 가정함), Vin > Vref인 경우, 전력 손실 검출기/비교기는 전력 스위치 인에이블 신호에 대한 하나의 값(예를 들어, 0)을 출력하여 급격한 전력 손실이 발생하지 않았음을 나타낼 수 있으며, 이에 의해 비상 전력 스위치를 디스에이블하고 전력 공급 라인과 배터리 뱅크 라인을 결합-해제할 수 있다. 이러한 방식으로, 배터리 뱅크는, 비상 전력이 필요하지 않기 때문에 저장 디바이스의 다른 컴포넌트들로부터 연결해제된 상태로 유지된다. 반면에, Vin < Vref인 경우, 비교기는 전력 스위치 인에이블 신호에 대한 다른 값(예를 들어, 1)을 출력하여 급격한 전력 손실이 발생했음을 나타낼 수 있으며, 이에 의해 비상 전력 스위치를 인에이블하고 전력 공급 라인과 배터리 뱅크 라인을 결합시킬 수 있다. 이러한 방식으로, 배터리 뱅크는 UGSD가 발생할 때 저장 디바이스 컴포넌트들에 비상 전력을 공급하기 위해 저장 디바이스의 다른 컴포넌트들에 연결될 수 있다.
예를 들어, 전력 손실 검출기(708)가 전력의 25% 감소를 검출하도록 구성되고 Vin이 3.3 V인 일 예에서, Vref는 2.5 V(예를 들어, Vin의 75%)가 되도록 구성될 수 있다. 일반적으로, Vin = 3.3 V > Vref = 2.5 V이므로, 비상 전력 스위치는 디스에이블될 것이고, 전력 공급 라인(예를 들어, Vin)만이 전압 조정기들에 연결되어 저장 디바이스의 다양한 컴포넌트로 전달된다. 나중에 저장 디바이스가 예상치 못하게 호스트 디바이스로부터 연결해제되거나 일부 다른 시나리오가 발생하여 Vin이 Vref 미만으로(< 2.5 V) 강하하게 되는 경우, 비상 전력 스위치는 인에이블될 것이고 배터리 뱅크 라인(예를 들어, Vin2)은 이제 전압 조정기들에 연결될 것이다. 따라서, 비상 전력은 이제 저장 디바이스의 다양한 컴포넌트들로 전달될 수 있다.
또한, 전력 손실 검출기(708)의 출력(전력 스위치 인에이블 신호)은 RAID 시스템에서 메시지 트리거로서 제어기로 전송될 수 있다. 예를 들어, 비교기의 출력이 전력의 급격한 손실이 발생했음을 나타내는 경우(예를 들어, 전력 스위치 인에이블 신호의 값이 1임), 저장 디바이스의 제어기는 전력 손실 검출을 나타내는 메시지를 (예를 들어, 호스트 디바이스의 내부 또는 외부에 있는) RAID 제어기에 제공할 수 있다. RAID 시스템에서 이 메시지에 대한 더 많은 세부사항들은 도 8과 관련하여 아래에서 설명된다.
전력 관리 회로(702)는 또한 배터리 공급된 전력(Vin2)의 손실이 발생했는지 여부를 검출하도록 구성된 배터리 충전 검출기(712)를 포함할 수 있다. 일 예에서, 배터리 충전 검출기는, 입력 전압(Vin2)(비상 전력 공급부에 대응함)을 배터리 전압 기준(Vrefb)(배터리 손실 검출에 대한 전압 임계치에 대응함)과 비교하고 비교기 결과에 응답하여 재충전 스위치 인에이블 신호를 출력하는 비교기일 수 있다. 배터리 재충전 스위치(714)는 또한 (예를 들어, 트랜지스터 스위치의 게이트에서) 배터리 충전 검출기로부터 재충전 스위치 인에이블 신호를 수신할 수 있고, 배터리 재충전 스위치는 재충전 스위치 인에이블 신호의 값에 따라 전류원(716)과 배터리 뱅크 라인(Vin2)을 결합 또는 결합-해제하도록(예를 들어, 트랜지스터 스위치의 소스와 드레인을 결합시킴) 구성될 수 있다.
배터리 충전 검출기(712)는 또한, 제어기가 배터리 모니터 커맨드에 응답하여 비교기를 인에이블 또는 디스에이블하는 데 사용할 수 있는 검출기 인에이블 입력을 포함할 수 있다. 예를 들어, 제어기는 배터리 뱅크 내의 재충전가능 배터리들의 충전량을 체크하기 위해 전력 관리 회로(702)에 (예를 들어, 매일) 배터리 모니터 커맨드를 주기적으로 발행할 수 있다. 제어기가 배터리 충전 검출기를 인에이블하는(예를 들어, 검출기 인에이블 입력에 값 '1'을 전송함) 이러한 커맨드를 제공하는 경우, 배터리 충전 검출기는 Vin2를 Vrefb와 비교하고 그에 따라 재충전 스위치 인에이블 신호를 출력할 수 있는 반면, 제어기가 배터리 모니터 커맨드를 제공하지 않는 경우(예를 들어, 검출기 인에이블 입력을 값 '0'으로 전송하거나 남겨둠), 재충전 스위치 인에이블 신호는 Vin2에도 불구하고 전류원(716)과 배터리 뱅크 라인의 결합-해제를 유지하도록 고정될 수 있다. 대안적으로, 전력 관리 회로는 펌웨어 또는 하드웨어, 또는 펌웨어와 하드웨어의 조합을 포함할 수 있으며, 이는 제어기 대신에 주기적 배터리 모니터 커맨드를 제공한다.
동작의 일 예에서(배터리 충전 검출기가 인에이블되는 것으로 가정함), Vin2 = Vrefb인 경우, 배터리 충전 검출기/비교기는 재충전 스위치 인에이블 신호에 대한 하나의 값(예를 들어, 0)을 출력하여 배터리 충전의 감소가 발생하지 않았음(배터리는 전체 용량에 있음)을 나타낼 수 있으며, 이에 의해 배터리 재충전 스위치를 디스에이블하고 전류원과 배터리 뱅크 라인을 결합-해제할 수 있다. 이러한 방식으로, 배터리 뱅크는 재충전이 필요하지 않기 때문에 전류원로부터 연결해제된 상태로 유지된다. 반면에, Vin2 < Vrefb인 경우, 비교기는 재충전 스위치 인에이블 신호에 대한 다른 값(예를 들어, 1)을 출력하여 배터리 충전의 감소가 발생했음(배터리가 전체 용량에 있지 않음)을 나타낼 수 있으며, 이에 의해 배터리 재충전 스위치를 인에이블하고 전류원과 배터리 뱅크 라인을 결합시킬 수 있다. 이러한 방식으로, 배터리 뱅크는, UGSD가 발생할 때 비상 전력이 저장 디바이스 컴포넌트들에 충분히 공급될 수 있도록 배터리들을 재충전하기 위해 전류원에 연결될 수 있다.
전원 관리 회로는 전력 손실 검출의 경우에 추가 비상 전력을 제공하는 호스트/RAID-제어기 제공된 전력 공급부에 하나 이상의 커패시터들(718)을 결합시킬 수 있다. 이러한 추가 비상 전력을 제공하는 커패시터들로부터의 충전량은 배터리 뱅크로부터 공급된 비상 전력과 유사한 방식으로 저장 디바이스의 다양한 컴포넌트들에 공급될 수 있다. 예를 들어, 전력 손실 검출기(708)는 Vin < Vref이라는 검출에 응답하여 비상 전력 스위치의 활성화를 통해 커패시터들을 전력 공급 라인에 결합시킬 수 있다. 유사하게, 전력 관리 회로는 배터리 뱅크 내의 재충전가능 배터리들과 유사한 방식으로 커패시터들을 재충전할 수 있다. 예를 들어, 배터리 충전 검출기는 Vin2 < Vrefb인 검출에 응답하여 배터리 재충전 스위치의 활성화를 통해 커패시터들에 배선된 라인에 전류원을 결합시킬 수 있다. 따라서, 주기적 배터리 모니터 커맨드들 사이에 배터리 뱅크가 고갈되더라도, UGSD가 발생하는 경우에서의 사용을 위해 추가 비상 전력이 이러한 커패시터들에 의해 공급되거나 그에 저장될 수 있다.
따라서, 도 6 및 도 7과 관련하여 위에서 예시되고 설명된 예에서, 독립형 저장 디바이스는 저장 디바이스의 PCB 보드에 배선된 배터리 뱅크 내에 내부적으로 재충전가능 배터리들을 포함할 수 있으며, 이 충전량은 전력 손실 검출의 경우에 호스트 디바이스로부터 전력 공급 라인으로 라우팅될 수 있고, 이 충전량은 전체 배터리 용량을 유지하기 위해 주기적으로 모니터링되고 재충전될 수 있다. 그러나, 다른 예들에서, 저장 디바이스는 독립형이 아닐 수 있으며, 다른 저장 디바이스들을 갖는 RAID 시스템의 일부일 수 있다. 이러한 예들에서, RAID 시스템은, 저장 디바이스들의 외부에 있고 연결된 저장 디바이스들 사이에서 공통으로 공유되는 배터리 뱅크 내의 재충전가능 배터리들을 포함할 수 있다. 예를 들어, 외부 배터리들은 호스트 또는 RAID 제어기에 포함될 수 있거나, 호스트 또는 RAID 제어기에 연결된 주변 장치에 부착될 수 있다.
전술한 RAID 시스템의 일 예에서, 각각의 저장 디바이스의 전력 관리 회로는 도 7과 관련하여 전술한 것과 유사한 방식으로 동작할 수 있지만, 배터리 뱅크는 대신 저장 디바이스의 외부에 있고 다수의 저장 디바이스들 사이에서 공유될 수 있다. 일 예로서, 각각의 저장 디바이스의 전력 관리 회로는, 도 7에 예시된 것과 동일하거나 유사한 입력들, 출력들, 배선 및 구조적 컴포넌트들을 사용하여, 비상 전력의 공급을 위해 저장 디바이스의 내부 컴포넌트들에 외부 배터리들을 결합시킬 뿐만 아니라, 충분한 비상 전력이 이용가능하도록 보장하기 위해 이러한 외부 배터리들을 재충전할 수 있다. 호스트 디바이스 또는 RAID 제어기는 또한 외부 배터리들로부터 비상 전력을 유사하게 공급하고 외부 배터리들을 재충전할 수 있는 전력 관리 회로를 포함할 수 있다. 예를 들어, 전력 관리 회로는, 도 7에 예시된 바와 동일하거나 유사한 입력들, 출력들, 배선 및 구조적 컴포넌트들을 사용하여, 외부 배터리들로부터 호스트 디바이스/RAID 제어기 컴포넌트들(예를 들어, 프로세서들, 메모리들 등)로 라우팅할 뿐만 아니라, 저장 디바이스들 중 임의의 것의 내부 컴포넌트들로 라우팅할 수 있다. 따라서, 내부 배터리로부터 호스트/RAID 제어기로의 공급된 전력이 손실되더라도(예를 들어, 열 충격, 발전소 장애, 해커 공격, 또는 다른 시나리오로 인해), 호스트 또는 RAID 제어기는 그의 프로세서(들), 메모리, 및 전력 관리 회로를 동작시키기 위해 외부 배터리들에 의해 공급되는 충분한 전력을 가질 수 있다. 호스트 또는 RAID 제어기는 임박한 UGSD를 나타내는 저장 디바이스로부터의 메시지(또는 그의 호스트/RAID 제어기에서의 검출)에 응답하여, 이러한 배터리들로부터 그의 컴포넌트들로, 또는 저장 디바이스 컴포넌트들로 비상 전력을 라우팅할 수 있다.
예를 들어, 도 6 및 도 7의 예들의 일 변형예에서, 전력 관리 회로(610, 702)에 의해 수신된 전력 공급부는 RAID 시스템 내의 다수의 저장 디바이스들에 전력을 공급하는 RAID-레벨 배터리로부터 유래할 수 있다. 이러한 RAID-레벨 배터리는 호스트 디바이스의 내부에(예를 들어, 호스트 디바이스(604) 내의 배터리(616)), RAID 제어기의 내부에(예를 들어, 호스트 디바이스 또는 다른 저장 디바이스 내), 또는 호스트 디바이스 또는 RAID 제어기의 외부에(예를 들어, 호스트 디바이스 또는 다른 저장 디바이스에 부착된 주변 장치 내) 있을 수 있다. 또한, 이러한 저장 디바이스들 각각은 그 자신의 NVM(606), 제어기(608), 전력 관리 회로(610, 702), 및 일부 경우들에서, 각자의 저장 디바이스의 컴포넌트들에 비상 전력을 내부적으로 공급하는 배터리 뱅크(612)를 포함할 수 있다. 또한, 호스트 디바이스 또는 RAID 제어기의 외부에 그리고 각각의 저장 디바이스의 외부에 있는 배터리 뱅크가 (배터리 뱅크(612)에 추가하여 또는 그 대신에) RAID 시스템에 비상 전력을 공급하기 위해 각각의 저장 디바이스의 전력 관리 회로(610, 702)에 결합될 수 있다. 이러한 저장 디바이스들(602) 중 하나 내의 전력 관리 회로(610)가 RAID-레벨 배터리에 의해 공급된 전력의 손실을 검출하는 경우, 저장 디바이스는 메시지 또는 전력 손실 어서트(power loss assert, PLA)를 통해 전력 손실을 호스트 디바이스 또는 RAID 제어기에 경보할 수 있다. 호스트 디바이스 또는 RAID 제어기는 전력 손실 통지(power loss notification, PLN)를 통해 전력의 검출된 손실에 대해 RAID 시스템 내의 다른 저장 디바이스들에 유사하게 경보할 수 있다. 호스트와 저장 디바이스들 사이의 이러한 전력 손실 시그널링은 PLA들 또는 PLN들과 연관된 전용 커맨드 시퀀싱, 어드레싱, 및 확인응답을 포함하는 통신 프로토콜을 통해 달성될 수 있다. 호스트 디바이스/RAID-제어기는 배터리(616)를 호스트 디바이스의 프로세서, 메모리들 등에 결합시키는 전력 관리 회로(예를 들어, 전력 관리 회로(610, 702))를 유사하게 포함할 수 있고, 비상 전력을 위한 외부 배터리 뱅크는 호스트 디바이스/RAID 제어기의 전력 관리 회로(610, 702)에 결합될 수 있다. 따라서, 호스트 디바이스/RAID 제어기의 전력 관리 회로가 RAID-레벨 배터리에 의해 공급된 전력의 손실을 검출하더라도, 호스트 디바이스/RAID 제어기는 외부 배터리 뱅크로부터의 비상 전력을 사용하여 동작할 수 있다.
또한, RAID 시스템 내의 호스트 디바이스/RAID 제어기 또는 저장 디바이스들은 UGSD의 경우에 RAID 시스템 내의 상이한 저장 디바이스들에 분배될 최적의 전력을 계산할 수 있다. 예를 들어, 호스트 디바이스는 저장 디바이스에 의해 제공된 전력 손실 신호 또는 메시지, 저장 디바이스의 프로그램 데이터 레이트, 및 NVM(606) 내에 프로그래밍되도록 호스트 디바이스가 저장 디바이스에 제공한 데이터(618)의 양에 기초하여, 외부 배터리 뱅크로부터 주어진 저장 디바이스에 공급될 비상 전력의 최적의 양을 결정할 수 있다. 일 예로서, 호스트 디바이스가 500 MB/s의 프로그래밍 속도를 갖는 저장 디바이스로부터 전력 손실 신호를 수신하고, 호스트 디바이스가 프로그래밍을 위해 그 저장 디바이스로 1 GB의 데이터를 송신했다면, 호스트 디바이스는 저장 디바이스가 1 GB의 데이터를 완전히 프로그래밍하는 데 2초가 걸릴 것이라고 결정할 수 있다. 이러한 경우, 호스트 디바이스는, 예를 들어, 저장 디바이스가 데이터를 2초 내에 완전히 프로그래밍하기 위해 사용할 수 있는 비상 전력의 최적의 양이 2 W의 전력이라고 결정할 수 있다.
따라서, 독립형 저장 디바이스에 대해 이전에 설명된 바와 같이 단순히 외부 배터리 뱅크에서 이용가능한 비상 전력 모두를 저장 디바이스에 공급하기보다는, 여기 RAID 시스템에서, 호스트 디바이스는, 저장 디바이스가 UGSD 전에 그것의 진행 중인 동작을 완료하도록 보장하면서, 필요한 경우 다른 저장 디바이스들에 비상 전력을 공급하도록 외부 배터리에 남아 있는 충전량을 남기도록, 그 저장 디바이스에 소정 량의 전력을 배급할(ration) 수 있다. 호스트 디바이스는 전력 관리 회로(702)를 통해 외부 배터리들에 의해 공급된 비상 전력을 배급할 수 있다. 호스트 디바이스에 대한 전력 관리 회로(702)는 다음을 제외하고는 각각의 저장 디바이스에 대한 것과 유사할 수 있다: 여기서 배터리 뱅크는 RAID-레벨이라는 것(예를 들어, 저장 디바이스들의 외부에 있음), 비상 전력 스위치(710)는 비상 전력이 RAID 시스템 내의 모든 저장 디바이스들에 공급되는지 여부를 제어한다는 것, 및 채널 인에이블 스위치들은 RAID 시스템 내의 이러한 저장 디바이스들 중 어느 것이 비상 전력을 수신하는지를 제어한다는 것(예를 들어, 도 7의 각각의 채널은 상이한 저장 디바이스에 대응함). 따라서, 호스트 디바이스는, 외부 배터리 뱅크로부터 소정 충전량만이 저장 디바이스로 흐를 수 있도록(예를 들어, 전술한 예에서 2 W의 전력에 대응함) 비상 전력 스위치(710) 및 채널 인에이블 스위치들(또는 다른 스위치들)을 인에이블하는 하나 이상의 커맨드들을 발행할 수 있다. 호스트 디바이스는, 예를 들어, 배터리 충전 검출기(712)가 2 W의 전력에 대응하는 전하가 배터리 뱅크로부터 고갈되었는지 여부를 검출할 수 있게 함으로써, 전하 흐름의 양을 제어할 수 있으며, 이 경우 호스트 디바이스는 배터리 뱅크로부터의 추가의 전하 고갈을 방지하도록 비상 전력 스위치/채널 인에이블 스위치들을 디스에이블할 수 있다.
다른 예에서, 호스트 디바이스는, 현재 동작들을 겪고 있지 않은 저장 디바이스들에 임의의 비상 전력을 공급하는 것을 억제하면서, 동작들을 겪고 있는 저장 디바이스에 모든 이용가능한 비상 전력을 공급할 수 있다. 예를 들어, RAID 시스템 내의 호스트 디바이스가 상기 예에서 UGSD를 겪고 있는 저장 디바이스가 2초의 진행 중인 동작들을 완료하기 위해 2 W의 전력을 필요로 한다고 결정하는 경우, 호스트 디바이스는 또한 RAID 시스템 내의 다른 저장 디바이스가 유휴 또는 비활성 상태라고 결정할 수 있다. 이러한 경우에, 단순히 이전의 저장 디바이스에 2 W의 전력을 배급하고 유휴/비활성 저장 디바이스를 포함하는 다른 저장 디바이스들에 나머지 전력을 배급하기보다는, 호스트 디바이스는 유휴/비활성 저장 디바이스에 대한 비상 전력의 공급을 완전히 디스에이블할 수 있다. 예를 들어, 호스트 디바이스는 이전에 설명된 것과 같이, 유휴/비활성 저장 디바이스에 대한 대응하는 채널 인에이블 스위치를 디스에이블하여 그 저장 디바이스에 대한 비상 전력의 공급을 방지할 수 있다.
또한, 각각의 저장 디바이스는 호스트 디바이스에 대해 이전에 설명된 것과 동일하거나 유사한 방식으로 전력 관리 회로(702)를 사용하여 그들 자신의 내부 배터리 뱅크(및/또는 외부 배터리 뱅크)로부터 비상 전력의 공급을 배급할 수 있다. 예를 들어, 저장 디바이스는 비상 전력 스위치, 채널 인에이블 스위치들, 배터리 충전 검출기, 또는 저장 디바이스의 다른 컴포넌트들을 사용하여 NVM 내의 특정 채널로 흐르도록 할당되거나 허용되는 배터리 뱅크(612)(또는 RAID-레벨 배터리 뱅크)로부터의 비상 전력의 양을 제어하고 제한할 수 있다. 또한, 일부 예들에서, 전력 관리 회로 내의 채널들 중 하나는 호스트 디바이스에 결합될 수 있고, 저장 디바이스는, 예를 들어, 호스트 디바이스로부터의 전력 손실 통지에 응답하여, 자신의 내부 배터리 뱅크로부터 호스트 디바이스로 유사하게 비상 전력을 공급하고 배급할 수 있다. 따라서, RAID 시스템 내의 호스트 디바이스 및 저장 디바이스들은 다른 디바이스들로부터의 전력 손실 시그널링에 응답하여 비상 전력의 최적의 양을 결정하고 서로에 공급할 수 있다.
따라서, 저장 디바이스(102, 602) 및 호스트 디바이스(604)(또는 RAID 제어기)의 전력 관리 회로(610, 702)는 (예를 들어, 전력 손실 검출기(708) 및 비상 전력 스위치(710)를 사용하여) UGSD가 임박할 때 호스트 디바이스로부터 배터리 뱅크(예를 들어, 저장 디바이스-레벨 또는 RAID-레벨 배터리들)로의 전력의 공급을 재라우팅할 수 있다. 전력 관리 회로는 또한 주기적 모니터링(예를 들어, 제어기(123, 608) 또는 RAID 제어기로부터 수신된 일별 배터리 모니터 커맨드)에 응답하여, (예를 들어, 배터리 충전 검출기(712), 배터리 재충전 스위치(714), 및 전류원(716)을 사용하여) 배터리 뱅크 내의 재충전가능 배터리들의 현재 충전량을 검출하고 보충할 수 있다. 배터리 뱅크에 의해 공급된 비상 배터리 전력을 사용하여, 저장 디바이스의 제어기는 제어 정보(620)(예를 들어, 제어 데이터, 파일 시스템 업데이트들, 또는 다른 키 사용자 데이터와 같은 메타데이터)를 NVM(110, 606)에 기록하여, 저장 디바이스가 다음 전력 사이클에서 업데이트된 제어 정보를 가질 수 있게 하고 신속한 저장 디바이스 복구를 용이하게 할 수 있다. 전력 관리 회로(610, 702)는 또한 배터리 뱅크로부터의 비상 전력을, 제어 데이터, 파일 시스템 엔트리들, 또는 다른 메타데이터가 저장되는 NVM(606)의 하나 이상의 특정 채널들로 라우팅할 수 있다. 예를 들어, 주어진 채널 상에서 병렬로 연결된 복수의 다이들을 각각 갖는 복수의 NAND 패키지들을 포함하는 저장 디바이스에서(예를 들어, 4개의 NAND 패키지들 내의 총 16개의 다이들 중 2개의 다이들에 각각 결합된 8개의 병렬 채널들), 제어기가, 채널들 중 하나가 메타데이터로 프로그래밍되고 있으면서 다른 채널들은 유휴 또는 비활성 상태라고 결정하는 경우, 전력 관리 회로는 이러한 유휴/비활성 채널들에 대한 전력을 차단하도록 구성될 수 있다(예를 들어, 유휴/비활성 채널들에 대한 전압 조정기들(706)에 결합된 채널 인에이블 스위치들을 디스에이블하는 제어기로부터의 채널 인에이블 신호에 응답하여). 그 결과, 저장 디바이스는 UGSD를 예상하여 NVM에 제어 정보를 기록하는 것을 완료하기 위해 활성 채널에 공급되는 비상 전력의 양을 최대화할 수 있다. 저장 디바이스는 메타데이터 또는 데이터가 기록되고 있는 블록(들)의 위치들에 따라 이러한 채널(들)에 더 많은(또는 모든) 비상 전력을 공급함으로써 NVM에 제어 정보 또는 다른 데이터를 기록하기 위한 상이한 채널(들)을 우선순위화하기 위해 유사하게 작용할 수 있다. 또한, 전술한 전력 손실 검출 및 비상 전력 라우팅을 활용하는 다중-디바이스 시스템(예를 들어, RAID 시스템)에서, 호스트 디바이스 또는 RAID 제어기는 이전에 설명된 것과 같은 전력 장애 상황의 경우에 다수의 저장 디바이스들 사이에서 외부 배터리 뱅크로부터의 비상 전력을 최적으로 분배할 수 있다.
도 8은 RAID 제어기(806)를 갖는 호스트 디바이스(804), 및 호스트 디바이스(804) 또는 RAID 제어기(806)에 연결된 복수의 저장 디바이스들(808)을 포함하는 RAID 시스템(802)의 예(800)를 도시한다. 호스트 디바이스(804)는 호스트 디바이스(604)에 대응할 수 있고, 저장 디바이스들(808)은 각각 저장 디바이스(602)에 대응할 수 있다. 저장 디바이스들(808) 각각은 NVM(예를 들어, NVM(110, 606)), 제어기(예를 들어, 제어기(123, 608)), 전력 관리 회로(예를 들어, 전력 관리 회로(610, 702)), 및 UGSD의 경우에 비상 전력을 공급하기 위한 배터리 뱅크(예를 들어, 배터리 뱅크(612))를 포함할 수 있다. 유사하게, 호스트 디바이스(804)는 전력 관리 회로(610, 702)와 동일하거나 유사할 수 있는 전력 관리 회로(810), 및 호스트 디바이스 및 그의 컴포넌트들뿐만 아니라 저장 디바이스들 및 그의 컴포넌트들에 비상 전력을 공급하기 위한 재충전가능 배터리들을 포함하는 배터리 뱅크(812)를 포함할 수 있다. 여기서 배터리 뱅크(812)는 호스트 디바이스(804) 내부에 있는 것으로 도시되어 있지만, 다른 예들에서 배터리 뱅크(812)는 호스트 디바이스(804) 외부에 있을 수 있다. 일 예에서, RAID 시스템(802)은 예를 들어 RAID 제어기(806) 및 저장 디바이스(808)를 갖는 데이터 센터를 포함할 수 있다.
저장 디바이스들(808) 중 하나가 호스트 디바이스(804) 또는 RAID 제어기(806)로부터 공급된 전력의 손실을 검출할 때, 도 6 및 도 7과 관련하여 이전에 설명된 바와 같이 전력의 손실을 핸들링하는 것에 더하여, 저장 디바이스는 전력의 검출된 손실을 나타내는 메시지(814)를 호스트 디바이스(804) 또는 RAID 제어기(806)에 제공할 수 있다. 예를 들어, 도 7을 참조하면, 전력 손실 검출기(708)가 Vin(전력 공급부에 대응함)가 Vref 아래로 떨어지는 것(예를 들어, Vin의 75%)에 응답하여 '1'의 값을 출력하는 경우, 비상 전력 스위치(710)가 배터리 뱅크(612)로부터의 전력을 다양한 저장 디바이스 컴포넌트들로 라우팅할 수 있게 하는 것에 더하여, 전력 손실 검출기(708)의 출력은 제어기(608)로 하여금 메시지(814)를 호스트 디바이스(804) 또는 RAID 제어기(806)에 전송하게 하는 메시지 트리거로서 작용할 수 있다. 예를 들어, 제어기(608)는 전력 관리 회로로부터 메시지 트리거를 수신하는 것에 응답하여 메시지(814)를 전송하도록 구성될 수 있다. 메시지(814)는 현재 기록된 데이터의 양, 전력 손실이 발생한 것으로 검출된 시간, 검출된 전력 손실과 연관된 전압, 및 다른 정보를 포함하는, 저장 디바이스의 현재 상태를 나타낼 수 있다. 메시지로부터, 호스트 디바이스(804) 또는 RAID 제어기(806)는 메시지(814)가 유래된 저장 디바이스가 전력 손실로부터 UGSD에 진입하려고 하는 것을 확인할 수 있다.
일 예에서, 저장 디바이스(808)가 메시지(814)를 호스트 디바이스(804) 또는 RAID 제어기(806)에 제공할 때, 메시지는 저장 디바이스가 전력을 손실하고 UGSD에 진입하려고 함을 나타낼 뿐만 아니라, 저장 디바이스가 NVM(606)에 기록하도록 남겨진 데이터(618) 또는 제어 정보(620)를 갖는다는 것을 나타낼 수 있다. 메시지는 또한 또는 대안적으로, 저장 디바이스가 그의 현재 이용가능한 전력을 사용하여 NVM에 그의 데이터 또는 제어 정보의 일부분을 이미 기록했지만, 데이터 또는 제어 정보가 호스트 디바이스 또는 RAID 제어기로부터의 추가 전력 없이는 완전히 기록되지 않을 것임을 나타낼 수 있다. 메시지에 응답하여, 호스트 디바이스(804) 또는 RAID 제어기(806)는 메시지가 유래된 저장 디바이스(808)에 전력(예를 들어, 비상 전력)을 제공할 수 있다. 예를 들어, 도 7과 관련하여 이전에 설명된 바와 같이, 전력 관리 회로(810)는, 그 저장 디바이스로 라우팅된 비상 전력의 양을 최적화하거나(비활성/유휴 채널들보다 활성 채널들을 우선순위화함) 최대화하기 위해, 비상 전력 스위치(710)를 활성화하여 배터리 뱅크(812)로부터의 비상 전력을 RAID 제어기(806) 또는 호스트 디바이스(804)의 다른 컴포넌트들로 라우팅하고, 그 저장 디바이스에 대응하는 출력 채널을 인에이블하고, (예를 들어, 채널 인에이블 신호의 주어진 값을 사용하여) 다른 저장 디바이스들에 대응하는 다른 출력 채널들 중 하나 이상을 디스에이블할 수 있다.
다른 예에서, 호스트 디바이스는 NVM(606)에 기록하도록 남겨진 데이터(618) 또는 제어 정보(620)의 사본을 저장할 수 있다. 메시지(814)에 응답하여 호스트 디바이스/RAID 제어기에 의해 공급되는 비상 전력이 저장 디바이스(808)가 셧다운되기 전에 저장 디바이스가 데이터 또는 제어 정보를 완전히 프로그래밍하기에 불충분한 경우(저장 디바이스가 호스트 디바이스/RAID 제어기로부터의 이 비상 전력을 저장 디바이스의 자신의 배터리 뱅크(612)로부터의 추가 비상 전력과 결합하고 있는지 여부에도 불구하고), 호스트 디바이스/RAID 제어기는 데이터 또는 제어 정보를 RAID 시스템 내의 상이한 저장 디바이스에 기록할 수 있다(데이터 백업에서). 다른 예에서, 메시지(814)는, 발생할 임박한 UGSD로 인해, 메시지를 유발시킨 그 저장 디바이스에 추가 데이터를 기록하는 것을 중지 또는 억제할 것을 호스트 디바이스/RAID 제어기에 나타낼 수 있다. 따라서, 호스트 디바이스/RAID 제어기는, 새로운 데이터를 기록하기 보다는, 저장 디바이스에 기존의 캐싱된 데이터를 기록하라는 메시지에 응답하여 저장 디바이스에 전력을 공급할 수 있다. 전술한 예들 중 임의의 것에서, 여기서 메시지(814)는 전력의 손실을 검출한 저장 디바이스의 제어기(608)에 의해 제공된 PLA 신호일 수 있거나, 또는 메시지는 저장 디바이스와 호스트 디바이스 사이의 통신 인터페이스(PCIe)를 통한 대역-내 실패 모드에 응답하여 트리거될 수 있다.
추가 예에서, 호스트 디바이스(804) 또는 RAID 제어기(806)가 전력의 손실을 검출한 저장 디바이스(808)로부터 메시지(814)를 수신한 후, 호스트 디바이스 또는 RAID 제어기는 전력 손실 통지(816)를 RAID 시스템(802) 내의 저장 디바이스들(808) 중 다른 것들에 제공하여 전력의 검출된 손실에 대해 이러한 저장 디바이스들에게 알릴 수 있다. 전력 손실 통지(816)에 응답하여, 호스트 디바이스/RAID 제어기는 저장 디바이스들 각각의 제어기(608)에 커맨드를 제공하여, 그 저장 디바이스가 호스트 디바이스 또는 RAID 제어기로부터 전력의 손실을 추가로 경험하고 있는지 여부를 검출할 수 있다. 대안적으로, 저장 디바이스들 각각의 제어기는 전력 손실 통지(816) 자체에 응답하여 이 검출을 수행할 수 있다. 예를 들어, 도 7을 참조하면, 전력 손실 통지(816)를 수신하는 것에 응답하여, (전력 손실 통지(816)를 트리거링하는 메시지(814)를 송신한 저장 디바이스 이외의) 각각의 저장 디바이스의 제어기(608)는, 전력 손실 검출기(708)로 하여금 전력 공급부(704)(Vin에 의해 표현됨)를 Vref와 비교하여 UGSD를 야기할 수 있는 전력의 손실이 발생했는지를 결정할 수 있게 하는, 전력 손실 검출 커맨드를 발행할 수 있다. 이러한 방식으로, RAID 시스템 내의 다른 저장 디바이스들은 (예를 들어, 열 충격, 발전소 장애, 또는 해커 공격으로 인해) RAID-레벨 전력 손실이 발생하고 있는지를 선제적으로 결정할 수 있으며, 이 경우 저장 디바이스들은 각각 메시지들(814)을 호스트 디바이스/RAID 제어기에 제공할 수 있고, 이들의 전력 관리 회로들(610, 702)로 하여금 이전에 설명된 바와 같은 전력 손실 핸들링을 수행하게 할 수 있다(예를 들어, 이들의 배터리 뱅크 비상 전력을, 제어 정보(620)를 기록하는 데 사용되는 NVM(606)의 소정 채널들로 라우팅하는 등).
유사하게, 전력 손실 통지(816)에 응답하여, 호스트 디바이스/RAID 제어기는, 저장 디바이스가 나중에 호스트 디바이스 또는 RAID 제어기로부터 전력의 손실을 경험하는 경우에 뱅크 내의 재충전가능 배터리들이 충분한 비상 전력을 공급하도록 완전히 충전되어 있는지 여부를 결정하기 위해 그들 각자의 배터리 뱅크(612)를 모니터링하도록 저장 디바이스들 각각의 제어기(608)에 커맨드를 제공할 수 있다. 대안적으로, 저장 디바이스들 각각의 제어기는 전력 손실 통지(816) 자체에 응답하여 이 모니터링을 수행할 수 있다. 예를 들어, 도 7을 참조하면, 전력 손실 통지(816)를 수신하는 것에 응답하여, (전력 손실 통지(816)를 트리거링하는 메시지(814)를 송신한 저장 디바이스 이외의) 각각의 저장 디바이스의 제어기(608)는, 배터리 충전 검출기(712)로 하여금 배터리 뱅크(612) 내의 재충전가능 배터리들의 충전량(Vin2에 의해 표현됨)을 Vrefb와 비교하여 재충전가능 배터리가 완전히 충전되어 있지 않은지를 결정할 수 있게 하는 배터리 모니터 커맨드를 발행할 수 있다. 배터리가 완전히 충전되지 않은 경우, 배터리 충전 검출기(712)는 배터리 재충전 스위치(714)를 인에이블하여 전류원(716)이 배터리 뱅크에 전류를 공급하고 후속적으로 배터리들을 재충전하게 할 수 있다. 이러한 방식으로, RAID 시스템 내의 다른 저장 디바이스들은 그들의 배터리들이 완전히 충전되어 있는지를 선제적으로 결정할 수 있고, 따라서, 배터리 뱅크(612)를 모니터링하기 위해 다음 주기적으로 설정된 시간까지(예를 들어, 하루에 한 번) 기다릴 필요 없이, (예를 들어, 열 충격, 발전소 장애, 또는 해커 공격으로 인한) RAID-레벨 전력 손실을 핸들링하기에 충분한 비상 전력을 공급할 수 있다.
도 9는 저장 디바이스에서의 전력 제어를 위한 방법의 예시적인 흐름도(900)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 후술되는 바와 같은 제어기(예를 들어, 제어기(123))를 사용하여, 제어기의 컴포넌트 또는 모듈에 의해, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다.
블록(902)에 의해 표현되는 바와 같이, 제어기는 배터리 전압을 주기적으로 모니터링할 수 있다. 예를 들어, 도 6 및 도 7을 참조하면, 제어기(123, 608)는 배터리 뱅크(612) 내의 재충전가능 배터리들(614)의 충전량을 검출하기 위해 배터리 충전 검출기(712)를 활성화하도록 전력 관리 회로(610, 702)에 배터리 모니터 커맨드를 주기적으로 송신할 수 있다.
블록(904)에 의해 표현된 바와 같이, 배터리 충전 검출기가 배터리 전력(충전량)이 임계치 미만임(예를 들어, Vin2 < Vrefb)을 검출하는 경우, 전력 관리 회로(610, 702)는 재충전가능 배터리들(614)의 충전을 인에이블할 수 있다. 예를 들어, 도 7을 참조하면, 전력 관리 회로(702)는 배터리 충전 검출기(712)가 Vin2 < Vrefb를 검출할 때 배터리 재충전 스위치(714)의 활성화를 통해 재충전가능 배터리들(614)을 재충전하기 위해 전류원(716)이 배터리 뱅크(612)에 전류를 공급하도록 할 수 있다. 배터리들이 재충전되면(예를 들어, Vin2 = Vrefb), 스위치는 디스에이블되고 추가 배터리 충전은 발생하지 않는다.
도 10은 저장 디바이스에서의 전력 손실 핸들링을 위한 방법의 예시적인 흐름도(1000)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 후술되는 바와 같은 제어기(예를 들어, 제어기(123))를 사용하여, 제어기의 컴포넌트 또는 모듈에 의해, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다.
블록(1002)에 의해 표현되는 바와 같이, 제어기는 호스트 공급된 전력의 손실을 검출할 수 있다. 예를 들어, 도 6 및 도 7을 참조하면, 제어기(608)는, 호스트 전력 공급부에 대응하는 전압 Vin이 Vref 아래로 떨어졌음을 검출하도록 전력 손실 검출기(708)를 활성화하기 위해 전력 손실 검출 커맨드를 전력 관리 회로(610, 702)에 발행할 수 있다.
블록(1004)에 의해 표현되는 바와 같이, 제어기는 주어진 시간 내에 임계량의 전력이 손실되는지 여부를 결정할 수 있다. 예를 들어, 도 6 및 도 7을 참조하면, 제어기가 전력 손실 검출 커맨드를 발행하고 전력 손실 검출기(708)가 Vin < Vref를 결정한 후, 전력 손실 검출기는 Vin이 임계 기간(예를 들어, 100 μs) 내에 Vref 아래로 떨어졌는지 여부를 추가로 결정할 수 있다.
그렇다면, 블록(1006)에 의해 표현되는 바와 같이, 제어기는 전력 손실이 임박한 것으로 결정할 수 있다. 예를 들어, 도 6 및 도 7을 참조하면, 제어기(608)는, 일정 시간에 걸쳐 전력 손실의 임계량이 검출되었고(예를 들어, 100 μs의 시간에 걸친 25%의 전력 감소) 따라서 전력 손실이 임박하다는 것을 나타내는 메시지 트리거(예를 들어, 전력 손실 검출기(708)의 출력)를 전력 관리 회로(610, 702)로부터 수신할 수 있다.
따라서, 블록(1008)에 의해 표현되는 바와 같이, 전력 관리 회로는 재충전가능 배터리들로부터의 전력을 전력 관리 회로 내로 재라우팅할 수 있다. 예를 들어, 도 7을 참조하면, 전력 관리 회로(702) 내의 전력 손실 검출기(708)는 비상 전력 스위치(710)를 인에이블할 수 있으며, 이는 배터리 뱅크(612) 내의 재충전가능 배터리들(614)을 전력 공급 라인에 그리고 따라서 NVM(606) 및 제어기(608)에 결합시킨다. 따라서, 배터리 뱅크로부터의 비상 전력은 전력 관리 회로를 통해 NVM 및 제어기로 라우팅될 수 있다.
다음으로, 블록(1010)에 의해 표현되는 바와 같이, 제어기는 전력 손실 핸들링을 수행할 수 있다. 예를 들어, 블록(1012)에 의해 표현되는 바와 같이, 제어기는 시스템 데이터를 NAND에 저장할 수 있고(예를 들어, 제어 정보(620)를 NVM(606)에), 블록(1014)에 의해 표현되는 바와 같이, 제어기는 NAND에 대한 진행 중인 데이터 기록을 완료할 수 있고(예를 들어, 데이터(618)를 NVM(606)에), 블록(1016)에 의해 표현되는 바와 같이, 제어기는 새로운 호스트 데이터를 수용하는 것을 중지할 수 있고(예를 들어, 호스트 디바이스로부터 추가 데이터를 기록하는 것을 억제함), 블록(1018)에 의해 표현되는 바와 같이, 제어기는 이벤트를 로깅할 수 있고(예를 들어, 검출된 전력 손실의 표시를 NVM(606)에 저장함), 블록(1020)에 의해 표현되는 바와 같이, 제어기는 저장 디바이스 상태를 호스트 디바이스에 통지하도록 플래그를 설정할 수 있다(예를 들어, 메시지(814)에서).
그 후, 블록(1022)에 의해 표현되는 바와 같이, 제어기는 배터리 전력을 사용하여 정상적으로 셧다운할 수 있다. 예를 들어, 도 6 및 도 7을 참조하면, 제어기(608)는 전력 관리 회로(610, 702)를 통해 재충전가능 배터리들(614)에 의해 공급되는 비상 전력을 사용하여 GSD를 수행할 수 있다.
도 11은 RAID 시스템에서의 전력 제어 및 전력 손실 핸들링을 위한 방법의 예시적인 흐름도(1100)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 후술되는 바와 같은 제어기(예를 들어, 제어기(123))를 사용하여, 제어기의 컴포넌트 또는 모듈에 의해, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다. 예를 들어, 흐름도에서의 하나 이상의 단계들은 메모리 및 제어기(또한 메모리에 결합됨)에 결합된 전력 관리 회로(예를 들어, PMIC)에 의해 제어될 수 있다.
블록(1102)에 의해 표현되는 바와 같이, 제어기는 RAID 제어기에 의해 공급된 전력을 수신할 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 제어기(123, 608)는 (예를 들어, 호스트 디바이스(104, 604, 804) 내의 또는 호스트 디바이스로부터 분리된) RAID 제어기(806)에 의해 공급된 전력을 수신할 수 있다. 예를 들어, RAID 제어기로부터의 전력 공급부(704)는 RAID 제어기에 전력을 공급하는 배터리(예를 들어, 배터리(616))로부터 유래할 수 있다.
일 예에서, 블록(1104)에 의해 표현되는 바와 같이, 제어기는 재충전가능 배터리의 충전량을 주기적으로 모니터링할 수 있다. 재충전가능 배터리는 전력 관리 회로에 결합될 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 제어기(123, 608)는 배터리 뱅크(612) 내의 재충전가능 배터리들(614) 중 하나 이상의 충전량을 모니터링하도록 전력 관리 회로(610, 702)에 배터리 모니터 커맨드를 주기적으로(예를 들어, 매일) 송신할 수 있다. 커맨드에 응답하여, 블록(1106)에 의해 표현되는 바와 같이, 전력 관리 회로는 충전량이 재충전가능 배터리의 전체 용량보다 작은지 여부를 검출할 수 있다. 예를 들어, 도 7을 참조하면, 전력 관리 회로(702)는 재충전가능 배터리들의 현재 충전량(전압 Vin2로 표현됨)을 기준 전압 Vrefb(전체 용량으로 충전될 때 배터리들의 전압을 표현함)와 비교하는 배터리 충전 검출기(712)(예를 들어, 비교기)를 포함할 수 있다. 이어서, 블록(1108)에 의해 표현되는 바와 같이, 전력 관리 회로는 충전량이 전체 용량보다 작은 것에 응답하여 재충전가능 배터리를 재충전할 수 있다. 예를 들어, 도 7을 참조하면, Vin2 < Vrefb인 경우, 배터리 충전 검출기(712)는 전류원(716)으로부터의 전류가 배터리 뱅크로 흐르고 재충전가능 배터리들을 재충전할 수 있도록 배터리 재충전 스위치(714)를 활성화하는 재충전 스위치 인에이블 신호를 출력할 수 있다.
다른 예에서, 블록(1110)에 의해 표현되는 바와 같이, 제어기는 RAID 제어기에 의해 다른 저장 디바이스에 공급된 전력의 손실의 통지를 수신할 수 있고, 블록(1112)에 의해 표현되는 바와 같이, 제어기는 통지에 응답하여 재충전가능 배터리의 충전량을 모니터링할 수 있다. 이에 응답하여, 전력 관리 회로는 블록들(1106, 1108)에 의해 표현되는 단계들을 유사하게 수행할 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 저장 디바이스들(602, 808) 중 하나 내의 제어기(123, 608)는, 저장 디바이스들(602, 808) 중 다른 하나의 전력 관리 회로(610, 702)가 RAID 제어기로부터 공급된 전력(예를 들어, 전력 공급부(704))의 손실을 검출했음을 나타내는 전력 손실 통지(816)를 RAID 제어기(806)로부터 수신할 수 있다. 이러한 전력 손실 통지(816)에 응답하여, 제어기(123, 608)는 이전에 설명된 바와 같이 배터리 뱅크(612) 내의 재충전가능 배터리들(614)을 검출하고 재충전하기 위해 저장 디바이스들 중 전자의 전력 관리 회로(610, 702)에 배터리 모니터 커맨드를 발행할 수 있다.
블록(1114)에 의해 표현되는 바와 같이, 제어기는 전력 관리 회로가 RAID 제어기에 의해 공급된 전력의 손실을 검출하게 할 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 제어기는 (예를 들어, 전력 손실 통지(816)에 응답하여 또는 일반적으로 런타임 동안) 전력 손실 검출 커맨드를 전력 관리 회로(610, 702)에 발행할 수 있다. 전력 관리 회로는, RAID 제어기로부터의 전력 공급부(704)(전압 Vin으로 표현됨)가 전압 기준 Vref(Vin이 주어진 기간 내에 이 전압 아래로 감소되는 경우 임박한 UGSD를 나타내는 임계 전압으로 표현됨) 아래로 떨어지는지 여부를 검출하는 전력 손실 검출기(708)(비교기)를 포함할 수 있다. 이어서, 블록(1116)에 의해 표현되는 바와 같이, 제어기는 전력의 손실을 나타내는 메시지를 RAID 제어기에 송신할 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 전력 손실 검출기(708)가 Vin이 주어진 기간(예를 들어, 100 μs) 내에 Vref 아래로 감소된 것을 검출하는 경우, 그 결과는 전력 손실을 나타내는 메시지(814)를 RAID 제어기(806)에 제공하기 위해 메시지 트리거를 제어기(123, 608)에 시그널링할 수 있다. 그 후, 블록(1118)에 의해 표현되는 바와 같이, 제어기는 메시지에 응답하여 RAID 제어기로부터 전력을 수신할 수 있다. 전력의 양은 메모리에 기록될 데이터의 크기에 기초할 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 메시지(814)에 응답하여, 제어기(123, 608)는 배터리 뱅크(812) 내의 하나 이상의 재충전가능 배터리들(예를 들어, 배터리(616)로부터의 원래의 전력 공급부와 상이한 전원)로부터 라우팅된 비상 전력을 RAID 제어기(806)로부터 수신할 수 있다. RAID 제어기가 공급할 수 있는 이러한 비상 전력의 양은 저장 디바이스(602, 808)의 제어기(123, 608)가 NVM(110, 606)에 기록하고 있는 데이터(예를 들어, 데이터(618) 또는 제어 정보(620))의 양에 기초할 수 있다. 일 예로서, 저장 디바이스(602, 808)가 500 MB/s의 프로그래밍 속도를 갖고 제어기가 프로그래밍될 1 GB의 데이터(예를 들어, 2초의 데이터)를 갖는 경우, RAID 제어기는 데이터를 프로그래밍하는 것을 완료하기 위해 제어기(123, 608)에 2초의 비상 전력을 최적으로 배급할 수 있다. 예를 들어, RAID 제어기는 2초에 걸쳐 2 W의 비상 전력을 저장 디바이스(602, 808)에 공급할 수 있다.
블록(1120)에 의해 표현되는 바와 같이, 전력 관리 회로는 RAID 제어기로부터의 전력의 검출된 손실에 응답하여 재충전가능 배터리로부터 메모리로 그리고 제어기로 추가 전력을 라우팅할 수 있다. 예를 들어, 도 6 내지 도 8을 참조하면, 저장 디바이스(602, 808)의 전력 손실 검출기(708)가 Vin이 주어진 기간(예를 들어, 100 μs) 내에 Vref 아래로 감소한 것을 검출하는 경우, 전력 손실을 나타내는 메시지(814)를 RAID 제어기(806)에 시그널링하는 것에 추가로(또는 그 대신에), 전력 관리 회로(610, 702)는 배터리 뱅크(612) 내의 재충전가능 배터리(614)로부터 NVM(110, 606) 및 제어기(608)로 추가 비상 전력을 라우팅할 수 있다. 예를 들어, 재충전가능 배터리들(614)은 초기에 스위치(예를 들어, 비상 전력 스위치(710))를 통해 메모리(예를 들어, NVM(110, 606)) 및 제어기(예를 들어, 제어기(123, 608))로부터 결합해제될 수 있고, 전력 관리 회로(702)는 RAID 제어기에 의해 공급된 전력의 손실이 전력 손실 검출기(708)에 의해 검출된 후 재충전가능 배터리들을 메모리 및 제어기에 결합시키도록 스위치를 인에이블할 수 있다. 예를 들어, 전력 손실 검출기(708)가 Vin이 주어진 기간(예를 들어, 100 μs) 내에 Vref 아래로 감소된 것을 검출하는 경우, 전력 손실 검출기의 출력은 비상 전력 스위치(710)를 활성화하여 배터리 뱅크(612)를 전력 공급부(704)에 결합시키고 이에 의해 비상 전력이 저장 디바이스(602, 808)의 다양한 컴포넌트들에 공급될 수 있게 하는 전력 스위치 인에이블로서의 역할을 할 수 있다. 따라서, 블록(1122)에 의해 표현되는 바와 같이, 전력 관리 회로(702)는 RAID 제어기에 의해 공급된 전력 손실이 (예를 들어, 전력 손실 검출기(708)에 의해) 검출될 때까지 재충전가능 배터리들이 메모리(예를 들어, NVM(110, 606)) 및 제어기(예를 들어, 제어기(123, 608))에 결합되는 것을 방지할 수 있다. 예를 들어, 비상 전력 스위치(710)는, Vin > Vref인 동안 비상 전력이 배터리 뱅크 라인으로부터 전력 공급 라인으로 라우팅되지 않을 수 있도록, 비활성화될 수 있다.
블록(1124)에 의해 표현되는 바와 같이, 제어기는 RAID 제어기로부터의 전력 및/또는 재충전가능 배터리로부터의 추가 전력을 사용하여 데이터를 메모리에 기록할 수 있다. 데이터는 예를 들어 제어 정보 또는 메타데이터일 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 제어기(123, 608)는 (예를 들어, 배터리 뱅크(812)를 통해) RAID 제어기(806)로부터 공급된 비상 전력 또는 저장 디바이스(602, 808) 내의 배터리 뱅크(612)로부터 공급된 추가 비상 전력을 사용하여 제어 정보(620)를 NVM(110, 606)에 기록할 수 있다. 일 예에서, 전력 관리 회로는 복수의 채널들을 통해 메모리에 결합될 수 있고, 블록(1126)에 의해 표현되는 바와 같이, 제어기는 전력 또는 추가 전력을 채널들 중 하나로 라우팅하고, 전력 또는 추가 전력이 채널들 중 다른 채널들로 라우팅되는 것을 방지할 수 있다. 제어 정보 또는 메타데이터는 채널들 중 하나를 통해 라우팅된 전력 또는 라우팅된 추가 전력을 사용하여 메모리에 기록될 수 있다. 예를 들어, 도 1 및 도 6 내지 도 8을 참조하면, 전력 관리 회로(610, 702)는 (도 7의 예에 예시된 바와 같이) 다수의 채널들 1 내지 N을 통해 NVM(110, 606)에 결합될 수 있으며, 여기서 N은 저장 디바이스(602, 808) 내의 주어진 채널 수이고, 제어기(123, 608)는, 전력이 제어 정보(620)를 기록하고 있는 채널에만 라우팅되도록, 채널 인에이블 스위치들 중 하나를 활성화하고 다른 채널 인에이블 스위치들은 비활성화하는 채널 인에이블 신호를 발행할 수 있다.
도 12는 저장 디바이스 내의 메모리(1204)에 결합된 제어기(1202)의 예(1200)를 도시하는 개념도이다. 예를 들어, 제어기(1202)는 제어기(123, 608)에 대응할 수 있고, 메모리(1204)는 도 1, 도 6 및 도 8의 저장 디바이스(102, 602, 808)의 NVM(110, 606)에 대응할 수 있다. 제어기는 소프트웨어, 하드웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 하나의 예시적인 실시예에서, 제어기는 하나 이상의 프로세서들 상에서 실행되는 여러 소프트웨어 모듈들로 구현되지만, 당업자가 이해하는 바와 같이, 제어기는 상이한 방식으로 구현될 수 있다. 당업자는 시스템의 특정 설계 파라미터들에 기초하여 제어기를 가장 잘 구현하는 방법을 쉽게 이해할 것이다.
일 예에서, 제어기(1202)는 RAID 제어기에 의해 공급된 전력을 수신하고, RAID 제어기에 의해 다른 저장 디바이스로 공급된 전력의 손실의 통지를 수신하고, 통지에 응답하여 재충전가능 배터리의 충전량을 검출하고, RAID 제어기에 의해 공급된 전력의 다른 손실을 검출하고, 전력의 손실을 나타내는 메시지를 RAID 제어기에 송신하고, 메시지에 응답하여 RAID 제어기로부터 전력을 수신하기 위한 수단을 제공할 수 있는 전력 모듈(1206)을 포함한다. 예를 들어, 전력 모듈은 도 11과 관련하여 위에서 설명된 프로세스 또는 알고리즘을 수행할 수 있다.
따라서, UGSD를 해결하기 위해 본 개시내용의 저장 디바이스 내의 재충전가능 배터리를 구현함으로써, 저장 디바이스는 단지 커패시터들을 사용하는 PLP 접근법보다 더 낮은 비용 및 더 작은 폼 팩터를 제공한다. 또한, 본 개시내용은 기존 시스템 컴포넌트들로 최적화된 비상 전력 공급부, 데이터 및 제어 정보를 기록하기 위한 충분한 비상 전력, 및 신뢰성 있는 UGSD 핸들링을 제공한다. 추가적으로, 본 개시내용은 전력 손실 핸들링을 위한 호스트/RAID 제어기와 저장 디바이스 간의 신뢰성 있는 통신을 허용하고, 전력 및 호스트 시스템 데이터 안정성을 보장하기 위한 저장 디바이스들 중 하나로부터의 경고 또는 메시지가 있을 때의 RAID 시스템 내의 모든 저장 디바이스들에 대한 호스트/RAID 제어기-인에이블된 전력 안정성 체크들을 설명한다. 예를 들어, 저장 디바이스가 전력을 손실하고 있다는 것을 확인하는 경우, 저장 디바이스는 호스트/RAID 제어기에 통지할 수 있으며, 이는 다른 저장 디바이스들에 PLN을 제공할 뿐만 아니라, 다른 저장 디바이스들로 하여금 이러한 저장 디바이스들이 그들의 캐싱된 데이터를 기록하기에 충분한 전력을 갖고 있는지 여부, 저장 디바이스들이 그들의 배터리들을 재충전할 필요가 있는지 여부, 또는 추가 호스트/RAID 제어기-공급된 전력이 필요하는지 여부를 체크하게 하거나 체크할 수 있다.
본 개시내용의 다양한 양태들은 당업자가 본 발명을 실시할 수 있게 하기 위해 제공된다. 본 개시내용 전반에 걸쳐서 제시된 예시적인 실시예들에 대한 다양한 수정들은 당업자에게 용이하게 명백할 것이며, 본 명세서에 개시된 개념들은 다른 자기 저장 디바이스들로 확장될 수 있다. 따라서, 청구범위는 본 개시내용의 다양한 양태들로 제한되는 것으로 의도되지 않으며, 청구항의 언어와 일치하는 전체 범주에 부합되어야 한다. 당업자에게 알려져 있거나 나중에 알려지게 될 본 개시내용 전반에 걸쳐 기술된 예시적인 실시예들의 다양한 컴포넌트들에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며, 청구범위에 의해 포괄되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도, 그러한 개시내용이 청구항에서 명시적으로 인용되는지 여부에 관계없이 공중에게 전용되는 것으로 의도되지 않는다. 어떠한 청구항 구성요소도, 그 구성요소가 문구 "~하기 위한 수단"을 사용하여 명시적으로 인용되지 않는 한, 또는, 방법 청구항의 경우, 그 구성요소가 문구 "~하기 위한 단계"를 사용하여 인용되지 않는 한, 미국 35 U.S.C. §112(f)의 규정 또는 다른 사법권 내에서 유사한 법령 또는 법규 하에서 해석되어서는 안 된다.

Claims (20)

  1. 저장 디바이스로서,
    메모리;
    상기 메모리에 결합된 제어기;
    상기 메모리 및 상기 제어기에 결합된 전력 관리 회로를 포함하며,
    상기 전력 관리 회로는 복수 배열 독립 디스크(redundant array of independent disks, RAID) 제어기에 의해 공급된 전력의 손실을 검출하고, 상기 제어기로 하여금 상기 전력의 손실을 나타내는 메시지를 상기 RAID 제어기에 송신하게 하고, 상기 메시지에 응답하여 상기 RAID 제어기로부터 전력을 수신하도록 구성되고,
    상기 제어기는 상기 RAID 제어기로부터의 상기 전력을 사용하여 데이터를 상기 메모리에 기록하도록 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 전력의 양은 상기 메모리에 기록될 데이터의 크기에 기초하는, 저장 디바이스.
  3. 제1항에 있어서, 상기 저장 디바이스는,
    상기 전력 관리 회로에 결합된 재충전가능 배터리를 추가로 포함하며, 상기 전력 관리 회로는 상기 RAID 제어기로부터의 상기 전력의 상기 검출된 손실에 응답하여 상기 재충전가능 배터리로부터 상기 메모리로 그리고 상기 제어기로 추가 전력을 라우팅하도록 추가로 구성되는, 저장 디바이스.
  4. 제3항에 있어서, 상기 제어기는 상기 재충전가능한 배터리의 충전량을 주기적으로 모니터링하도록 구성되는, 저장 디바이스.
  5. 제4항에 있어서, 상기 제어기는 상기 전력 관리 회로로 하여금 상기 충전량이 상기 재충전가능 배터리의 전체 용량(full capacity)보다 작은지 여부를 검출하게 하도록 구성되고, 상기 전력 관리 회로는 상기 충전량이 상기 전체 용량보다 작은 것에 응답하여 상기 재충전가능 배터리를 재충전하도록 구성되는, 저장 디바이스.
  6. 제3항에 있어서, 상기 전력 관리 회로는, 상기 RAID 제어기에 의해 공급된 상기 전력의 상기 손실이 검출될 때까지 상기 재충전가능 배터리를 상기 메모리에 그리고 상기 제어기에 결합시키는 것을 방지하도록 구성되는, 저장 디바이스.
  7. 제6항에 있어서, 상기 재충전가능 배터리는 초기에 스위치를 통해 상기 메모리 및 상기 제어기로부터 결합해제되고, 상기 전력 관리 회로는 상기 RAID 제어기에 의해 공급된 상기 전력의 상기 손실이 검출된 후 상기 재충전가능 배터리를 상기 메모리 및 상기 제어기에 결합시키도록 상기 스위치를 인에이블하도록 구성되는, 저장 디바이스.
  8. 제1항에 있어서, 상기 메모리에 기록된 상기 데이터는 제어 정보인, 저장 디바이스.
  9. 제8항에 있어서, 상기 전력 관리 회로는 복수의 채널들을 통해 상기 메모리에 결합되고, 상기 전력 관리 회로는 상기 전력을 상기 채널들 중 하나로 라우팅하고, 상기 전력이 상기 채널들 중 다른 채널들로 라우팅되는 것을 방지하도록 구성되며, 상기 제어 정보는 상기 채널들 중 상기 하나를 통해 상기 라우팅된 전력을 사용하여 상기 메모리에 기록되는, 저장 디바이스.
  10. 저장 디바이스로서,
    메모리;
    상기 메모리에 결합된 제어기;
    상기 메모리 및 상기 제어기에 결합된 전력 관리 회로; 및
    상기 전력 관리 회로에 결합된 재충전가능 배터리를 포함하며,
    상기 제어기는 복수 배열 독립 디스크(RAID) 제어기에 의해 공급된 전력을 수신하고, 상기 RAID 제어기에 의해 다른 저장 디바이스에 공급된 상기 전력의 손실의 통지를 수신하고, 상기 통지에 응답하여 상기 재충전가능 배터리의 충전량을 모니터링하도록 구성되는, 저장 디바이스.
  11. 제10항에 있어서, 상기 전력 관리 회로는 상기 충전량이 상기 재충전가능 배터리의 전체 용량보다 작은지 여부를 검출하고, 상기 충전량이 상기 전체 용량보다 작은 것에 응답하여 상기 재충전가능 배터리를 재충전하도록 구성되는, 저장 디바이스.
  12. 제10항에 있어서, 상기 전력 관리 회로는 상기 RAID 제어기에 의해 공급된 상기 전력의 다른 손실을 검출하고, 상기 제어기로 하여금 상기 전력의 상기 다른 손실을 나타내는 메시지를 상기 RAID 제어기에 송신하게 하고, 상기 메시지에 응답하여 상기 RAID 제어기로부터 전력을 수신하도록 구성되는, 저장 디바이스.
  13. 제12항에 있어서, 상기 전력 관리 회로는 상기 전력의 상기 검출된 손실에 응답하여 상기 재충전가능 배터리로부터 상기 메모리로 그리고 상기 제어기로 추가 전력을 라우팅하도록 추가로 구성되는, 저장 디바이스.
  14. 제13항에 있어서, 상기 제어기는 상기 재충전가능 배터리로부터의 상기 추가 전력을 사용하여 제어 정보를 상기 메모리에 기록하도록 구성되는, 저장 디바이스.
  15. 제14항에 있어서, 상기 전력 관리 회로는 복수의 채널들을 통해 상기 메모리에 결합되고, 상기 전력 관리 회로는 상기 추가 전력을 상기 채널들 중 하나로 라우팅하고, 상기 추가 전력이 상기 채널들 중 다른 채널들로 라우팅되는 것을 방지하도록 구성되며, 상기 제어 정보는 상기 채널들 중 상기 하나를 통해 상기 라우팅된 추가 전력을 사용하여 상기 메모리에 기록되는, 저장 디바이스.
  16. 제12항에 있어서, 상기 전력 관리 회로는, 상기 RAID 제어기에 의해 공급된 상기 전력의 상기 다른 손실이 검출된 후 상기 재충전가능 배터리를 상기 메모리에 그리고 상기 제어기에 결합시키도록 구성되는, 저장 디바이스.
  17. 제16항에 있어서, 상기 재충전가능 배터리는 초기에 스위치를 통해 상기 메모리 및 상기 제어기로부터 결합해제되고, 상기 전력 관리 회로는 상기 RAID 제어기에 의해 공급된 상기 전력의 상기 다른 손실이 검출된 후 상기 재충전가능 배터리를 상기 메모리 및 상기 제어기에 결합시키도록 상기 스위치를 인에이블하도록 구성되는, 저장 디바이스.
  18. 저장 디바이스로서,
    메모리;
    상기 메모리에 결합된 제어기;
    상기 메모리 및 상기 제어기에 결합된 전력 관리 회로; 및
    상기 전력 관리 회로에 결합된 재충전가능 배터리를 포함하며,
    상기 제어기는 복수 배열 독립 디스크(RAID) 제어기에 의해 공급된 전력을 수신하고, 상기 RAID 제어기에 의해 다른 저장 디바이스에 공급된 상기 전력의 손실의 통지를 수신하고, 상기 전력 관리 회로로 하여금 상기 통지에 응답하여 상기 재충전가능 배터리의 충전량을 검출하게 하도록 구성되고;
    상기 전력 관리 회로는 상기 RAID 제어기에 의해 공급된 전력의 다른 손실을 검출하고, 상기 제어기로 하여금 상기 전력의 손실을 나타내는 메시지를 상기 RAID 제어기에 송신하게 하고, 상기 메시지에 응답하여 상기 RAID 제어기로부터 전력을 수신하도록 구성되는, 저장 디바이스.
  19. 제18항에 있어서, 상기 제어기는 상기 RAID 제어기로부터의 상기 전력을 사용하여 메타데이터를 상기 메모리에 기록하도록 구성되는, 저장 디바이스.
  20. 제19항에 있어서, 상기 전력 관리 회로는 복수의 채널들을 통해 상기 메모리에 결합되고, 상기 전력 관리 회로는 상기 전력을 상기 채널들 중 하나로 라우팅하고, 상기 전력이 상기 채널들 중 다른 채널들로 라우팅되는 것을 방지하도록 구성되며, 상기 메타데이터는 상기 채널들 중 상기 하나를 통해 상기 라우팅된 전력을 사용하여 상기 메모리에 기록되는, 저장 디바이스.
KR1020220062756A 2021-12-27 2022-05-23 호스트를 이용해 비정상 셧다운을 핸들링하기 위한 ssd 보조 배터리 전력 KR102669752B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/646,095 2021-12-27
US17/646,095 US11934664B2 (en) 2021-12-27 2021-12-27 SSD auxiliary battery power for handling ungraceful shutdown with host

Publications (2)

Publication Number Publication Date
KR20230099605A KR20230099605A (ko) 2023-07-04
KR102669752B1 true KR102669752B1 (ko) 2024-05-27

Family

ID=86693521

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220062756A KR102669752B1 (ko) 2021-12-27 2022-05-23 호스트를 이용해 비정상 셧다운을 핸들링하기 위한 ssd 보조 배터리 전력

Country Status (4)

Country Link
US (2) US11934664B2 (ko)
KR (1) KR102669752B1 (ko)
CN (1) CN116401092A (ko)
DE (1) DE102022113178A1 (ko)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005228254A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd 記憶装置
WO2005082037A2 (en) 2004-02-24 2005-09-09 Paul Kaler Intelligent solid state disk with hot-swappable components
GB2472051B (en) 2009-07-22 2012-10-10 Wolfson Microelectronics Plc Power management apparatus and methods
US9201604B2 (en) 2010-04-20 2015-12-01 Taejin Info Tech Co., Ltd. Raid controller for a semiconductor storage device
US8510519B2 (en) 2010-08-02 2013-08-13 Taejin Info Tech Co., Ltd. Hybrid raid controller
JP2013196494A (ja) 2012-03-21 2013-09-30 Toshiba Corp メモリシステム
US10283170B2 (en) 2015-01-26 2019-05-07 Wade Bert Tuma Failure safe power source for solid state disk drives
US10139884B2 (en) * 2015-12-23 2018-11-27 Toshiba Memory Corporation Power loss protection for solid state drives
US10521305B2 (en) * 2016-04-29 2019-12-31 Toshiba Memory Corporation Holdup time measurement for solid state drives
US10599503B2 (en) * 2016-07-28 2020-03-24 Dell Products L.P. Triggering power loss protection on solid-state storage devices
JP6732684B2 (ja) * 2017-03-15 2020-07-29 キオクシア株式会社 情報処理装置、ストレージデバイスおよび情報処理システム
JP6738786B2 (ja) * 2017-11-13 2020-08-12 株式会社日立製作所 省電力機能を有するストレージシステム
US10789130B1 (en) * 2018-03-09 2020-09-29 Toshiba Memory Corporation Capacitor energy management for unexpected power loss in datacenter SSD devices
KR102469100B1 (ko) 2018-05-04 2022-11-23 에스케이하이닉스 주식회사 전자 장치, 이를 위한 전원 공급 장치 및 그 제어 방법
KR102602990B1 (ko) 2018-06-27 2023-11-17 에스케이하이닉스 주식회사 전원 공급 장치 및 이를 포함하는 전자 장치

Also Published As

Publication number Publication date
US11934664B2 (en) 2024-03-19
US20240118814A1 (en) 2024-04-11
KR20230099605A (ko) 2023-07-04
CN116401092A (zh) 2023-07-07
US20230205429A1 (en) 2023-06-29
DE102022113178A1 (de) 2023-06-29

Similar Documents

Publication Publication Date Title
US20210173567A1 (en) Non-volatile memory storage for multi-channel memory system
US9639131B2 (en) Systems, methods and devices for control of the operation of data storage devices using solid-state memory
US11507173B2 (en) Memory system
US9417961B2 (en) Resource allocation and deallocation for power management in devices
US9645769B2 (en) Performance acceleration during shutdown of a data storage device
KR102351660B1 (ko) 전력 관리 메커니즘을 갖는 솔리드 스테이트 메모리 시스템 및 그것의 동작 방법
US20080235441A1 (en) Reducing power dissipation for solid state disks
US10564901B2 (en) Memory system and controlling method
US20160231945A1 (en) Geometry aware block reclamation
US10656692B2 (en) Memory system
KR102669752B1 (ko) 호스트를 이용해 비정상 셧다운을 핸들링하기 위한 ssd 보조 배터리 전력
US11868224B2 (en) Memory sub-system data retention via refresh
US20170160975A1 (en) Data buffer adjustment and control method thereof
US20210149574A1 (en) Data storage device, operating method thereof and storage system using the same
CN115810369A (zh) 存储***及存储***的控制方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant