[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101689420B1 - Apparatus, system, and method for power reduction management in a storage device - Google Patents

Apparatus, system, and method for power reduction management in a storage device Download PDF

Info

Publication number
KR101689420B1
KR101689420B1 KR1020127009151A KR20127009151A KR101689420B1 KR 101689420 B1 KR101689420 B1 KR 101689420B1 KR 1020127009151 A KR1020127009151 A KR 1020127009151A KR 20127009151 A KR20127009151 A KR 20127009151A KR 101689420 B1 KR101689420 B1 KR 101689420B1
Authority
KR
South Korea
Prior art keywords
data
power
operations
storage device
data storage
Prior art date
Application number
KR1020127009151A
Other languages
Korean (ko)
Other versions
KR20120093869A (en
Inventor
랜스 스미스
제레미 필링김
데이비드 플라인
빌 인스킵
존 스트라세르
조나단 대처
Original Assignee
샌디스크 테크놀로지스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Publication of KR20120093869A publication Critical patent/KR20120093869A/en
Application granted granted Critical
Publication of KR101689420B1 publication Critical patent/KR101689420B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/141Battery and back-up supplies
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/30Power supply circuits
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)
  • Charge And Discharge Circuits For Batteries Or The Like (AREA)
  • Secondary Cells (AREA)

Abstract

비휘발성 데이터 저장 장치(102)의 전력 손실 관리를 위한 장치, 시스템, 및 방법이 개시된다. 모니터 모듈(510)은 비휘발성 데이터 저장 장치(102)에 미리 결정된 한계치보다 높은 전력을 공급하지 못하는 제1 전원(130)에 응답하여 비휘발성 데이터 저장 장치(102)에서 전력 손실 모드를 시작한다. 제2 전원(124)은 전력 손실 모드 중에 적어도 전력 유지 시간 동안 비휘발성 데이터 저장 장치(102)에 전력을 공급한다. 전력 손실 모듈(520)은 전력 손실 모드 중에 비휘발성 데이터 저장 장치(102)에 대한 프로세스 내의 작동들의 실행을 조절하며 그 결과 필수적인 프로세스 내의 작동들이 전력 유지 시간 내에 실행된다.An apparatus, system, and method for power loss management of a non-volatile data storage device (102) are disclosed. The monitor module 510 initiates a power loss mode in the non-volatile data storage device 102 in response to the first power supply 130 failing to supply power to the non-volatile data storage device 102 higher than a predetermined threshold. The second power supply 124 provides power to the non-volatile data storage device 102 during at least the power hold time during the power loss mode. The power loss module 520 regulates the execution of operations within the process for the non-volatile data storage device 102 during the power loss mode so that operations within the essential processes are performed within the power maintenance time.

Description

저장 장치의 전력 감소 관리를 위한 장치, 시스템, 및 방법{APPARATUS, SYSTEM, AND METHOD FOR POWER REDUCTION MANAGEMENT IN A STORAGE DEVICE}[0001] APPARATUS, SYSTEM, AND METHOD FOR POWER REDUCTION MANAGEMENT IN A STORAGE DEVICE [0002]

본 발명은 정전 중에 효율적인 전력 사용에 관한 것이며 보다 구체적으로는 정전 또는 극적인 전력 감소 중에 저장 장치의 데이터 손실을 방지하는 것에 관한 것이다.The present invention relates to efficient power usage during power outages, and more particularly to preventing data loss of storage devices during power outages or dramatic power reduction.

전력 사용은 많은 상이한 상황에서, 컴퓨팅 장치들에 대단히 중요하다. 하나의 상황에서, 전력은 외부 전력 공급이 차단된 경우에 중요하다. 예를 들면, 플래시 메모리와 같은 고체 상태 저장 장치들(SSD)은 비휘발성 저장장치이다. 따라서, SSD에 기록되는 장치들은, 한번 기록된, 데이터가 영원히 저장된다고 가정한다. 그러나, 특정 SSD 장치들에서, 데이터를 수신한 후에, 데이터에 대한 다수의 작동을 실행하기 위해 SSD는 (DRAM, SRAM, 레지스터들, 버퍼들, 또는 이와 유사한 것과 같은) 휘발성 메모리에 데이터를 유지한다. 정전의 경우에, 휘발성 메모리에 유지되는 데이터는 보존되지 않을 수 있다.Power usage is very important for computing devices in many different situations. In one situation, power is important when the external power supply is interrupted. For example, solid state storage devices (SSD) such as flash memory are non-volatile storage devices. Thus, the devices recorded in the SSD assume that the data, once written, is stored forever. However, in certain SSD devices, after receiving data, the SSD maintains data in volatile memory (such as DRAM, SRAM, registers, buffers, or the like) to perform multiple operations on the data . In the case of a power failure, the data held in the volatile memory may not be preserved.

미국 가출원 번호 61/240,991, 미국 가출원 번호 61/245,622, 미국 가출원 번호 61/368,564U.S. Provisional Application No. 61 / 240,991, U.S. Provisional Application No. 61 / 245,622, U.S. Provisional Application No. 61 / 368,564

앞의 논의로부터, 데이터 저장 장치에서 전력의 감소를 관리하는 장치, 시스템 및 방법에 대한 필요가 존재한다는 것이 명백해야 한다. 유리하게도, 이와 같은 장치, 시스템, 및 방법은 심지어 전력의 중단에도, 비휘발성 데이터 저장장치에 확인된 데이터를 저장할 것이다.From the foregoing discussion it should be clear that there is a need for an apparatus, system and method for managing power reduction in a data storage device. Advantageously, such an apparatus, system, and method will store the verified data in a non-volatile data storage device, even at power interruption.

본 발명은 본 기술분야의 현재 상태에 응답하여, 특히, 현재 이용 가능한 저장 장치들에 의해 아직 완전히 해결하지 못한 본 기술분야의 문제와 필요에 응답하여 개발되었다. 따라서, 본 발명은 많은 또는 모든 위에 논의된 본 기술분야의 결점을 극복하는 전력 감소 관리를 위한 장치, 시스템, 및 방법을 제공하기 위해 개발되었다.The present invention has been developed in response to the present state of the art, in particular in response to the problems and needs of the art which have not yet been completely solved by currently available storage devices. Accordingly, the present invention has been developed to provide a device, system, and method for power reduction management that overcomes many or all of the deficiencies of the art discussed above.

본 발명의 방법은 전력 손실 관리에 제공된다. 개시된 실시예들에서 방법은 설명된 장치 및 시스템의 작동과 관련하여 아래에 제공되는 기능을 실행하는데 필요한 단계들을 실질적으로 포함한다. 일 실시예에서, 방법은 비휘발성 데이터 저장 장치에 미리 결정된 한계치 이상으로 전력을 공급하지 못하는 제1 전원에 응답하여 비휘발성 데이터 저장 장치에 전력 손실 모드를 시작하는 단계를 포함한다. 방법은, 다른 실시예에서, 전력 손실 모드 중에 적어도 전력 유지 시간 동안 제2 전원으로부터 비휘발성 데이터 저장 장치에 전력을 받아들이는 단계를 포함한다. 또 다른 실시예에서, 방법은 필수적인 프로세스 내의 작동들이 전력 유지 시간 내에 실행되도록 전력 손실 모드 중에 비휘발성 데이터 저장 장치에 대한 프로세스 내의 작동들의 실행을 조절하는 단계를 포함한다.The method of the present invention is provided for power loss management. The method in the disclosed embodiments substantially comprises the steps necessary to carry out the functions provided below with respect to the operation of the apparatus and system described. In one embodiment, the method includes initiating a power loss mode to a non-volatile data storage device in response to a first power source that fails to provide power to the non-volatile data storage device beyond a predetermined threshold. The method includes, in another embodiment, receiving power from the second power source to the non-volatile data storage device during at least the power hold time during the power loss mode. In yet another embodiment, the method includes adjusting the execution of operations in the process to a non-volatile data storage device during a power loss mode such that operations within an essential process run within the power maintenance time.

일 실시예에서, 방법은 비휘발성 데이터 저장 장치에 대한 프로세스 내의 작동들로부터 하나 이상의 필수적이지 않은 작동들을 제거함으로써 프로세스 내의 작동들을 실행을 조절한다. 하나 이상의 필수적이지 않은 작동들은, 일 실시예에서, 비휘발성 데이터 저장 장치의 하나 이상의 클라이언트들에게 알려지지 않은 기록 작동들, 소거 작동들, 및 판독 작동들을 포함한다. 필수적인 프로세스 내의 작동들은, 일 실시예에서, 비휘발성 데이터 저장 장치의 하나 이상의 클라이언트들에게 알려진 기록 작동들을 포함한다. 방법은, 일 실시예에서, 하나 이상의 필수적이지 않은 작동을 실행하지 않고 비휘발성 데이터 저장 장치의 전력을 차단하는 단계를 포함한다.In one embodiment, the method adjusts execution of operations in the process by removing one or more non-essential operations from operations within the process for the non-volatile data storage device. One or more non-essential operations, in one embodiment, include write operations, erase operations, and read operations that are not known to one or more clients of the non-volatile data storage device. Operations within an essential process, in one embodiment, include write operations known to one or more clients of the non-volatile data storage device. The method includes, in one embodiment, powering off the non-volatile data storage device without performing one or more non-essential operations.

방법은, 다른 실시예에서, 하나 이상의 필수적이지 않은 작동들이 비휘발성 데이터 저장 장치에 대해 실행되지 않도록 하나 이상의 명령 대기열에서 하나 이상의 필수적이지 않은 작동들을 생략함으로써 프로세스 내의 작동들의 실행을 조절한다. 다른 실시예에서, 방법은 전력 유지 시간 내에 필수적인 프로세스 내의 작동들을 실행하기 위해 프로세스 내의 작동들의 선택을 재정렬함으로써 프로세스 내의 작동들의 실행을 조절한다.The method, in another embodiment, controls the execution of operations within the process by omitting one or more non-essential operations in the one or more instruction queues such that one or more non-essential operations are not performed on the non-volatile data storage device. In another embodiment, the method adjusts the execution of operations within the process by reordering the selection of operations within the process to perform operations within the process that are essential within the power maintenance time.

일 실시예에서, 방법은 비휘발성 데이터 저장 장치의 하나 이상의 비휘발성 메모리 소자들을 재설정함으로써 프로세스 내의 작동들의 실행을 조절한다. 방법은, 다른 실시예에서, 하나 이상의 비휘발성 메모리 영역들을 재설정하는 것에 응답하여 하나 이상의 비휘발성 메모리 소자들에 대해 필수적인 프로세스 내의 작동들을 실행하는 단계를 포함한다. 일 실시예에서, 하나 이상의 비휘발성 메모리 소자들은 비휘발성 데이터 저장 장치의 실질적으로 모든 비휘발성 메모리 소자들을 포함한다. 다른 실시예에서, 하나 이상의 비휘발성 메모리 소자들은 프로세스 내의 작동들로부터 미결의 필수적이지 않은 작동을 처리하는 비휘발성 메모리 소자들의 하나 이상의 뱅크들을 포함한다. 각각의 뱅크는, 일 실시예에서, 복수의 비휘발성 메모리 다이들(nonvolatile memory dies)을 포함한다. 현재 처리되는 필수적이지 않은 작동들은, 일 실시예에서, 소거 작동들이다.In one embodiment, the method adjusts the performance of operations within the process by resetting one or more non-volatile memory elements of the non-volatile data storage device. The method includes, in another embodiment, performing operations within a process that are essential for one or more non-volatile memory elements in response to resetting one or more non-volatile memory regions. In one embodiment, the one or more non-volatile memory elements comprise substantially all non-volatile memory elements of the non-volatile data storage device. In another embodiment, the one or more non-volatile memory elements comprise one or more banks of non-volatile memory elements that handle pending non-essential operations from operations within the process. Each bank, in one embodiment, comprises a plurality of nonvolatile memory dies. Non-essential operations that are currently being processed are, in one embodiment, erase operations.

일 실시예에서, 방법은 전력 손실 모드를 시작하는 것에 응답하여 비휘발성 데이터 저장 장치의 하나 이상의 하위 소자들의 비활성화 작동을 더 포함한다. 하나 이상의 하위 소자들의 작동을 비활성화하는 것은, 일 실시예에서, 전력 유지 시간을 제공하기 위해 제2 전원의 에너지를 보존시킨다. 방법은, 다른 실시예에서, 비휘발성 데이터 저장 장치의 비휘발성 메모리에 대한 필수적인 프로세스 내의 작동들과 관련되는 버퍼된 불완전 데이터를 플러싱(flushing)함으로써 프로세스 내의 작동들의 실행을 조절하며 그 결과 비휘발성 메모리는 전력 유지 시간 내에 버퍼된 불완전 데이터를 저장한다.In one embodiment, the method further comprises deactivating operation of one or more sub-elements of the non-volatile data storage device in response to initiating the power loss mode. Deactivating the operation of one or more child elements, in one embodiment, conserves the energy of the second power supply to provide a power hold time. The method, in another embodiment, controls the execution of operations in the process by flushing buffered incomplete data associated with operations within a required process for a non-volatile memory of the non-volatile data storage device, Lt; / RTI > stores the buffered incomplete data within the power hold time.

방법은, 일 실시예에서, 비휘발성 데이터 저장 장치에 대해, 비휘발성 데이터 저장 장치가 전력 손실 모드를 시작하는 식별자를 저장하는 단계를 포함한다. 다른 실시예에서, 방법은, 비휘발성 데이터 저장 장치에 대해, 필수적인 프로세스 내의 작동들이 전력 유지 시간 내에 실행을 완료하는 것을 식별하기 위해 식별자를 저장하는 단계를 포함한다. 식별자는, 일 실시예에서, 비휘발성 데이터 저장 장치에 대한 전력의 복원에 응답하여 비휘발성 데이터 저장 장치로부터 검색을 위해 저장된다. 제2 전력 공급부는, 일 실시예에서, 필수적인 프로세스 내의 작동들을 실행하기 위해 전력 유지 시간을 제공하는데 충분한 에너지를 저장할 수 있는 하나 이상의 캐패시터들을 포함한다.The method includes, in one embodiment, storing, for a non-volatile data storage device, an identifier from which the non-volatile data storage device initiates a power loss mode. In another embodiment, the method includes storing, for a non-volatile data storage device, an identifier to identify that operations in an essential process complete execution within a power hold time. The identifier, in one embodiment, is stored for retrieval from a non-volatile data storage device in response to restoring power to the non-volatile data storage device. The second power supply comprises, in one embodiment, one or more capacitors capable of storing sufficient energy to provide a power hold time to perform operations within an essential process.

전력 손실 관리를 위한 장치는 저장 장치에서 전력 손실을 관리하는 필요한 단계들을 기능적으로 실행하도록 구성되는 복수의 모듈로 제공된다. 설명된 실시예의 이런 모듈들은 모니터 모듈, 제2 전원, 및 완성 모듈을 포함한다.An apparatus for power loss management is provided in a plurality of modules configured to functionally perform the necessary steps to manage power loss in a storage device. Such modules of the described embodiments include a monitor module, a second power supply, and a completion module.

모니터 모듈은, 일 실시예에서, 비휘발성 데이터 저장 장치에 미리 결정된 한계치 이상의 전력을 공급하지 못하는 제1 전원에 응답하여 비휘발성 데이터 저장 장치에서 전력 손실 모드를 시작한다. 제2 전원은, 일 실시예에서, 전력 손실 모드 중에 적어도 전력 유지 시간 동안 비휘발성 데이터 저장 장치에 전력을 공급한다. 완성 모듈은, 일 실시예에서, 전력 손실 모드 중에 비휘발성 데이터 저장 장치에 대한 프로세스 내의 작동들의 실행을 조절하며 그 결과 필수적인 프로세스 내의 작동들이 전력 유지 시간 내에 실행된다. 다른 실시예에서, 완성 모들은 필수적이지 않은 작동을 제거하기 위해 프로세스 내의 작동들로부터 필수적이지 않은 작동을 지금 처리하는 비휘발성 데이터 저장 장치의 하나 이상의 비휘발성 메모리 소자들을 리셋함으로써 프로세스 내의 작동들의 실행을 조절한다.The monitor module, in one embodiment, initiates a power loss mode in the non-volatile data storage device in response to a first power source that fails to provide power to the non-volatile data storage device beyond a predetermined threshold. The second power supply, in one embodiment, powers the non-volatile data storage device during at least the power hold time during the power loss mode. The completion module, in one embodiment, controls the execution of operations within the process for the non-volatile data storage device during the power loss mode, such that operations within the essential processes are performed within the power maintenance time. In another embodiment, completion models are configured to perform operations in a process by resetting one or more non-volatile memory elements of a non-volatile data storage device that now processes non-essential operations from operations within the process to remove non- .

본 발명의 시스템이 저장 장치에서 전력 손실을 관리하기 위해 또한 제공된다. 시스템은 어댑터, 제1 전원, 적어도 하나의 모니터 모듈, 적어도 하나의 제2 전원, 및 하나 이상의 완성 모듈들로 구현될 수 있다. 특히, 시스템은, 일 실시예에서, 둘 이상의 비휘발성 데이터 저장 장치들을 포함한다.The system of the present invention is also provided for managing power loss in a storage device. The system may be implemented with an adapter, a first power source, at least one monitor module, at least one second power source, and one or more completion modules. In particular, the system comprises, in one embodiment, two or more non-volatile data storage devices.

어댑터는, 일 실시예에서, 둘 이상의 비휘발성 데이터 저장 장치들을 수용하도록 구성된다. 제1 전원은, 일 실시예에서, 둘 이상의 비휘발성 데이터 저장 장치들에 전력을 공급하기 위해 어댑터에 전기적으로 결합된다.The adapter, in one embodiment, is configured to accommodate two or more non-volatile data storage devices. The first power source, in one embodiment, is electrically coupled to the adapter to power two or more non-volatile data storage devices.

적어도 하나의 모니터 모듈은, 일 실시예에서, 미리 결정된 한계치 이상의 전력을 공급하지 못하는 제1 전원에 응답하여 비휘발성 데이터 저장 장치들에서 전력 손실 모드를 시작한다. 적어도 하나의 제2 전원은, 일 실시예에서, 어댑터에 전기적으로 결합된다. 각각의 제2 전원은, 다른 실시예에서, 전력 손실 모드 중에 적어도 전력 유지 시간 동안 비휘발성 데이터 저장 장치들 중의 적어도 하나에 전력을 공급하도록 구성된다.At least one monitor module, in one embodiment, initiates a power loss mode in non-volatile data storage devices in response to a first power source that fails to provide power above a predetermined threshold. At least one second power source, in one embodiment, is electrically coupled to the adapter. Each second power supply, in another embodiment, is configured to power at least one of the non-volatile data storage devices during at least the power hold time during the power loss mode.

하나 이상의 완성 모듈들은, 일 실시예에서, 전력 손실 모드 중에 비휘발성 데이터 저장 장치들에 대한 프로세스 내의 작동들의 실행을 조절하며 그 결과 필수적인 프로세스 내의 작동들이 전력 유지 시간 내에 실행된다. 하나 이상의 완성 모듈들은, 일 실시예에서, 각각의 비휘발성 저장 장치에 대해 별도의 완성 모듈을 포함하며 각각의 별도의 완성 모듈은 관련된 비휘발성 데이터 저장 장치에 대해 프로세스 내의 작동들의 실행을 조절한다. 다른 실시예에서, 하나 이상의 완성 모듈들은 둘 이상의 비휘발성 데이터 저장 장치들에 대해 프로세스 내의 작동들의 실행을 조절하는 단일 시스템 완성 모듈이다.The one or more completion modules, in one embodiment, regulate the execution of operations within the process for non-volatile data storage devices during the power loss mode, such that operations within the essential processes are performed within the power maintenance time. The one or more completion modules, in one embodiment, include a separate completion module for each non-volatile storage device, and each separate completion module controls the execution of operations within the process for the associated non-volatile data storage device. In another embodiment, the one or more completion modules are a single system completion module that coordinates the execution of operations within the process for two or more non-volatile data storage devices.

본 명세서 전체에 걸쳐 특징들, 이점들, 또는 유사한 언어에 대한 언급은 본 발명으로 실현될 수 있는 모든 특징들 및 이점들이 본 발명의 임의의 단일의 실시예에 있어야 한다는 것을 의미하지 않는다. 오히려, 특징들 및 이점들을 가리키는 언어는 하나의 실시예와 관련하여 설명된 특수한 특징, 이점, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미하는 것으로 이해된다. 따라서, 본 명세서 전체에 걸쳐 특징들과 이점들, 및 유사한 언어의 논의는, 반드시 필요하지는 않지만, 동일한 실시예를 가리킨다.Reference to features, advantages, or similar language throughout this specification does not imply that all features and advantages that may be realized with the present invention should be in any single embodiment of the present invention. Rather, the language (s) referring to features and advantages are understood to mean that a particular feature, advantage, or characteristic described in connection with one embodiment is included in at least one embodiment of the invention. Accordingly, the discussion of features and advantages, and similar language, throughout this specification, while not necessarily required, refers to the same embodiment.

게다가, 본 발명의 설명된 특징들, 이점들, 및 특성들은 하나 이상의 실시예들에 임의의 적당한 방식으로 결합될 수 있다. 관련된 기술분야에 숙련된 사람은 본 발명이 특정한 실시예의 하나 이상의 특수한 특징들 또는 이점들 없이 실시될 수 있다는 것을 인지할 것이다. 다른 예들에서, 본 발명의 모든 실시예들에 제공될 수 없는 추가적인 특징들 및 이점들이 특정한 실시예에서 인지될 수 있다.In addition, the described features, advantages, and characteristics of the present invention may be combined in any suitable manner in one or more embodiments. Those skilled in the relevant art will recognize that the present invention may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages that can not be provided in all embodiments of the invention may be recognized in specific embodiments.

본 발명의 이런 특징들 및 이점들은 다음의 설명과 첨부된 청구항들로부터 보다 완전하게 명백해질 것이거나, 이후에 설명되는 바와 같은 본 발명의 실시에 의해 습득될 수 있다.These features and advantages of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as described hereinafter.

본 발명에 따르면, 데이터 저장 장치에서 전력의 감소를 관리하는 장치, 시스템 및 방법이 제공된다. According to the present invention, an apparatus, system and method for managing the reduction of power in a data storage device are provided.

본 발명의 이점들이 쉽게 이해되기 위해, 위에 간단히 설명된 본 발명의 보다 특정한 설명이 첨부된 도면들에 도시된 특정한 실시예들을 참조하여 제공될 것이다. 이런 도면들은 본 발명의 단지 일반적인 실시예들을 도시하며 그에 따라 이의 범위를 제한하는 것으로 간주되지 않는다는 것을 이해한다면, 본 발명은 첨부한 도면들의 사용을 통해 추가적인 특수함과 상세함으로 기술되며 설명될 것이며, 여기서:
도 1은 예기치 않은 정전의 경우에 개선된 데이터 취급을 가능하게 하는 전력 관리 장치를 가지는 저장 장치를 포함하는 시스템의 일 실시예를 도시하는 개략적인 블록도이며;
도 2는 데이터 저장 장치를 위한 고체 상태 저장 장치 컨트롤러의 일 실시예를 도시하는 개략적인 블록도이며;
도 3은 데이터 저장 장치에 기록 데이터 파이프라인과 판독 데이터 파이프라인을 가지는 고체 상태 저장 컨트롤러의 일 실시예를 도시하는 개략적인 블록도이며;
도 4는 고체 상태 저장 컨트롤러에 있는 뱅크 인터리브 컨트롤러(bank interleave controller)의 일 실시예를 도시하는 개략적인 블록도이며;
도 5a는 전력 관리 장치의 일 실시예를 도시하는 개략적인 블록도이며;
도 5b는 데이터 손상과 관련된 타임라인의 일 예이며;
도 6은 전력 관리 장치 및 이와 전력 관리 장치가 상호 작용하는 비휘발성 메모리의 일 실시예를 도시하는 개략적인 블록도이며;
도 7은 기록 데이터 파이프라인의 일 실시예를 도시하는 개략적인 블록도이며;
도 8은 예기치 않은 정전의 경우에 개선된 데이터 취급을 위한 방법의 일 실시예를 도시하는 개략적인 순서도이며; 및
도 9는 예기치 않은 정전의 경우에 개선된 데이터 취급을 위한 방법의 다른 실시예를 도시하는 개략적인 순서도이다.
For a better understanding of the advantages of the present invention, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. It is to be understood that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, here:
1 is a schematic block diagram illustrating one embodiment of a system including a storage device having a power management device that enables improved data handling in case of unexpected power failure;
2 is a schematic block diagram illustrating one embodiment of a solid state storage controller for a data storage device;
3 is a schematic block diagram illustrating one embodiment of a solid state storage controller having a write data pipeline and a read data pipeline in a data storage device;
4 is a schematic block diagram illustrating one embodiment of a bank interleave controller in a solid state storage controller;
5A is a schematic block diagram illustrating an embodiment of a power management apparatus;
Figure 5b is an example of a timeline associated with data corruption;
Figure 6 is a schematic block diagram illustrating one embodiment of a non-volatile memory in which the power management device and the power management device interact;
Figure 7 is a schematic block diagram illustrating one embodiment of a write data pipeline;
8 is a schematic flow diagram illustrating one embodiment of a method for improved data handling in the event of an unexpected outage; And
Figure 9 is a schematic flow diagram illustrating another embodiment of a method for improved data handling in the event of an unexpected outage.

본 명세서 전체에 걸쳐 특징들, 이점들, 또는 유사한 언어에 대한 언급은 본 발명으로 실현될 수 있는 모든 특징들 및 이점들이 본 발명의 임의의 단일의 실시예에 있어야 한다는 것을 의미하지 않는다. 오히려, 특징들 및 이점들을 가리키는 언어는 하나의 실시예와 관련하여 설명된 특수한 특징, 이점, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미하는 것으로 이해된다. 따라서, 본 명세서 전체에 걸쳐 특징들과 이점들, 및 유사한 언어의 논의는, 반드시 필요하지는 않지만, 동일한 실시예를 가리킨다.Reference to features, advantages, or similar language throughout this specification does not imply that all features and advantages that may be realized with the present invention should be in any single embodiment of the present invention. Rather, the language (s) referring to features and advantages are understood to mean that a particular feature, advantage, or characteristic described in connection with one embodiment is included in at least one embodiment of the invention. Accordingly, the discussion of features and advantages, and similar language, throughout this specification, while not necessarily required, refers to the same embodiment.

게다가, 본 발명의 설명된 특징들, 이점들, 및 특성들은 하나 이상의 실시예들에 임의의 적당한 방식으로 결합될 수 있다. 관련된 기술분야에 숙련된 사람은 본 발명이 특정한 실시예의 하나 이상의 특수한 특징들 또는 이점들 없이 실시될 수 있다는 것을 인지할 것이다. 다른 예들에서, 본 발명의 모든 실시예들에 제공될 수 없는 추가적인 특징들 및 이점들이 특정한 실시예에서 인지될 수 있다. 본 발명의 이런 특징들 및 이점들은 다음의 설명과 첨부된 청구항들로부터 보다 완전하게 명백해질 것이거나, 이후에 설명되는 바와 같은 본 발명의 실시에 의해 습득될 수 있다.In addition, the described features, advantages, and characteristics of the present invention may be combined in any suitable manner in one or more embodiments. Those skilled in the relevant art will recognize that the present invention may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages that can not be provided in all embodiments of the invention may be recognized in specific embodiments. These features and advantages of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as described hereinafter.

본 명세서에 설명되는 많은 기능적인 유닛들은 이들의 실행 독립성을 보다 구체적으로 강조하기 위해, 모듈들로 분류되었다. 예를 들어, 모듈은 주문형 VLSI 회로들이나 게이트 어레이들, 로직 칩들과 같은 기성품의 반도체들, 트랜지스터들, 또는 다른 독립된 소자들을 포함하는 하드웨어 회로로 실행될 수 있다. 모듈은 또한 필드 프로그램 가능 게이트 어레이들, 프로그램 가능 어레이 로직, 프로그램 가능 로직 장치들 또는 이와 유사한 것과 같은 프로그램 가능 하드웨어 장치들로 실행될 수 있다.Many of the functional units described herein have been classified as modules in order to more specifically emphasize their performance independence. For example, the module may be implemented as a hardware circuit comprising custom VLSI circuits or ready-made semiconductors, such as gate arrays, logic chips, transistors, or other discrete components. The module may also be implemented as programmable hardware devices, such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like.

모듈들은 또한 다양한 타입의 프로세서들에 의한 실행을 위해 소프트웨어로 실행될 수 있다. 예를 들면, 식별된 모듈의 실행 가능 코드는, 예를 들면, 객체, 절차, 또는 기능으로 편성될 수 있는 컴퓨터 명령들의 하나 이상의 물리적 또는 논리적 블록들을 포함할 수 있다. 그럼에도 불구하고, 식별된 모듈의 실행 가능은 물리적으로 함께 위치할 필요는 없지만, 논리적으로 함께 연결될 때, 모듈을 포함하며 모듈에 대한 정해진 목적을 달성하는 상이한 위치에 저장되는 서로 다른 명령들을 포함할 수 있다.The modules may also be implemented in software for execution by various types of processors. For example, the executable code of the identified module may include one or more physical or logical blocks of computer instructions that may be organized, for example, as an object, procedure, or function. Nonetheless, the executables of the identified modules need not be physically co-located, but may include different instructions that, when logically linked together, contain the module and are stored in different locations to achieve the intended purpose for the module have.

사실상, 모듈의 실행 가능 코드는 단일 명령, 또는 다수의 명령들일 수 있으며, 상이한 프로그램들 사이에서, 그리고 몇몇 메모리 장치들에 걸쳐 몇몇의 상이한 코드 세그먼트들의 위에 고르게 분산될 수 있다. 마찬가지로, 작동 데이터는 식별될 수 있으며 여기서 모듈들의 내에서 도시될 수 있으며, 임의의 적당한 형태로 구현될 수 있으며 임의의 적당한 타입의 데이터 구조 내에 조직될 수 있다. 작동 데이터는 단일 데이터 세트로 수집될 수 있거나, 상이한 저장 장치들의 위를 포함하는 상이한 위치의 위에 분산될 수 있으며, 적어도 부분적으로, 단지 시스템이나 네트워크에 대한 전자 신호들로 존재할 수 있다. 모듈 또는 모듈의 일부분이 소프트웨어로 실행되는 경우에, 소프트웨어 부분은 하나 이상의 컴퓨터 판독 가능 매체에 저장된다.In fact, the executable code of a module may be a single instruction, or multiple instructions, distributed evenly over several different code segments, between different programs, and across several memory devices. Likewise, operational data can be identified and shown therein within modules, and can be implemented in any suitable form and organized in any suitable type of data structure. The operational data may be collected into a single data set, distributed over different locations including over different storage devices, and may exist, at least in part, merely as electronic signals to the system or network. Where a module or portion of a module is executed in software, the software portion is stored in one or more computer readable media.

본 명세서 전체에 걸쳐 "일 실시예(one embodiment)", 일 실시예(an embodiment), 또는 유사한 언어에 대한 언급은 실시예와 관련하여 설명된 특수한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 "일 실시예(one embodiment)", 일 실시예(an embodiment), 또는 유사한 언어의 문구의 출현은, 반드시 필요하지는 않지만, 모두 동일한 실시예를 가리킨다.Reference throughout this specification to "one embodiment, " an embodiment, or similar language, means that a particular feature, structure, or characteristic described in connection with the embodiment is at least one ≪ / RTI > Accordingly, the appearances of the phrase "one embodiment, " an embodiment, or similar language throughout this specification are not necessarily required, but all refer to the same embodiment.

컴퓨터 판독 가능 매체에 대한 언급은 디지털 프로세싱 장치에 대한 저장 기계-판독 가능 명령들을 할 수 있는 임의의 형태를 취할 수 있다. 컴퓨터 판독 가능 매체는 콤팩트 디스크, 디지털-비디오 디스크, 자기 데이프, 베르누이 드라이브, 자기 디스크, 펀치 카드, 플래시 메모리, 집적 회로들, 또는 다른 디지털 프로세싱 장치 메모리 장치에 의해 구현될 수 있다.Reference to a computer-readable medium may take any form capable of executing stored machine-readable instructions for a digital processing device. The computer-readable medium may be embodied by a compact disk, a digital-video disk, a magnetic disk, a Bernoulli drive, a magnetic disk, a punch card, a flash memory, an integrated circuit, or other digital processing device memory device.

더구나, 본 발명의 설명된 특징들, 구조들, 또는 특성들은 하나 이상의 실시예들에서 임의의 적당한 방식으로 결합될 수 있다. 다음의 설명에서, 본 발명의 실시예들의 완전한 이해를 제공하기 위해, 프로그래밍, 소프트웨어 모듈, 사용자 선택, 네트워크 거래, 데이터베이스 질의, 데이터베이스 구조, 하드웨어 모듈, 하드웨어 회로, 하드웨어 칩 등의 예와 같은 수많은 특정한 세부 사항들이 제공된다. 관련 기술분야에서 숙련된 사람은, 그러나, 본 발명이 하나 이상의 특수한 세부 사항들 없이, 또는 다른 방법들, 소자들, 재료들, 및 기타 등등으로 실시될 수 있다는 것을 인지할 것이다. 다른 예에서, 잘 알려진 구조들, 재료들, 또는 작동들은 본 발명의 불분명한 양상들을 회피하기 위해 상세하게 보여지지 않거나 설명되지 않는다.Moreover, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are set forth such as examples of programming, software modules, user selection, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc. to provide a thorough understanding of embodiments of the invention. Details are provided. Those skilled in the relevant art will recognize, however, that the present invention may be practiced without one or more of the specific details, or with other methods, elements, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail in order to avoid obscuring aspects of the present invention.

여기에 포함되는 개략적인 순서도들은 일반적으로 논리 순서도들로 설명된다. 이와 같이, 도시된 순서와 분류된 단계들은 본 방법의 일 실시예를 가리킨다. 설명된 방법의 하나 이상의 단계들, 또는 이의 부분들에 대한 기능, 논리, 또는 효과와 동등한 다른 단계들 및 방법들이 구상될 수 있다. 더구나, 사용되는 포맷 및 기호들은 본 방법의 논리 단계들을 설명하기 위해 제공되며 본 방법의 범위를 제한하지 않는 것으로 이해된다. 다양한 화살표 타입과 라인 타입이 순서도들에 사용될 수 있지만, 이들은 상응하는 방법의 범위를 제한하지 않는 것으로 이해된다. 사실상, 몇몇 화살표들 또는 다른 연결자들이 본 방법의 논리 흐름만을 지시하는데 사용될 수 있다. 예를 들면, 화살표는 도시된 방법의 열거되는 단계들 사이의 불특정한 지속 기간의 대기 또는 모니터링 기간을 가리킬 수 있다. 더구나, 특정한 방법이 일어나는 순서는 도시되는 상응하는 단계들의 순서를 엄격히 따를 수 있거나 엄격히 따르지 않을 수 있다.The schematic flow charts contained herein are generally described in logical flow diagrams. As such, the order shown and the steps categorized refer to one embodiment of the method. Other steps and methods equivalent to function, logic, or effect of one or more steps of the described method, or portions thereof, may be envisioned. Moreover, the formats and symbols used are provided to illustrate the logical steps of the method and are understood to not limit the scope of the method. While various arrow types and line types may be used in the flowcharts, it is understood that they do not limit the scope of the corresponding method. In fact, some arrows or other connectors may be used to indicate only the logic flow of the method. For example, the arrows may indicate an idle or monitoring period of indefinite duration between enumerated steps of the depicted method. Moreover, the order in which a particular method occurs may strictly follow or not strictly follow the order of the corresponding steps shown.

전력 감소 관리Power reduction management

도 1은 정전, 전력 감소, 또는 다른 전력 손실의 경우에 개선된 데이터 관리를 위한 시스템(100)의 일 실시예를 도시한다. 도시된 실시예에서, 시스템(100)은 클라이언트(114) 및 저장 장치(102)를 포함한다. 클라이언트(114)는 서버, 랩탑, 데스크탑, 또는 본 기술분야에 알려진 다른 클라이언트 장치와 같은 컴퓨터일 수 있다. 클라이언트(114)는 일반적으로 메모리, 프로세서들, 버스들, 및 본 기술분야의 기술자들에게 알려진 바와 같은 다른 소자들과 같은 소자들을 포함한다.Figure 1 illustrates one embodiment of a system 100 for improved data management in the event of power failure, power reduction, or other power loss. In the illustrated embodiment, the system 100 includes a client 114 and a storage device 102. The client 114 may be a computer, such as a server, laptop, desktop, or other client device known in the art. The client 114 generally includes elements such as memory, processors, busses, and other elements as known to those skilled in the art.

클라이언트(114)는 저장 장치(102)에 데이터를 저장하며 통신 접속부(도시되지 않음)를 통해 저장 장치(102)와 데이터를 통신한다. 저장 장치(102)는 클라이언트(114)의 내부에 있거나 클라이언트(114)의 외부에 있을 수 있다. 통신 접속부는 클라이언트(114)와 저장 장치(102) 사이에서 데이터의 전송을 허용하는 버스, 네트워크, 또는 다른 방식의 접속부일 수 있다. 일 실시예에서, 저장 장치(102)는 PCI 익스프레스("PCI-e")와 같은 PCI 접속부에 의해 클라이언트(114)에 연결된다. 저장 장치(102)는 클라이언트(114)에 대한 PCI-e 접속부에 접속되는 카드일 수 있다.The client 114 stores data in the storage device 102 and communicates data with the storage device 102 via a communication connection (not shown). The storage device 102 may be internal to the client 114 or external to the client 114. The communication connection may be a bus, a network, or other type of connection that allows the transfer of data between the client 114 and the storage device 102. In one embodiment, the storage device 102 is connected to the client 114 by a PCI connection, such as a PCI Express ("PCI-e"). The storage device 102 may be a card connected to the PCI-e connection to the client 114.

저장 장치(102)는 또한 이것이 판독, 기록, 소거 등과 같은 데이터 저장 작동들을 실행하는데 필요한 전력을 저장 장치(102)에 제공하는 제1 전원에 저장 장치(102)를 연결하는 제1 전력 접속부(130)를 가진다. 저장 장치(102)는, 통상의 작동 조건 하에, 제1 전력 접속부(130)를 통해 제1 전원으로부터 필요한 전력을 받아들인다. 도 1에 도시된 실시예와 같은 특정 실시예들에서, 제1 전력 접속부(130)는 저장 장치(102)를 클라이언트(114)에 연결하며, 클라이언트(114)는 저장 장치(102)에 전력을 공급하는 제1 전원으로 작동한다. 특정 실시예들에서, 위에 논의된 제1 전력 접속부(130)와 통신 접속부는 클라이언트(114)와 저장 장치(102) 사이의 동일한 물리적 접속부의 일부분이다. 예를 들면, 저장 장치(102)는 PCI 접속부를 통해 전력을 받아들일 수 있다.The storage device 102 also includes a first power connection 130 that connects the storage device 102 to a first power source that provides the storage device 102 with the power necessary to perform data storage operations such as reading, ). The storage device 102 receives the required power from the first power source through the first power connection 130 under normal operating conditions. In certain embodiments, such as the embodiment shown in FIG. 1, the first power connection 130 connects the storage device 102 to the client 114 and the client 114 provides power to the storage device 102 And operates with the first power supply. In certain embodiments, the first power connection 130 and the communication connection discussed above are part of the same physical connection between the client 114 and the storage device 102. For example, the storage device 102 may receive power through a PCI connection.

다른 실시예들에서, 저장 장치(102)는 제1 전력 접속부(130)를 통해 외부 전력 공급부에 연결될 수 있다. 예를 들면, 제1 전력 접속부(130)는 전력 컨버터(전력 브릭(power brick)으로 종종 불리는)인 제1 전원에 저장 장치(102)를 연결할 수 있다. 본 기술분야의 사람들은 저장 장치(102)가 전력을 받아들일 수 있는 다양한 방식, 및 저장 장치(102)를 위한 제1 전원으로 작동할 수 있는 다양한 장치들이 있다는 것을 이해할 것이다.In other embodiments, the storage device 102 may be coupled to an external power supply via the first power connection 130. [ For example, the first power connection 130 may connect the storage device 102 to a first power source that is a power converter (often referred to as a power brick). Those skilled in the art will appreciate that there are a variety of ways that the storage device 102 can accept power, and various devices that can operate with the first power source for the storage device 102.

저장 장치(102)는 클라이언트(114)를 위한 비휘발성 저장부를 제공한다. 도 1은 기록 데이터 파이프라인(106), 판독 데이터 파이프라인(108), 비휘발성 메모리(110), 저장 컨트롤러(104), 전력 관리 장치(122), 및 제2 전력 공급부(124)를 포함하는 저장 장치(102)를 도시한다. 저장 장치(102)는 저장 장치(102)의 보다 단순화된 도면을 제공하기 위해 도시되지 않은 추가적인 소자들을 포함할 수 있다.The storage device 102 provides a non-volatile store for the client 114. 1 is a block diagram of a system 100 that includes a write data pipeline 106, a read data pipeline 108, a non-volatile memory 110, a storage controller 104, a power management device 122, and a second power supply 124 Storage device 102 is shown. The storage device 102 may include additional elements not shown to provide a more simplified illustration of the storage device 102.

비휘발성 메모리(110)는 심지어 저장 장치(102)가 전력이 차단된 때에도 데이터가 유지될 정도로 데이터를 저장한다. 비휘발성 메모리(110)의 예는 (플래시와 같은) 고체 상태 메모리, 하드 디스크, 테이프, 또는 다른 것들을 포함한다. 저장 장치(102)는 또한 비휘발성 메모리(110)에서 데이터의 저장과 검색을 정리하는 저장 컨트롤러(104)를 포함한다. 저장 컨트롤러(104)는 데이터를 위치시키거나 검색하기 위해 하나 이상의 인덱스를 사용할 수 있으며 저장 장치(102)에 저장된 데이터에 대한 다른 작동들을 실행할 수 있다. 예를 들면, 저장 컨트롤러(104)는 불필요 데이터 수집과 같은 데이터 그루밍 작동을 실행하기 위한 그루머(groomer)를 포함할 수 있다.The non-volatile memory 110 stores data such that even when the storage device 102 is powered off, the data is retained. Examples of non-volatile memory 110 include solid-state memory (such as flash), hard disk, tape, or others. The storage device 102 also includes a storage controller 104 that organizes the storage and retrieval of data in non-volatile memory 110. The storage controller 104 may use one or more indexes to locate or retrieve data and may perform other operations on data stored in the storage device 102. For example, the storage controller 104 may include a groomer for performing data grooming operations, such as garbage collection.

도시된 바와 같이, 저장 장치(102)는, 특정 실시예들에서, 기록 데이터 파이프라인(106)과 판독 데이터 파이프라인(108)을 실행하며, 이의 예는 도 3에 관해 아래에 보다 상세하게 설명된다. 기록 데이터 파이프라인(106)은 데이터가 클라이언트(114)로부터 비휘발성 메모리(110)로 전송될 때 데이터에 대한 특정 작동들을 실행할 수 있다. 이런 작동들은, 예를 들면, 에러 수집 코드(ECC) 생성, 암호화, 압축, 및 다른 것들을 포함할 수 있다. 판독 데이터 파이프라인(108)은 비휘발성 메모리(110)로부터 판독되며 클라이언트(114)에 전송되는 데이터에 대해 유사하며 잠재적으로는 반대의 작동들을 실행할 수 있다.As shown, the storage device 102, in certain embodiments, executes a write data pipeline 106 and a read data pipeline 108, examples of which are described in more detail below with respect to FIG. 3 do. The write data pipeline 106 may perform certain operations on the data as it is transferred from the client 114 to the non-volatile memory 110. [ These operations may include, for example, Error Acquisition Code (ECC) generation, encryption, compression, and others. Read data pipeline 108 may perform similar and potentially opposite operations on data that is read from non-volatile memory 110 and sent to client 114. [

저장 장치(102)는 또한 제1 전력 접속부(130)를 통해 전력을 충분히 받아들이지 않은 저장 장치(102)에 초래되는 완전하거나 부분적인 정전의 경우에 전력을 제공하는 제2 전력 공급부(124)를 포함한다. 정전은 저장 장치(102)가 제1 전력 접속부(130)를 통해 전력을 받아들이는 것을 중지하는 것을 예기치 않게 야기하거나, 제1 전력 접속부(130)를 통해 저장 장치(102)에 의해 받아들인 전력의 상당한 감소를 야기하는 임의의 경우이다. 전력의 상당한 감소는, 일 실시예에서, 미리 결정된 한계치의 아래로 전력 하락을 포함한다. 미리 결정된 한계치는, 다른 실시예에서, 제1 전력 접속부(130)로부터 나온 전력 레벨의 통상의 변동을 허용하기 위해 선택된다. 예를 들면, 클라이언트(114)와 저장 장치(102)가 기능을 하지 않을 수 있는 빌딩에 대한 전력. (저장 장치(102)에 전력을 제공하는 클라이언트(114)를 중지시키는 것과 같은) 사용자 행위, 제1 전력 접속부(130)의 고장, 또는 제1 전력 공급부의 고장은 저장 장치(102)가 전력을 받아들이는 것을 중지시키는 것을 야기할 수 있다. 수많은, 다양한 정전은 저장 장치(102)에 대한 예기치 않은 전력 손실을 야기할 수 있다.The storage device 102 also includes a second power supply 124 that provides power in the event of a complete or partial power outage that results in the storage device 102 not fully receiving power through the first power connection 130 do. A power outage may unexpectedly cause the storage device 102 to cease receiving power through the first power connection 130 or may cause unexpected power outage of the power received by the storage device 102 via the first power connection 130 Which in any case leads to a significant reduction. A significant reduction in power, in one embodiment, includes a power fall below a predetermined limit. The predetermined threshold is selected to allow, in other embodiments, normal variations in power level from the first power connection 130. For example, the power for the building where the client 114 and the storage device 102 may not function. (Such as stopping the client 114 providing power to the storage device 102), a failure of the first power connection 130, or a failure of the first power supply may cause the storage device 102 to power up It can lead to stopping acceptance. A large number of various outages can cause unexpected power loss to the storage device 102.

제2 전력 공급부(124)는 하나 이상의 배터리들, 하나 이상의 캐패시터들, 캐패시터들의 뱅크, 전력 공급부에 대한 개별적인 접속부, 또는 이와 유사한 것을 포함할 수 있다. 일 실시예에서, 제2 전력 공급부(124)는 제1 전력 접속부(130)로부터 정전 또는 다른 전력의 감소 중에 적어도 전력 유지 시간 동안 저장 장치(102)에 전력을 제공한다. 제2 전력 공급부(124)는, 다른 실시예에서, 저장 장치(102)가 비휘발성 메모리(110)에 있지 않은 데이터를 비휘발성 메모리(110)로 플러싱하는 것을 가능하게 할 정도로 충분히 긴 전력 유지 시간을 제공한다. 그 결과로, 저장 장치(102)는 전력의 부족이 저장 장치(102)가 기능하는 것을 중지시키는 것을 야기하기 전에 저장 장치(102)에 영구히 저장되지 않는 데이터를 보존할 수 있다. 특정한 실행에서, 제2 전력 공급부(124)는 공간을 보존하며, 비용을 감소시키며, 저장 장치(102)를 단순화하기 위해 미리 결정된 전력 유지 시간을 제공할 수 있는 가능한 가장 작은 캐패시터들을 포함할 수 있다. 일 실시예에서, 캐패시터들이 일반적으로 더 신뢰할 수 있으며, 더 적은 유지관리를 필요로 하며, 제2 전력을 제공하기 위한 다른 옵션들보다 긴 수명을 가질 때 캐패시터들의 하나 이상의 뱅크들이 제2 전력 공급부(124)를 실행하는데 사용된다.The second power supply 124 may include one or more batteries, one or more capacitors, a bank of capacitors, a separate connection to a power supply, or the like. In one embodiment, the second power supply 124 provides power to the storage device 102 for at least a power hold time during a power down or other power reduction from the first power contact 130. [ The second power supply 124 may provide a power hold time that is long enough to enable the storage device 102 to flush data that is not in the non-volatile memory 110 to the non-volatile memory 110, . As a result, the storage device 102 may preserve data that is not permanently stored in the storage device 102 before a power shortage causes the storage device 102 to cease functioning. In a particular implementation, the second power supply 124 may include the smallest possible capacitors that can preserve space, reduce cost, and provide a predetermined power retention time to simplify the storage device 102 . In one embodiment, when the capacitors are generally more reliable, require less maintenance, and have a longer lifetime than the other options for providing the second power, one or more banks of capacitors are connected to the second power supply 124).

일 실시예에서, 제2 전력 공급부(124)는 제1 전력 접속부(130)로부터 나온 전력의 부분적이거나 완전한 손실 중에 저장 장치(102)에 전력을 자동으로 제공하는 전기 회로의 일부분이다. 마찬가지로, 시스템(100)은 부분적이거나 완전한 전력 손실 중에 제2 전력 공급부(124)로부터 전력을 자동으로 받아들이거나 수전하도록 구성될 수 있다. 예를 들면, 일 실시예에서, 제2 전력 공급부(124)는 제1 전력 접속부(130)와 병렬로 저장 장치(102)에 전기적으로 결합될 수 있으며, 그 결과 제1 전력 접속부(130)는 통상의 작동 중에 제2 전력 공급부(124)와 통전되며 제2 전력 공급부(124)는 전력 손실에 응답하여 저장 장치(102)에 전력을 자동으로 제공한다. 일 실시예에서, 시스템(100)은 제2 전력 공급부(124)로부터 나온 전류가 제1 전력 접속부(130)에 도달하는 것을 방지하기 위해, 제2 전력 공급부(124)와 제1 전력 접속부(130) 사이에 다이오드 또는 다른 역전류 보호부를 더 포함한다. 다른 실시예에서, 전력 관리 장치(122)는 제1 전력 접속부(130)으로부터 나온 감소된 전력에 응답하여 스위치 또는 이와 유사한 것을 사용하여 저장 장치(102)에 제2 전력 공급부(124)를 가능하게 하거나 연결할 수 있다.In one embodiment, the second power supply 124 is part of an electrical circuit that automatically provides power to the storage device 102 during partial or complete loss of power from the first power contact 130. Likewise, the system 100 may be configured to automatically accept or accept power from the second power supply 124 during partial or complete power loss. For example, in one embodiment, the second power supply 124 may be electrically coupled to the storage device 102 in parallel with the first power connection 130 such that the first power connection 130 During normal operation, the second power supply 124 is energized and the second power supply 124 automatically provides power to the storage device 102 in response to a power loss. In one embodiment, the system 100 may include a second power supply 124 and a first power connection 130 (not shown) to prevent current from the second power supply 124 from reaching the first power connection 130 Lt; RTI ID = 0.0 > and / or < / RTI > In another embodiment, power management device 122 may enable second power supply 124 to storage device 102 using a switch or the like in response to reduced power from first power connection 130 .

아직 비휘발성 메모리(110)에 있지 않은 데이터의 예는 데이터가 기록 데이터 파이프라인(106)을 통해 이동할 때 비휘발성 메모리에 유지될 수 있는 데이터를 포함할 수 있다. 만약 기록 데이터 파이프라인(106)에 있는 데이터가 정전 중에 손실된다면(즉, 비휘발성 메모리(110)에 기록되지 않거나 그렇지 않으면 영구히 저장되지 않으면), 손상 및 데이터 손실이 초래될 수 있다.Examples of data that are not yet in non-volatile memory 110 may include data that may be held in non-volatile memory as the data moves through the write data pipeline 106. [ If data in the write data pipeline 106 is lost during a power failure (i.e., not written to or otherwise permanently stored in non-volatile memory 110), corruption and data loss may result.

특정 실시예에서, 저장 장치(102)는 저장 장치(102)가 비휘발성 메모리(110)에 저장되는 데이터를 수신한 후에 몇몇 점에서 클라이언트(114)에 확인을 송신한다. 기록 데이터 파이프라인(106), 또는 이의 하위 소자는, 확인을 발생시킬 수 있다. 저장 장치(102)가 데이터를 수신한 후에 가능한 한 빨리 확인을 송신하는 것이 유리하다.In certain embodiments, the storage device 102 sends an acknowledgment to the client 114 at some point after the storage device 102 receives the data stored in the non-volatile memory 110. [ The write data pipeline 106, or a sub-element thereof, can generate an acknowledgment. It is advantageous to send the acknowledgment as soon as possible after the storage device 102 has received the data.

특정 실시예들에서, 기록 데이터 파이프라인(106)은 데이터가 비휘발성 메모리(110)에 실제로 저장되기 전에 확인을 송신한다. 예를 들면, 기록 데이터 파이프라인(106)은 데이터가 기록 데이터 파이프라인(106)을 통해 비휘발성 메모리(110)에 여전히 전송되는 동안에 확인을 송신할 수 있다. 이와 같은 실시예들에서, 저장 장치(102)가 모든 데이터를 플러싱하는 것이 매우 바람직하며 그 동안에 저장 컨트롤러(104)는 데이터 손상을 방지하며 송신된 확인의 보전성을 유지하기 위해 제2 전력 공급부(124)가 전력을 충분히 상실하기 전에 비휘발성 메모리(110)에 확인을 송신한다.In certain embodiments, the write data pipeline 106 sends an acknowledgment before the data is actually stored in non-volatile memory 110. [ For example, the write data pipeline 106 may send acknowledgments while data is still being transferred to the non-volatile memory 110 via the write data pipeline 106. In such embodiments, it is highly desirable for the storage device 102 to flush all data while the storage controller 104 is in the process of preventing data corruption and for maintaining the integrity of the transmitted acknowledgment, Volatile memory 110 before power is sufficiently lost.

더구나, 특정 실시예들에서, 기록 데이터 파이프라인(106) 내의 몇몇 데이터는 정전의 결과로 손상될 수 있다. 정전은 전력 차단뿐만 아니라 공급되는 전력 레벨의 예기치 않은 변화를 포함할 수 있다. 전력 레벨의 예기치 않은 변화는 위험한 상태로 저장 장치(102)에 있지만, 아직은 비휘발성 메모리(110)에 있지 않은, 데이터에 배치할 수 있다. 전력 관리 장치(122)가 정전이 있었다는 것을 바로 감지하기(인지하기) 전에 데이터 손상이 일어나기 시작할 수 있다.Moreover, in certain embodiments, some data in the write data pipeline 106 may be corrupted as a result of power failure. Power outages may include power interruption as well as unexpected changes in the power level being supplied. An unexpected change in the power level may be placed in the data in the storage device 102 in a critical state, but not in the non-volatile memory 110 yet. Data corruption may begin to occur before the power management device 122 immediately detects (recognizes) that there has been a power outage.

예를 들면, PCI-e 명세서는, 정전의 신호를 받은 경우에, 데이터가 특정한 환경에서 가장되며 손상되며 저장되지 않아야 한다는 것을 가리킨다. 유사한 잠재적인 손상이 PCI, 직렬 고급 기술 부착("시리얼 ATA" 또는 "SATA", 병렬 ATA("PATA"), 소형 컴퓨터 시스템 인터페이스("SCSI"), IEE 1394("FireWire"), 파이버 채널, 범용 직렬 버스("USB"), PCIe-AS, 또는 이와 유사한 것과 같은 다른 연결 타입들을 사용하여 클라이언트들(114)에 연결되는 저장 장치들(102)에 일어날 수 있다. 복잡성이 (이런 점에서부터 현재 시간까지 수신된 데이터가 손상된 것으로 추정되는 것을 의미하는) 정전이 발생할 때 일어날 수 있으며, 기간이 지나면, 정전이 감지되며 신호를 받으며, 전력 관리 장치(122)가 신호를 수신하며 정전을 인지하게 된다. 일어난 정정과 정전을 발견한 전력 관리 장치(122) 사이의 지연은 손상된 데이터가 기록 데이터 파이프라인(106)에 들어가는 것을 허용할 수 있다. 특정 실시예들에서, 이런 손상된 데이터는 식별되어야 하며 비휘발성 메모리(110)에 저장되지 않아야 한다. 또는, 이런 손상된 데이터는 비휘발성 메모리(110)에 저장될 수 있으며 아래에 설명된 바와 같이 손상된 것으로 마킹될 수 있다. 설명의 단순화를 위해, 손상된 데이터를 식별하며 비휘발성 메모리(110)에 이런 데이터를 저장하지 않는 것은 무엇보다 먼저 여기에 있는 기능들과 특징들을 설명하는데 사용될 것이다. 게다가, 클라이언트(114)는 이런 데이터가 저장되지 않았다는 것을 인지해야 하거나, 또는 이의 보전성에 대한 의문이 있는 데이터는 데이터 보존성이 확인될 수 있을 때까지 인정되지 않는다는 것을 인지해야 한다. 그 결과로, 손상된 데이터는 인정되지 않아야 한다.For example, the PCI-e specification indicates that, in the event of a power failure signal, data is impersonated, corrupted, and not stored in a particular environment. Similar potential damage may be caused by PCI, Serial Advanced Technology Attachment ("Serial ATA" or "SATA", Parallel ATA ("PATA"), Small Computer System Interface ("SCSI"), IEE 1394 ("FireWire" May occur in storage devices 102 that are connected to clients 114 using other connection types such as a universal serial bus ("USB"), PCIe-AS, or the like. (Which means that the received data until time is estimated to be corrupted), and after a period of time, a power failure is detected and a signal is received, the power management device 122 receives the signal and recognizes the power failure A delay between the correction that occurred and the power management device 122 that found the power outage may allow the corrupted data to enter the write data pipeline 106. In certain embodiments, And should not be stored in non-volatile memory 110. Alternatively, such corrupted data may be stored in non-volatile memory 110 and marked as corrupted as described below. Identifying the corrupted data and not storing such data in the non-volatile memory 110 will be used primarily to describe the functions and features hereinbefore. Additionally, the client 114 may determine that such data is not stored It should be noted that data that requires or is questionable about its integrity will not be accepted until the data integrity can be verified. As a result, the corrupted data should not be acknowledged.

저장 장치(102)는 또한 전력 관리 장치(122)를 포함한다. 특정 실시예들에서, 전력 관리 장치(122)는 저장 컨트롤러(104)의 일부분으로 실행된다. 전력 관리 장치(122)는, 예를 들면, 소프트웨어 드라이버일 수 있거나 저장 장치(102)를 위한 펌웨어에서 실행될 수 있다. 다른 실시예들에서, 전력 관리 장치(122)는 소프트웨어 드라이버에서 부분적으로 및 저장 컨트롤러(104)에서 부분적으로, 또는 이와 유사한 것에서 실행될 수 있다. 일 실시예에서, 전력 관리 장치(122)의 적어도 일부분이 저장 컨트롤러(104)의 일부분으로 저장 장치(102)에서, 또는 이와 유사한 것에서 실행되며, 그 결과 비록 클라이언트(114)가 더 이상 기능을 하지 않더라도, 전력 관리 장치(122)는 제2 전력 공급부(124)로부터 나온 전력을 사용하여 부분적이거나 완전한 전력 손실 중에 계속 기능을 한다.The storage device 102 also includes a power management device 122. In certain embodiments, the power management device 122 is implemented as part of the storage controller 104. The power management device 122 may be, for example, a software driver or may be executed in firmware for the storage device 102. In other embodiments, the power management device 122 may be implemented in part in the software driver and partially in the storage controller 104, or the like. In one embodiment, at least a portion of the power management device 122 is implemented as part of the storage controller 104 at the storage device 102, or the like, so that even though the client 114 is no longer functioning The power management device 122 continues to function during partial or complete power loss using power from the second power supply 124.

일 실시예에서, 전력 관리 장치(122)는 제1 전력 접속부(130)로부터 전력의 감소에 응답하여 저장 장치(102)에서 전력 손실 모드를 시작한다. 전력 손실 모드 중에, 전력 관리 장치(122)는, 일 실시예에서 아직 비휘발성 메모리(110)에 저장되지 않고 저장 장치(102)에 있는 데이터를 비휘발성 메모리(110)로 플러싱한다. 특정한 실시예들에서, 전력 관리 장치(122)는 확인되었으며 아직 비휘발성 메모리(110)에 저장되지 않고 저장 장치(102)에 있는 데이터를 비휘발성 메모리(110)로 플러싱한다. 아래에 설명되는 특정 실시예들에서, 전력 관리 장치(122)는 제2 전력 공급부(124)가 필수적인 작동들을 완료하도록 전력을 충분히 잃기 전에, 즉 제2 전력 공급부(124)가 제공되는 전력 유지 시간 중에 필수적인 작동들이 완료된다는 것을 보장하기 위해 저장 장치(102)에 대한 데이터 작동의 실행을 조절할 수 있다.In one embodiment, the power management device 122 initiates a power loss mode at the storage device 102 in response to a decrease in power from the first power contact 130. During a power loss mode, the power management device 122 flushes the data in the storage device 102 to the non-volatile memory 110, rather than being stored in the non-volatile memory 110, in one embodiment. In certain embodiments, the power management device 122 flushes the data in the storage device 102 to the non-volatile memory 110 without being stored in the non-volatile memory 110 yet. In certain embodiments described below, the power management device 122 may be configured to determine whether the second power supply 124 is operating before the second power supply 124 sufficiently loses power to complete the necessary operations, The execution of the data operations on the storage device 102 may be adjusted to ensure that the necessary operations are completed.

특정 실시예들에서, 필수적인 작동들은 확인된 기록 작동들과 같이 저장된 것으로 확인된 데이터에 대한 작동들을 포함한다. 다른 실시예들에서, 필수적인 작동들은 저장되었으며 소거된 것으로 확인된 데이터에 대한 작동들을 포함한다. 다른 실시예들에서, 필수적인 작동들은 저장되었으며, 판독되었으며, 소거된 것으로 확인된 데이터에 대한 작동들을 포함한다. 전력 관리 장치(122)는 또한 필수적이지 않은 작동들이 불필요하게 전력을 소비하지 않으며/않거나 필수적인 작동들이 실행되는 것을 방해하지 않는다는 것을 보장하기 위해 필수적이지 않은 작동들을 제거할 수 있으며; 예를 들면, 전력 관리 장치(122)는 소거 작동들, 판독 작동들, 확인된 기록 작동들 등을 제거할 수 있다.In certain embodiments, the essential operations include operations on data identified as being stored, such as the identified write operations. In other embodiments, the essential operations include operations on data that has been stored and identified as erased. In other embodiments, the essential operations include operations on data that has been stored, read, and has been confirmed to be erased. The power management device 122 may also remove nonessential operations to ensure that nonessential operations do not unnecessarily consume power and / or do not prevent essential operations from being performed; For example, the power management device 122 may remove erase operations, read operations, verified write operations, and the like.

일 실시예에서, 필수적이지 않은 작동들을 제거하는 것은 제2 전력 공급부(124)로부터 전력을 보존하며, 제2 전력 공급부(124)가 전력 유지 시간을 제공하는 것을 허용한다. 다른 실시예에서, 전력 관리 장치(122)는 제2 전력 공급부(124)로부터 전력을 유지하기 위해 전력 손실 모드 중에 저장 장치(102)의 하나 이상의 하위 소자들의 작동을 비활성화하거나 그렇지 않으면 중지시킨다. 예를 들면, 다양한 실시예들에서, 전력 관리 장치(122)는 판독 데이터 파이프라인(108), 판독 직접 메모리 접속("DMA") 엔진, 및/또는 필수적이지 않은 작동들과 관련된 저장 장치(102)의 다른 하위 소자들의 작동을 비활성화할 수 있다.In one embodiment, eliminating nonessential operations preserves power from the second power supply 124 and allows the second power supply 124 to provide power retention time. In another embodiment, the power management device 122 deactivates or otherwise disables operation of one or more of the sub-elements of the storage device 102 during the power loss mode to maintain power from the second power supply. For example, in various embodiments, the power management device 122 may include a read data pipeline 108, a read direct memory access ("DMA") engine, and / or storage 102 associated with non- ≪ / RTI > can be deactivated.

전력 관리 장치(122)는 또한 정전에 의해 임의의 데이터가 손상되었는지를 결정하며, 손상된 데이터가 비휘발성 메모리(110)에 저장되는 것을 방지하며, 클라이언트(114)가 손상된 데이터가 결코 저장 장치(102)에 실제로 저장되지 않았다는 것을 인지하는 것을 보장하는 책임이 있을 수 있다. 이는 정전으로부터 초래되는 저장 장치(102)에서 데이터의 손상을 방지한다.The power management device 122 also determines if any data is corrupted by a power outage and prevents corrupted data from being stored in the non-volatile memory 110 and ensures that the corrupted data is never destined to the storage device 102 ) That the user has not actually been stored. This prevents data corruption in the storage device 102 resulting from a power failure.

일 실시예에서, 시스템(100)은 복수의 저장 장치들(102)을 포함한다. 전력 관리 장치(122)는, 일 실시예에서, 복수의 저장 장치들(102)에서 각각의 저장 장치(102)에 대한 전력 손실 모드들을 관리하며, 복수의 저장 장치들(102)에 대해 시스템 전체의 전력 손실 모드를 제공한다. 다른 실시예들에서, 복수의 저장 장치들(102)에서 각각의 저장 장치(102)는 각각 개개의 저장 장치(102)에 대한 개별적인 전력 손실 모드를 관리하는 개별적인 전력 관리 장치(122)를 포함한다. 전력 관리 장치(122)는, 일 실시예에서, 하나 이상의 다른 저장 장치들(102)에 대한 필수적인 작동들을 실행하기 위한 제2 전력 공급부(124)로부터 전력을 유지하기 위해 복수의 저장 장치들(102) 중의 하나 이상의 저장 장치들(102)을 비활성화하거나 그렇지 않으면 중지시킬 수 있다.In one embodiment, the system 100 includes a plurality of storage devices 102. Power management device 122 manages power loss modes for each storage device 102 in a plurality of storage devices 102 in one embodiment and controls power loss modes for a plurality of storage devices 102 Of power loss mode. In other embodiments, each storage device 102 in a plurality of storage devices 102 includes a respective power management device 122 that manages a separate power loss mode for each storage device 102 . The power management device 122 may include a plurality of storage devices 102 to maintain power from a second power supply 124 for performing the necessary operations on one or more other storage devices 102, Or disable one or more of the storage devices 102 of the storage device 102. [

일 실시예에서, 시스템(100)은 클라이언트(114)와 복수의 저장 장치들(102) 사이에 전기 접속을 제공하기 위한 하나 이상의 어댑터들을 포함한다. 어댑터는, 다양한 실시예들에서, 단일 저장 장치(102)를 받아들이는 슬롯 또는 포트, 둘 이상의 저장 장치들(102)을 받아들이는 확장 카드 또는 도터 카드(daughter card), 또는 이와 유사한 것을 포함할 수 있다. 예를 들면, 일 실시예에서, 복수의 저장 장치들(102)은 클라이언트(114)의 별도의 포트들 또는 슬롯들에 각각 결합될 수 있다. 다른 예시적인 실시예에서, 도터 카드들 또는 이와 유사한 것과 같은 하나 이상의 어댑터들이 클라이언트(114)에 전기적으로 결합될 수 있으며(즉 클라이언트(114)의 하나 이상의 슬롯들 또는 포트들에 연결되며) 하나 이상의 어댑터들은 둘 이상의 저장 장치들(102)에 대한 접속을 각각 제공할 수 있다.In one embodiment, system 100 includes one or more adapters for providing an electrical connection between client 114 and a plurality of storage devices 102. The adapter may, in various embodiments, include a slot or port that accepts a single storage device 102, an expansion card or daughter card that accepts two or more storage devices 102, or the like. have. For example, in one embodiment, a plurality of storage devices 102 may be coupled to separate ports or slots, respectively, In other exemplary embodiments, one or more adapters, such as daughter cards or the like, may be electrically coupled to the client 114 (i.e., coupled to one or more slots or ports of the client 114) Adapters can each provide a connection to more than one storage device 102.

일 실시예에서, 시스템(100)은 도터 카드들 또는 이와 유사한 것과 같은 둘 이상의 어댑터들을 받아들이는 마더보드 또는 이와 유사한 것과 같은 회로 보드를 포함하며, 각각의 어댑터는 둘 이상의 저장 장치들(102)을 받아들인다. 다른 실시예에서, 어댑터들은 회로 보드의 PCI-e 슬롯들을 사용하여 회로 보드에 결합되며 저장 장치들(102)은 어댑터들의 PCI-e 슬롯들을 사용하여 어댑터들에 결합된다. 다른 실시예에서, 저장 장치들(102) 각각은 플래시 메모리와 같은 비휘발성 고체 상태 저장장치인 듀얼 인라인 메모리 모듈("DIMM"), 또는 이와 유사한 것을 포함한다. 일 실시예에서, 회로 보드, 어댑터들, 및 저장 장치들(102)은 클라이언트(114)의 외부에 있을 수 있으며, 별도의 제1 전력 접속부(130)를 포함할 수 있다. 예를 들면, 회로 보드, 어댑터들, 및 저장 장치들(102)은 전력 공급 유닛("PSU")과 함께 외부 용기에 수용될 수 있으며 eSATA, eSATAp, SCSI, FireWire, Fiber Channel, USB, PCIe-AS, 또는 이와 유사한 것과 같은 외부 버스를 사용하여 클라이언트(114)와 통신할 수 있다. 다른 실시예에서, 회로 보드는 클라이언트(114)의 마더보드일 수 있으며, 어댑터들과 저장 장치들(102)은 클라이언트(114)의 내부 저장장치일 수 있다.In one embodiment, the system 100 includes a circuit board, such as a motherboard or the like, that accepts two or more adapters such as daughter cards or the like, each adapter having two or more storage devices 102 I accept it. In another embodiment, the adapters are coupled to the circuit board using PCI-e slots of the circuit board and the storage devices 102 are coupled to the adapters using PCI-e slots of the adapters. In another embodiment, each of the storage devices 102 includes a dual in-line memory module ("DIMM"), or the like, which is a non-volatile solid state storage device such as flash memory. In one embodiment, the circuit board, adapters, and storage devices 102 may be external to the client 114 and may include a separate first power connection 130. For example, circuit boards, adapters, and storage devices 102 may be housed in an external enclosure with a power supply unit ("PSU") and may be an eSATA, eSATAp, SCSI, FireWire, Fiber Channel, AS, or the like. ≪ / RTI > In other embodiments, the circuit board may be the motherboard of the client 114 and the adapters and storage devices 102 may be internal storage devices of the client 114. [

본 발명을 고려하여, 본 기술분야의 기술자는 시스템(100)에 사용하기 위한 많은 형태의 어댑터들 및 저장 장치들(102)을 인지할 것이다. 예를 들면, 각각의 어댑터는 두 개의 저장 장치들(102), 네 개의 저장 장치들(102), 또는 임의의 수의 저장 장치들(102)을 받아들일 수 있다. 마찬가지로, 시스템(100)은 하나의 어댑터, 두 개의 어댑터들, 세 개의 어댑터들, 네 개의 어댑터들, 또는 임의의 지원된 수의 어댑터들을 포함할 수 있다. 하나의 예시적인 실시예에서, 시스템(100)은 두 개의 어댑터들을 포함하며 각각의 어댑터는 총 여덟 개의 저장 장치들(102)에 대해 네 개의 저장 장치들(102)을 받아들인다.In view of the present invention, those skilled in the art will recognize many types of adapters and storage devices 102 for use in the system 100. For example, each adapter may accept two storage devices 102, four storage devices 102, or any number of storage devices 102. Likewise, the system 100 may include one adapter, two adapters, three adapters, four adapters, or any number of adapters. In one exemplary embodiment, the system 100 includes two adapters, each of which accepts four storage devices 102 for a total of eight storage devices 102.

일 실시예에서, 제2 전력 공급부(124)는 복수의 저장 장치들(102) 각각에 전력을 제공한다. 예를 들면, 제2 전력 공급부(124)는 메인 회로 보드 또는 마더보드에 있는 회로에 배치될 수 있으며 몇몇 어댑터들에 전력을 제공할 수 있다. 다른 실시예에서, 시스템(100)은 하위 세트의 복수의 저장 장치들(102)에 전력을 각각 제공하는 복수의 제2 전력 공급부들을 포함한다. 예를 들면, 일 실시예에서, 각각의 어댑터는 어댑터의 저장 장치들(102)을 위한 제2 전력 공급부(124)를 포함할 수 있다. 다른 실시예에서, 각각의 저장 장치(102)는 저장 장치(102)를 위한 제2 전력 공급부(124)를 포함할 수 있다. 본 발명을 고려하여, 본 기술분야의 기술자는 복수의 저장 장치들(102)에 전력을 제공하기 위한 제2 전력 공급부들(124)의 상이한 배치를 인지할 것이다.In one embodiment, the second power supply 124 provides power to each of the plurality of storage devices 102. For example, the second power supply 124 may be located in a circuit on the main circuit board or motherboard and may provide power to some adapters. In another embodiment, the system 100 includes a plurality of second power supplies each providing power to a subset of the plurality of storage devices 102. For example, in one embodiment, each adapter may include a second power supply 124 for the storage devices 102 of the adapter. In another embodiment, each storage device 102 may include a second power supply 124 for the storage device 102. In view of the present invention, those skilled in the art will appreciate the different arrangements of the second power supplies 124 for providing power to a plurality of storage devices 102.

고체 상태 저장 장치Solid state storage

도 2는 본 발명에 따른 고체 상태 저장 장치(102)에 있는 기록 데이터 파이프라인(106) 및 판독 데이터 파이프라인(108)을 포함하는 고체 상태 저장 장치 컨트롤러(202)의 일 실시예(200)를 도시하는 개략적인 블록도이다. 고체 상태 저장 장치 컨트롤러(202)는 고체 상태 저장장치(110)를 각각 제어하는 다수의 고체 상태 저장 컨트롤러들(0-N 104a-n)을 포함할 수 있다. 도시된 실시예에서, 두 개의 고체 상태 컨트롤러들이 보여지며: 고체 상태 컨트롤러(0 104a)와 고체 상태 컨트롤러(N 104n), 각각은 고체 상태 저장장치(110a-n)를 제어한다. 도시된 실시예에서, 고체 상태 저장 컨트롤러(0 104a)는 데이터 채널을 제어하며 그 결과 부착된 고체 상태 저장 장치(110a)는 데이터를 저장한다. 고체 상태 저장 컨트롤러(N 104n)는 저장된 데이터와 관련된 인덱스 메타데이터 채널을 제어하며 관련된 고체 상태 저장장치(110n)는 인덱스 메타데이터를 저장한다. 다른 실시예에서, 고체 상태 저장 장치 컨트롤러(202)는 단일의 고체 상태 저장장치(110a)를 가지는 단일의 고체 상태 컨트롤러(104a)를 포함한다. 다른 실시예에서, 복수의 고체 상태 저장 컨트롤러들(104a-n) 및 관련된 고체 상태 저장장치(110a-n)가 있다. 일 실시예에서, 이들의 관련된 고체 상태 저장장치(110a-110n-1)에 결합되는 하나 이상의 고체 상태 컨트롤러들(104a-104n-1)은 데이터를 제어하는 반면에 이의 관련된 고체 상태 저장장치(110n)에 결합되는 적어도 하나의 고체 상태 저장 컨트롤러(104n)는 인덱스 메타데이터를 제어한다.2 illustrates an embodiment 200 of a solid state storage controller 202 that includes a write data pipeline 106 and a read data pipeline 108 in a solid state storage device 102 in accordance with the present invention. Fig. The solid state storage controller 202 may include a plurality of solid state storage controllers (0-N 104a-n), each of which controls the solid state storage device 110. [ In the illustrated embodiment, two solid state controllers are shown: a solid state controller 104a and a solid state controller N 104n, each of which controls solid state storage devices 110a-n. In the illustrated embodiment, the solid state storage controller 104a controls the data channel and the resulting solid state storage device 110a stores the data. The solid state storage controller N 104n controls the index metadata channel associated with the stored data and the associated solid state storage device 110n stores the index metadata. In another embodiment, the solid state storage controller 202 includes a single solid state controller 104a having a single solid state storage device 110a. In another embodiment, there are a plurality of solid state storage controllers 104a-n and associated solid state storage devices 110a-n. In one embodiment, one or more solid state controllers 104a-104n-1 coupled to their associated solid state storage devices 110a-110n-1 control data while their associated solid state storage devices 110a-110n- Is controlled by the at least one solid state storage controller 104n.

일 실시예에서, 적어도 하나의 고체 상태 컨트롤러(104)는 필드 프로그램 가능 게이트 어레이("FPGA")이며 컨트롤러 기능은 FPGA로 프로그래밍된다. 특정 실시예에서, FPGA는 Xilinx® FPGA이다. 다른 실시예에서, 고체 상태 저장 컨트롤러(104)는 어플리케이션 특정 집적 회로("ASIC")또는 주문형 로직 솔루션과 같은 고체 상태 저장 컨트롤러(104)로 구체적으로 설계된 소자들을 포함한다. 각각의 고체 상태 저장 컨트롤러(104)는 일반적으로 도 3과 관련하여 더 설명되는 기록 데이터 파이프라인(106)과 판독 데이터 파이프라인(108)을 포함한다. 다른 실시예에서, 적어도 하나의 고체 상태 저장 컨트롤러(104)는 FPGA, ASIC, 및 주문형 로직 소자들의 조합으로 구성된다.In one embodiment, the at least one solid state controller 104 is a field programmable gate array ("FPGA") and controller functionality is programmed into the FPGA. In a particular embodiment, the FPGA is a Xilinx (R) FPGA. In another embodiment, the solid state storage controller 104 includes components specifically designed with a solid state storage controller 104, such as an application specific integrated circuit ("ASIC") or a custom logic solution. Each solid state storage controller 104 generally includes a write data pipeline 106 and a read data pipeline 108, which are further described with respect to FIG. In another embodiment, the at least one solid state storage controller 104 is comprised of a combination of FPGA, ASIC, and custom logic elements.

고체 상태 저장장치Solid state storage

고체 상태 저장장치(110)는 뱅크들(214)에 배치되며 양방향 저장 입력/출력("I/O") 버스(210)를 통해 병렬로 접속되는 하나의 배열의 비휘발성 고체 상태 저장 장치들(216, 218, 220)이다. 저장 I/O 버스(210)는, 일 실시예에서, 어는 하나의 시간에 일방향 통신을 할 수 있다. 예를 들면, 데이터가 고체 상태 저장장치(110)에 기록될 때, 데이터는 고체 상태 저장장치(110)로부터 판독될 수 없다. 다른 실시예에서, 데이터는 동시에 양쪽 방향으로 흐를 수 있다. 그러나 데이터 버스에 대응하여 여기에 사용되는 것과 같은 양방향은 어느 시간에 하나의 방향으로만 흐르는 데이터를 가질 수 있는 데이터 경로를 가리키지만, 양방향 데이터 버스에 대해 일 방향으로 흐르는 데이터가 지연될 때, 데이터는 양방향 데이터 버스에 대해 반대 방향으로 흐를 수 있다.The solid state storage device 110 includes an array of nonvolatile solid state storage devices (not shown) disposed in banks 214 and connected in parallel via a bi-directional storage input / output ("I / O & 216, 218, 220). The storage I / O bus 210, in one embodiment, is capable of one-way communication at one time. For example, when data is written to the solid state storage device 110, the data can not be read from the solid state storage device 110. In another embodiment, the data can flow simultaneously in both directions. However, bi-directional, as used herein corresponding to a data bus, refers to a data path that can have data flowing in only one direction at any one time, but when data flowing in one direction relative to the bi-directional data bus is delayed, Data may flow in the opposite direction to the bi-directional data bus.

고체 상태 저장 장치(예를 들면 SSS 0.0 216a)는 일반적으로 칩(하나 이상의 다이들의 패키지) 또는 회로 보드에 있는 다이로 구성된다. 도시된 바와 같이, 이런 몇몇의 장치들이 칩 패키지, 한 더미의 칩 패키지들, 또는 얼마간의 다른 패키지 요소로 함께 패키지화되더라도 고체 상태 저장 장치(예를 들면 216a)는 다른 고체 상태 저장 장치들(예를 들면 218a)에 독립적으로 또는 반독립적으로 작동한다. 도시된 바와 같이, 일 열의 고체 상태 저장 장치들(216a, 216b, 216m)은 뱅크(214)로 지시된다. 도시된 바와 같이, 고체 상태 저장장치(110)의 하나의 배열의 n x m 고체 상태 저장 장치들(216, 218, 220)에 많은 "n" 뱅크들(214a-n)과 "m" 뱅크당 고체 상태 저장 장치들(216a-m, 218a-m, 220a-m)이 있을 수 있다. 물론 상이한 실시예들은 n과 m에 대한 상이한 값들을 포함할 수 있다. 일 실시예에서, 고체 상태 저장장치(110a)는 여덟 개의 뱅크들(214)과 함께 뱅크(214)당 20개의 고체 상태 저장 장치들(216, 218, 220)을 포함한다. 일 실시예에서, 고체 상태 저장 매체(110a)는 여덟 개의 뱅크들(214)과 함께 뱅크(214)당 24개의 고체 상태 저장 장치들(216, 218, 220)을 포함한다. n x m 저장 장치들(216, 218, 220)에 더하여, 하나 이상의 추가적인 칼럼들(P)이 또한 하나 이상의 열에 대해 다른 고체 상태 저장 장치들(216a, 216b, 216m)과 병렬로 배치될 수 있으며 작동될 수 있다. 추가된 P 칼럼들은 일 실시예에서 특정 뱅크에 대한 m 저장 장치들에 걸치는 ECC 청크(ECC chunk)(즉, ECC 부호어)의 부분들에 대한 패리티 데이터를 저장한다. 일 실시예에서, 각각의 고체 상태 저장 장치들(216, 218, 220)은 싱글 레벨 셀("SLC") 장치들로 구성된다. 다른 실시예에서, 각각의 고체 상태 저장 장치(216, 218, 220)는 멀티 레벨 셀("MLC") 장치들로 구성된다.Solid state storage devices (eg SSS 0.0 216a) typically consist of a die (a package of one or more dies) or a die on a circuit board. As shown, even though some of these devices are packaged together as a chip package, a stack of chip packages, or some other package element, a solid state storage device (e.g., 216a) RTI ID = 0.0 > 218a). ≪ / RTI > As shown, a row of solid state storage devices 216a, 216b, 216m is indicated by a bank 214. As shown, there are many "n" banks 214a-n in the nxm solid state storage devices 216, 218, 220 in one arrangement of solid state storage devices 110 and a solid state There may be storage devices 216a-m, 218a-m, 220a-m. Of course, different embodiments may include different values for n and m. In one embodiment, solid state storage device 110a includes 20 solid state storage devices 216, 218, and 220 per bank 214 with eight banks 214. In one embodiment, In one embodiment, solid state storage medium 110a includes twenty-four solid state storage devices 216, 218, 220 per bank 214 with eight banks 214. In addition to the nxm storage devices 216, 218 and 220, one or more additional columns P may also be arranged in parallel with the other solid state storage devices 216a, 216b, 216m for one or more columns, . The added P columns store parity data for portions of an ECC chunk (i.e., ECC codeword) spanning m storage devices for a particular bank in one embodiment. In one embodiment, each of the solid state storage devices 216, 218, 220 is comprised of single level cell ("SLC") devices. In another embodiment, each solid state storage device 216, 218, 220 comprises multilevel cell ("MLC") devices.

일 실시예에서, 공통 저장 I/O 버스(210a)를 공유하는 고체 상태 저장 장치들(예를 들면 216b, 218b, 220b)은 함께 패키지화된다. 일 실시예에서, 고체 상태 저장 장치(216, 218, 220)는 수직으로 적층된 하나 이상의 칩들과 함께 칩당 하나 이상의 다이들을 가질 수 있으며 각각의 다이는 독립적으로 접속될 수 있다. 다른 실시예에서, 고체 상태 저장 장치(예를 들면 SSS 0.0 216a)는 다이당 하나 이상의 가상 다이들 및 칩당 하나 이상의 다이들을 가질 수 있으며 수직으로 적층된 하나 이상의 칩들과 각각의 가상 다이는 독립적으로 접속될 수 있다. 다른 실시예에서, 고체 상태 장치(SSS 0.0 216a)는 다이당 하나 이상의 가상 다이들 및 칩당 하나 이상의 다이들을 가질 수 있으며 수직으로 적층된 얼마간의 또는 모든 하나 이상의 다이들과 각각의 가상 다이는 독립적으로 접속될 수 있다.In one embodiment, solid state storage devices (e.g., 216b, 218b, 220b) that share a common storage I / O bus 210a are packaged together. In one embodiment, solid state storage devices 216, 218, 220 may have more than one die per chip with one or more vertically stacked chips, and each die may be independently connected. In another embodiment, a solid state storage device (e.g., SSS 0.0 216a) may have one or more virtual dies per die and one or more dies per chip, and one or more vertically stacked chips and each virtual die may be independently connected . In another embodiment, the solid state device (SSS 0.0 216a) may have more than one virtual die per die and more than one die per chip, and some or all vertically stacked dies and each virtual die may be independently Can be connected.

일 실시예에서, 두 개의 다이가 각각의 별도의 뱅크(214a-n)에 있는 여덟 개의 저장 장치들(예를 들면 SSS 0.0-SSS 8.0)(216a-220a)을 형성하기 위해 그룹당 네 개의 더미로 수직으로 적층된다. 다른 실시예에서, 24개의 저장 장치들(예를 들면 SSS 0.0-SSS 0.24)(216)은 논리 뱅크(214a)를 형성하며 그 결과 각각 여덟개의 논리 뱅크들은 24개의 저장 장치들(예를 들면 SSS0.0-SSS 8.24)(216, 218, 220)을 가진다. 데이터는 특정 그룹의 저장 장치들(SSS 0.0-SSS 8.0)(216a, 218a, 220a)의 모든 저장 장치들로 저장 I/O 버스(210)를 통해 고체 상태 저장장치(110)에 전송된다. 저장 제어 버스(212a)는 특정 뱅크(예를 들면 뱅크(0 214a))를 선택하는데 사용되며 그 결과 모든 뱅크들(214)에 연결되는 저장 I/O 버스(210)를 통해 수신된 데이터는 선택된 뱅크(214a)에 바로 기록된다.In one embodiment, the two dies may be divided into four dice per group to form eight storage devices (e.g., SSS 0.0-SSS 8.0) 216a-220a in each separate bank 214a-n. Vertically stacked. In another embodiment, the 24 storage devices (e.g., SSS 0.0-SSS 0.24) 216 form logical bank 214a, resulting in each of the eight logical banks having 24 storage devices (e.g., SSS0 .0-SSS 8.24) 216, 218, and 220, respectively. Data is transferred to the solid state storage device 110 via the storage I / O bus 210 to all the storage devices of a particular group of storage devices (SSS 0.0-SSS 8.0) 216a, 218a, 220a. The storage control bus 212a is used to select a particular bank (e.g., bank 0 214a) so that the data received via the storage I / O bus 210, which is connected to all the banks 214, And is immediately recorded in the bank 214a.

일 실시예에서, 저장 I/O 버스(210)는 하나 이상의 독립 I/O 버스들(210a.a-m, 210n.a-m을 포함하는 "IIOBa-m")로 구성되며 여기서 각각의 칼럼 내에 있는 고체 상태 저장 장치들은 병렬로 각각의 고체 상태 저장 장치(216, 218, 220)에 접속하는 독립 I/O 버스들 중의 하나를 공유하며 그 결과 모든 뱅크들(214)은 동시에 접속된다. 예를 들면, 저장 I/O 버스(210)의 하나의 채널은 각각의 뱅크(214a-n)의 제1 고체 상태 저장 장치(216a, 218a, 220a)에 동시에 접속할 수 있다. 저장 I/O 버스(210)의 제2 채널은 각각의 뱅크(214a-n)의 제2 고체 상태 저장 장치(216b, 218b, 220b)에 동시에 접속할 수 있다. 각각의 열의 고체 상태 저장 장치(216a, 216b, 216m)는 동시에 접속된다. 일 실시예에서, 고체 상태 저장 장치들(216, 218, 220)이 멀티 레벨인(물리적으로 적층된) 경우에, 고체 상태 저장 장치들(216, 218, 220)의 모든 물리적인 레벨들은 동시에 접속된다. 여기에 사용되는 바와 같은 "동시에"는 또한 장치들이 스위칭 노이즈를 회피하기 위해 약간 다른 간격으로 접속되는 거의 동시 접속을 포함한다. "동시에"는 명령 및/또는 데이터가 차례로 개별적으로 전송되는 순차 또는 직렬 접속과 구별되는 이런 맥락으로 사용된다.In one embodiment, the storage I / O bus 210 is comprised of one or more independent I / O busses 210a.am, 210n.am, including "IIOBa-m", wherein the solid state The storage devices share one of the independent I / O buses connected to each of the solid state storage devices 216, 218, 220 in parallel so that all of the banks 214 are connected at the same time. For example, one channel of the storage I / O bus 210 may be simultaneously connected to the first solid state storage devices 216a, 218a, 220a of the respective banks 214a-n. The second channel of the storage I / O bus 210 may be simultaneously connected to the second solid state storage devices 216b, 218b, 220b of the respective banks 214a-n. The solid state storage devices 216a, 216b, and 216m in each row are connected at the same time. In one embodiment, when the solid state storage devices 216, 218, 220 are multi-level (physically stacked), all physical levels of the solid state storage devices 216, 218, do. As used herein, "simultaneously" also includes near simultaneous connections in which devices are connected at slightly different intervals to avoid switching noise. "Concurrent" is used in this context in which commands and / or data are distinguished from sequential or serial connections, which are transmitted individually in turn.

일반적으로, 뱅크들(214a-n)은 저장 제어 버스(212)를 사용하여 독립적으로 선택된다. 일 실시예에서, 뱅크(214)는 칩 인에이블 또는 칩 선택을 사용하여 선택된다. 칩 선택과 칩 인에이블이 이용 가능한 경우에, 저장 제어 버스(212)는 멀티 레벨 고체 상태 저장 장치들(216, 218, 220) 중의 하나의 레벨을 선택할 수 있다. 다른 실시예들에서, 다른 명령이 멀티 레벨 고체 상태 저장 장치들(216, 218, 220) 중의 하나의 레벨을 개별적으로 선택하기 위해 저장 제어 버스(212)에 의해 사용된다. 고체 상태 저장 장치들(216, 218, 220)은 또한 저장 I/O 버스(210)와 저장 제어 버스(212)에 대해 전송된 제어와 어드레스 정보의 조합을 통해 선택될 수 있다.In general, the banks 214a-n are independently selected using the storage control bus 212. In one embodiment, the bank 214 is selected using chip enable or chip selection. If chip selection and chip enable are available, the storage control bus 212 may select the level of one of the multilevel solid state storage devices 216, 218, 220. In other embodiments, other instructions are used by the storage control bus 212 to individually select the level of one of the multi-level solid state storage devices 216, 218, 220. The solid state storage devices 216, 218, 220 may also be selected through a combination of control and address information sent to storage I / O bus 210 and storage control bus 212.

일 실시예에서, 각각의 고체 상태 저장 장치(216, 218, 220)는 소거 블록들로 분할되며 각각의 소거 블록은 페이지들로 분할된다. 고체 상태 저장 장치(216, 218 220)에 대한 소거 블록은 물리적인 소거 블록 또는 "PEB"로 불릴 수 있다. 일반적인 페이지는 2000 바이트("2kB")이다. 일 예에서, 고체 상태 저장 장치(예를 들면 SSS 0.0)는 두 개의 레지스터를 포함하며 두 개의 페이지를 프로그래밍할 수 있으며 그 결과 두 개의 레지스터 고체 상태 저장 장치(216, 218, 220)는 4kB의 용량을 가진다. 20개의 고체 상태 저장 장치들(216a, 216b, 216m)의 뱅크(214)는 그 다음에 저장 I/O 버스(210)의 채널들을 나가는 동일한 어드레스에 접속되는 80kB 용량의 페이지들을 가질 수 있을 것이다.In one embodiment, each solid state storage device 216, 218, 220 is divided into erase blocks and each erase block is divided into pages. The erase block for solid state storage devices 216, 218 220 may be referred to as a physical erase block or "PEB ". A typical page is 2000 bytes ("2kB"). In one example, a solid state storage device (e.g., SSS 0.0) includes two registers and can program two pages, resulting in two register solid state storage devices 216, 218, . The bank 214 of the 20 solid state storage devices 216a, 216b and 216m may then have pages of 80 kB capacity connected to the same address exiting the channels of the storage I / O bus 210.

80kB의 고체 상태 저장 장치들(216a, 216b, 216m)의 뱅크(214)에서 이런 그룹의 페이지들은 논리 페이지 또는 가상 페이지로 불릴 수 있다. 마찬가지로, 뱅크(214a)의 각각의 저장 장치(216a-m)의 소거 블록은 논리 소거 블록 또는 가상 소거 블록을 형성하기 위해 그룹을 이룰 수 있다. 일 실시예에서, 고체 상태 저장 장치(216, 218, 220) 내의 페이지들의 소거 블록은 소거 명령이 고체 상태 장치(216, 218, 220) 내에 수신될 때 소거된다. 고체 상태 저장 장치(216, 218, 220) 내의 소거 블록들, 페이지들, 평면들, 또는 다른 논리적이며 물리적인 파티션들의 크기와 수는 기술의 진보와 함께 시간의 경과에 따라 변하는 것으로 예상되는 것에 반하여, 새로운 형태와 일치하는 많은 실시예들이 가능하며 여기의 일반적인 설명과 일치한다는 것이 예상된다.These groups of pages in the bank 214 of the 80 kB solid state storage devices 216a, 216b, 216m may be referred to as logical pages or virtual pages. Likewise, the erase blocks of each storage device 216a-m of the bank 214a may form a group to form a logical erase block or a virtual erase block. In one embodiment, erase blocks of pages in solid state storage devices 216, 218, 220 are erased when erase commands are received in solid state devices 216, 218, 220. While the size and number of erase blocks, pages, planes, or other logical and physical partitions in solid state storage devices 216, 218, 220 are expected to change over time with advances in technology , It is anticipated that many embodiments consistent with the novel features are possible and consistent with the general description herein.

일반적으로, 패킷이 고체 상태 저장 장치(216, 218, 220) 내의 특정 위치에 기록될 때, 여기서 패킷은 특정 뱅크의 특정 저장 장치의 특정한 물리적인 소거 블록에 특유한 것인 특정 페이지 내의 한 위치에 기록되기 위한 것이며, 물리적인 어드레스는 저장 I/O 버스(210)에 전송되며 그 다음에 패킷이 전송된다. 물리적인 어드레스는 페이지 내에서 지시된 위치로 패킷을 유도하기 위해 고체 상태 저장 장치(216, 218, 220)에 대한 충분한 정보를 가진다. 하나의 칼럼의 저장 장치들에 있는 모든 저장 장치들(예를 들면 SSS 0.0-SSS N.0 216a, 218a, 220a)이 저장 I/O 버스(210a.a) 내에서 적당한 버스에 의해 동시에 접속되기 때문에, 적절한 페이지에 도달하며 이런 칼럼의 저장 장치들(SSS 0.0-SSS N.0 216a, 218a, 220a)에서 유사하게 어드레스된 페이지들에 데이터 패킷을 기록하는 것을 회피하기 위해, 데이터 패킷이 기록되는 올바른 페이지를 가지는 고체 상태 저장 장치(SSS 0.0 216a)를 포함하는 뱅크(214a)가 저장 제어 버스(212)에 의해 동시에 선택된다.In general, when a packet is written to a particular location in the solid state storage device 216, 218, 220, the packet is written to a location within a particular page that is specific to a particular physical erase block of a particular storage device of a particular bank And the physical address is sent to the storage I / O bus 210 and then the packet is transmitted. The physical address has sufficient information for the solid state storage device 216, 218, 220 to direct the packet to the indicated location within the page. All of the storage devices (e.g., SSS 0.0-SSS N.0.1 216a, 218a, 220a) in the storage devices of one column are simultaneously connected by a suitable bus in the storage I / O bus 210a.a Therefore, in order to reach the appropriate page and to avoid writing the data packet to the similarly addressed pages in the storage devices of this column (SSS 0.0-SSS N.0 216a, 218a, 220a), the data packet is written A bank 214a containing solid state storage (SSS 0.0 216a) with the correct page is simultaneously selected by the storage control bus 212.

이와 마찬가지로, 저장 I/O 버스(210)에 대한 판독 명령을 충족시키는 것은 신호 뱅크(214a)와 뱅크(214a) 내에 있는 적당한 페이지를 선택하기 위해 저장 제어 버스(212)에 대한 동시 신호를 필요로 한다. 일 실시예에서, 판독 명령은 전체 페이지를 판독하며, 뱅크(214)에 병렬로 구비되는 다수의 고체 상태 저장 장치들(216a, 216b, 216m)이 있기 때문에, 전체 논리 페이지는 판독 명령으로 판독된다. 그러나, 판독 명령은 뱅크 인터리브에 대해 아래에 설명되는 바와 같이 하위 명령들로 나누어질 수 있다. 논리 페이지는 또한 기록 작동에 접속될 수 있다.Likewise, meeting the read command on the storage I / O bus 210 requires a simultaneous signal on the storage control bus 212 to select the appropriate page within the signal bank 214a and the bank 214a do. In one embodiment, the read command reads the entire page, and since there are a number of solid state storage devices 216a, 216b, 216m provided in parallel to the bank 214, the entire logical page is read as a read command . However, the read command may be subdivided into subcommands as described below for bank interleaving. The logical page may also be connected to a write operation.

소거 블록 소거 명령이 특정 소거 블록을 소거하도록 특정 소거 블록 어드레스를 가지는 저장 I/O 버스(210)를 통해 소거 블록을 소거하기 위해 외부로 전송될 수 있다. 일반적으로, 소거 블록 소거 명령은 특정 소거 블록을 소거하도록 특정 소거 블록 어드레스를 각각 가지는 논리 소거 블록을 소거하기 위해 저장 I/O 버스(210)의 병렬의 경로들을 통해 전송될 수 있다. 이와 동시에 특정 뱅크(예를 들면 뱅크(0 214a))가 모든 뱅크들(뱅크들(1-N 214b-n))에서 유사하게 어드레스된 소거 블록들의 소거를 방지하기 위해 저장 제어 버스(212)를 통해 선택된다. 또는, 특정 뱅크(예를 들면 뱅크(0 214a))이 모든 뱅크들(뱅크들(1-N 214b-n))에서 동시에 유사하게 어드레스된 소거 블록들의 소거를 가능하게 하기 위해 저장 제어 버스(212)를 통해 선택되지 않는다. 다른 명령들이 또한 저장 I/O 버스(210)와 저장 제어 버스(212)의 조합을 사용하여 특정 위치에 전송될 수 있다. 본 기술분야의 기술자는 양방향 저장 I/O 버스(210)와 저장 제어 버스(212)를 사용하여 특정 저장 위치를 선택하기 위한 다른 방식을 인지할 것이다.The erase block erase command may be sent out to erase the erase block via the storage I / O bus 210 having a specific erase block address to erase the specific erase block. Generally, an erase block erase command may be sent over the parallel paths of the storage I / O bus 210 to erase a logical erase block each having a specific erase block address to erase a specific erase block. At the same time, a particular bank (e.g., bank 214a) is coupled to the storage control bus 212 to prevent erasure of similarly addressed erase blocks in all banks (banks 1-N414b-n) . Alternatively, a particular bank (e. G., Bank 214a) may be coupled to the storage control bus 212 (e. G., Bank 214a-n) to enable erasure of erase blocks similarly similarly addressed in all banks ). ≪ / RTI > Other instructions may also be transmitted to a particular location using a combination of storage I / O bus 210 and storage control bus 212. [ Those skilled in the art will recognize other ways to select a particular storage location using the bi-directional storage I / O bus 210 and the storage control bus 212.

일 실시예에서, 패킷들은 고체 상태 저장장치(110)에 연속하여 기록된다. 예를 들면, 패킷들은 저장 장치들(216)의 뱅크(214a)의 저장 기록 버퍼들에 스트리밍되며 버퍼들이 채워질 때, 패킷들은 지시된 논리 페이지에 프로그래밍된다. 패킷들은 그런 다음에 저장 기록 버퍼들을 다시 채우며, 이들이 채워질 때, 패킷들은 다음 논리 페이지에 기록된다. 다음 논리 페이지는 동일한 뱅크(214a)이거나 다른 뱅크(예를 들면 214b)일 수 있다. 이런 과정은 일반적으로 논리 소거 블록이 채워질 때까지, 논리 페이지마다 계속된다. 다른 실시예에서, 스트리밍이 논리 소거 블록 경계를 넘어 계속될 수 있으며 이런 과정은 논리 소거 블록마다 계속된다.In one embodiment, packets are continuously written to the solid state storage device 110. For example, the packets are streamed to the storage write buffers of the bank 214a of the storage devices 216 and when the buffers are filled, the packets are programmed into the indicated logical page. The packets then refill the storage write buffers, and when they are filled, the packets are written to the next logical page. The next logical page may be the same bank 214a or another bank (e.g., 214b). This process generally continues for each logical page until the logical erase block is filled. In another embodiment, streaming may continue beyond the logical erase block boundary and this process continues for each logical erase block.

판독, 수정, 기록 작동에서, 요청 데이터와 관련된 데이터 패킷들은 판독 작동에 위치하며 판독된다. 수정된 수정 요청 데이터의 데이터 세그먼트들이 이들이 판독되는 위치에 기록되지 않는다. 또는, 수정 데이터 세그먼트들은 데이터 패킷들로 다시 변환되며 그런 다음에 현재 기록되는 중인 논리 페이지에 있는 다음의 이용 가능한 위치에 연속하여 기록된다. 개개의 데이터 패킷들에 대한 인덱스 엔트리들은 수정된 데이터 세그먼트들을 가지는 패킷들을 가리키기 위해 수정된다. 수정되지 않은 동일한 요청 데이터와 관련된 데이터 패킷들에 대한 인덱스의 엔트리 또는 엔트리들은 수정되지 않은 데이터 패킷들의 원래 위치에 대한 포인터들을 포함할 것이다. 따라서, 만약 원래의 요청 데이터가 예를 들면 이전 버전의 요청 데이터를 유지하기 위해 유지된다면, 원래 요청된 데이터는 원래 기록된 것으로 모든 데이터 패킷들에 대한 인덱스에 포인터들을 가질 것이다. 새로 요청된 데이터는 몇몇의 원래 데이터 패킷들에 대한 인덱스에 포인터들 및 현재 기록되는 중인 논리 페이지에 있는 수정된 데이터 패킷들에 대한 포인터들을 가질 것이다.In a read, modify, write operation, data packets associated with the requested data are located and read in a read operation. The data segments of the modified modification request data are not recorded at the location where they are read. Alternatively, the modified data segments are converted back into data packets and subsequently written to the next available location in the logical page being currently written. The index entries for the individual data packets are modified to indicate packets having the modified data segments. Entries or entries in the index for data packets associated with the same request data that have not been modified will contain pointers to the original location of the unmodified data packets. Thus, if the original request data is maintained, for example, to retain the previous version of the request data, the originally requested data will have pointers to all data packets as originally recorded. The newly requested data will have pointers to the indexes for some original data packets and pointers to the modified data packets in the logical page being currently written.

복사 작동에서, 인덱스는 고체 상태 저장장치(110)에 저장된 다수의 패킷들로 맵핑된 원래 요청된 데이터에 대한 엔트리를 포함한다. 복사가 만들어질 때, 요청된 데이터의 새로운 복사가 생성되며 새로운 엔트리가 원래 패킷들로 요청된 데이터의 새로운 복사를 맵핑하는 인덱스에 생성된다. 요청된 데이터의 새로운 복사는 또한 고체 상태 저장장치(110)에 기록되며 이의 위치는 인덱스에 있는 새로운 엔트리에 맵핑된다. 요청된 데이터 패킷들의 새로운 복사는 요청된 데이터의 복사에 전파되지 않은 원래 요청된 데이터가 변경되며 인덱스가 분실되거나 손상된 경우에 참조되는 원래 요청된 데이터 내에서 패킷들을 식별하는데 사용될 수 있다.In a copy operation, the index includes an entry for the originally requested data mapped to a plurality of packets stored in the solid state storage device 110. [ When a copy is made, a new copy of the requested data is created and a new entry is created in the original packet with an index mapping a new copy of the requested data. A new copy of the requested data is also written to the solid state storage device 110 and its location is mapped to a new entry in the index. A new copy of the requested data packets may be used to identify the packets in the originally requested data that is referenced when the originally requested data that has not been propagated to the copy of the requested data is modified and the index is lost or corrupted.

유리하게도, 연속적으로 기록하는 패킷들은 고체 상태 저장장치(110)의 보다 균일한 사용을 촉진하며 고체 저장 장치 컨트롤러(202)가 고체 상태 저장장치(110)에서 저장 핫 스팟과 다양한 논리 페이지들의 사용 레벨을 모니터링하는 것을 허용한다. 연속적으로 기록하는 패킷들은 또한 아래에 상세하게 설명되는, 강력하며 효과적인 불필요 데이터 수집 시스템을 촉진한다. 본 기술분야의 기술자는 데이터 패킷들의 연속적인 저장의 다른 이점들을 인지할 것이다.Advantageously, consecutively written packets facilitate more uniform use of the solid state storage device 110 and allow the solid state storage controller 202 to store the stored hot spots and the usage levels of the various logical pages in the solid state storage device 110 To be monitored. Consecutively written packets also facilitate a robust and effective unwanted data collection system, which is described in detail below. The skilled artisan will recognize other advantages of continuous storage of data packets.

고체 상태 저장 장치 컨트롤러Solid State Storage Controller

다양한 실시예들에서, 고체 상태 저장 장치 컨트롤러(202)는 또한 아래에 설명되는 데이터 버스(204), 로컬 버스(206), 버퍼 컨트롤러(208), 버퍼들(0-N 222a-n), 마스터 컨트롤러(224), 직접 메모리 접속("DMA") 컨트롤러(226), 메모리 컨트롤러(228), 동적 메모리 어레이(230), 정적 랜덤 메모리 어레이(232), 관리 컨트롤러(234), 관리 버스(236), 시스템 버스(240)에 대한 브릿지(238), 및 잡다한 로직(242)을 포함한다. 다른 실시예들에서, 시스템 버스(240)는 하나 이상의 네트워크 인터페이스 카드들("NICs")(244)에 결합되며, 이의 몇몇은 아래에 설명되는 리모트 DMA("RDMA") 컨트롤러들(246), 하나 이상의 중앙 처리 유닛("CPU")(248), 하나 이상의 외부 메모리 컨트롤러들(250)과 관련된 외부 메모리 어레이들(252), 하나 이상의 저장 컨트롤러들(254), 피어 컨트롤러들(256), 및 어플리케이션 특정 프로세서들(258)을 포함할 수 있다. 시스템 버스(240)에 연결되는 소자들(244-258)은 클라이언트(114)에 위치할 수 있거나 다른 장치들에 있을 수 있다.In various embodiments, the solid state storage controller 202 also includes a data bus 204, a local bus 206, a buffer controller 208, buffers (0-N 222a-n), a master ("DMA") controller 226, a memory controller 228, a dynamic memory array 230, a static random memory array 232, a management controller 234, a management bus 236, A bridge 238 for the system bus 240, and miscellaneous logic 242. In other embodiments, the system bus 240 is coupled to one or more network interface cards ("NICs") 244, some of which may be remote DMA ("RDMA") controllers 246, One or more central processing units ("CPUs") 248, one or more external memory controllers 250 associated with external memory arrays 252, one or more storage controllers 254, peer controllers 256, And may include application specific processors 258. The elements 244-258 connected to the system bus 240 may be located in the client 114 or may be in other devices.

일반적으로 고체 상태 저장 컨트롤러(들)(104)은 저장 I/O 버스(210)를 통해 고체 상태 저장장치(110)에 데이터를 통신한다. 일반적인 실시예에서 고체 상태 저장장치가 뱅크들(214)에 배치되며 각각의 뱅크(214)가 병렬로 접속되는 다수의 저장 장치들(216a, 216b, 216m)을 포함하는 경우에, 저장 I/O 버스(210)은 하나의 배열의 버스들이며, 각각의 칼럼의 저장 장치들(216, 218, 220)에 대해 하나가 뱅크들(214)에 미친다. 여기에 사용되는 것과 같은 용어 "저장 I/O 버스" 하나의 저장 I/O 버스(210) 또는 하나의 배열의 데이터 독립 버스들(204)을 가리킬 수 있다. 일 실시예에서, 하나의 칼럼의 저장 장치들(예를 들면 216a, 218a, 220a)에 접속하는 각각의 저장 I/O 버스(210)는 하나의 컬럼의 저장 장치들(216a, 218a, 220a)에 접속되는 저장 파티션들(예를 들면 소거 블록들)에 대한 논리 대 물리 맵핑을 포함할 수 있다. 만약 제1 저장 파티션이 고장이거나, 부분적으로 고장이거나, 접속이 불가능하거나, 또는 몇몇 다른 문제를 가진다면 이런 맵핑(또는 배드 블록 리맵핑)은 저장 파티션의 물리적 어드레스로 맵핑된 논리 어드레스가 상이한 저장 파티션으로 리맵핑되는 것을 허용한다.In general, the solid state storage controller (s) 104 communicate data to the solid state storage device 110 via the storage I / O bus 210. In a typical embodiment, when a solid state storage device is disposed in banks 214 and each bank 214 includes a plurality of storage devices 216a, 216b, 216m connected in parallel, the storage I / The bus 210 is an array of busses, one for each of the storage devices 216, 218, 220 of the columns, extending into the banks 214. As used herein, the term "storage I / O bus" may refer to one storage I / O bus 210 or one array of data independent buses 204. In one embodiment, each storage I / O bus 210 that connects to one column of storage devices (e.g., 216a, 218a, 220a) includes one column of storage devices 216a, 218a, 220a, Physical mapping to storage partitions (e. G., Erase blocks) that are connected to the storage partitions. This mapping (or bad block remapping) may be performed if the logical address mapped to the physical address of the storage partition is different from the storage partition < RTI ID = 0.0 >Lt; / RTI >

데이터는 또한 시스템 버스(240), 브릿지(238), 로컬 버스(206), 버퍼(들)(222), 및 마지막으로 데이터 버스(204)를 통해 요청 장치(155)로부터 고체 상태 저장 컨트롤러(들)(104)과 통신될 수 있다. 데이터 버스(204)는 일반적으로 버퍼 컨트롤러(208)로 제어되는 하나 이상의 버퍼들(222a-n)에 연결된다. 버퍼 컨트롤러(208)는 일반적으로 로컬 버스(206)로부터 버퍼들(222)까지 그리고 데이터 버스(204)를 통해 파이프라인 입력 버퍼(306)와 출력 버퍼(330)로 데이터의 전달을 제어한다. 버퍼 컨트롤러(208)는 일반적으로 상이한 클럭 도메인들을 평가하기 위해, 데이터 충돌을 방지하는 등을 위해, 요청 장치로부터 도착한 데이터가 버퍼(222)에 일시적으로 저장될 수 있으며 그런 다음에 데이터 버스(204)에 전달될 수 있는 방법, 또는 그 반대로 진행되는 방법을 제어한다. 버퍼 컨트롤러(208)는 일반적으로 데이터 흐름을 조정하기 위해 마스터 컨트롤러(224)와 함께 작동한다. 데이터가 도착할 때, 데이터는 시스템 버스(240)에 도착할 것이며, 브릿지(238)를 통해 로컬 버스(206)에 전달될 것이다.Data is also transferred from the requesting device 155 via the system bus 240, the bridge 238, the local bus 206, the buffer (s) 222, and finally the data bus 204 to the solid state storage controller ) ≪ / RTI > The data bus 204 is coupled to one or more buffers 222a-n that are typically controlled by a buffer controller 208. [ The buffer controller 208 generally controls the transfer of data from the local bus 206 to the buffers 222 and from the data bus 204 to the pipeline input buffer 306 and the output buffer 330. Buffer controller 208 may generally temporarily store data arriving from the requesting device in buffer 222 to evaluate different clock domains, prevent data conflicts, and the like, , Or vice versa. ≪ / RTI > Buffer controller 208 generally operates in conjunction with master controller 224 to coordinate data flow. When data arrives, the data will arrive on the system bus 240 and be transferred to the local bus 206 via bridge 238. [

일반적으로 데이터는 마스터 컨트롤러(224)와 버퍼 컨트롤러(208)에 의해 유도될 때 로컬 버스(206)로부터 하나 이상의 데이터 버퍼들(222)까지 전달된다. 데이터는 그런 다음에 버퍼(들)(222)로부터 데이터 버스(204)로, 고체 상태 컨트롤러(104)를 통해, 그리고 NAND 플래시 또는 다른 젖아 매체와 같은 고체 상태 저장장치(110)로 흐른다. 일 실시예에서, 데이터 및 데이터와 함께 도착되는 관련된 대역외 메타데이터("메타데이터")는 하나 이상의 고체 상태 저장 컨트롤러들(104a-104n-1)과 관련된 고체 상태 저장장치(110a-110n-1)를 포함하는 하나 이상의 데이터 채널을 사용하여 통신되지만 적어도 하나의 채널(고체 상태 저장 컨트롤러(104n), 고체 상태 저장장치(110n))는 인덱스 정보 및 고체 상태 저장 장치(102)에서 내부적으로 발생된 다른 메타데이터와 같은 대역내 메타데이터 전용이다.Data is typically transferred from the local bus 206 to one or more data buffers 222 when derived by the master controller 224 and the buffer controller 208. The data then flows from the buffer (s) 222 to the data bus 204, through the solid state controller 104, and to the solid state storage 110, such as NAND flash or other wetting media. In one embodiment, the associated out-of-band metadata ("metadata") arriving with data and data may be stored in solid state storage devices 110a-110n-1 associated with one or more solid state storage controllers 104a-104n- ), But at least one channel (solid state storage controller 104n, solid state storage device 110n) is communicated using index information and one or more data channels that are internally generated in solid state storage device 102 It is dedicated to in-band metadata such as other metadata.

로컬 버스(206)는 일반적으로 고체 상태 저장 장치 컨트롤러(202)에 내장된 장치들 사이에서 그리고 고체 상태 저장 장치(102)에 내장된 장치들과 시스템 버스(240)에 연결된 장치들(244-258) 사이에서 데이터와 명령들의 통신을 허용하는 양방향 버스 또는 세트의 버스들이다. 브릿지(238)는 로컬 버스(206)와 시스템 버스(240) 사이의 통신을 용이하게 한다. 본 기술분야의 기술자는 링 구조들 또는 스위칭된 별모양 형태들 및 기능들의 버스들(240, 206, 204, 210) 및 브릿지들(238)과 같은 다른 실시예들을 인지할 것이다.Local bus 206 is generally connected between devices embedded in solid state storage controller 202 and to devices embedded in solid state storage device 102 and devices 244-258 Bus or set of buses that allow communication of data and instructions between the buses. The bridge 238 facilitates communication between the local bus 206 and the system bus 240. Those skilled in the art will recognize other embodiments such as busses 240, 206, 204, 210 and bridges 238 of ring structures or switched star shapes and functions.

시스템 버스(240)는 일반적으로 고체 상태 저장 장치(102)가 설치되거나 연결되는 클라이언트(114) 또는 다른 장치의 버스이다. 일 실시예에서, 시스템 버스(240)는 PCI-e 버스, 직렬 고급 기술 부착("직렬 ATA") 버스, 병렬 ATA, 또는 이와 유사한 것일 수 있다. 다른 실시예에서, 시스템 버스(240)는 소형 컴퓨터 시스템 인터페이스("SCSI"), FireWire, 파이버 채널, USB, PCIe-AS, 또는 이와 유사한 것과 같은 외부 버스이다. 고체 상태 저장 장치(102)는 장치에 내부로 끼워지도록 또는 외부에 연결된 장치로 포장될 수 있다.System bus 240 is typically a bus of client 114 or other device upon which solid state storage 102 is installed or connected. In one embodiment, the system bus 240 may be a PCI-e bus, a Serial Advanced Technology Attachment ("Serial ATA") bus, Parallel ATA, or the like. In another embodiment, the system bus 240 is an external bus such as a small computer system interface ("SCSI"), FireWire, Fiber Channel, USB, PCIe-AS, or the like. The solid state storage device 102 may be packaged into the device either internally or externally.

고체 상태 저장 장치 컨트롤러(202)는 고체 상태 저장 장치(102) 내에서 더 높은 수준의 기능들을 제어하는 마스터 컨트롤러(224)를 포함한다. 마스터 컨트롤러(224)는 다양한 실시예들에서 객체 요청들과 다른 요청들을 해석함으로써 데이터 흐름을 제어하며, DMA 요청들 등을 조정하는 관련된 데이터의 물리적 위치에 대한 데이터와 관련된 객체 식별자들을 맵핑하기 위해 인덱스들의 생성을 지시한다. 여기에 설명된 많은 기능들은 마스터 컨트롤러(224)에 의해 전적으로 또는 부분적으로 제어된다.The solid state storage controller 202 includes a master controller 224 that controls higher level functions within the solid state storage device 102. The master controller 224 controls the data flow by interpreting object requests and other requests in various embodiments, and is used to map the object identifiers associated with the data for the physical location of the associated data, . Many of the functions described herein are wholly or partially controlled by the master controller 224. [

일 실시예에서, 마스터 컨트롤러(224)는 내장된 컨트롤러(들)를 사용한다. 다른 실시예에서, 마스터 컨트롤러(224)는 동적 메모리 어레이(230)(동적 랜덤 접속 메모리 "DRAM"), 정적 메모리 어레이(232; 정적 랜덤 접속 메모리 "SRAM") 등과 같은 로컬 메모리를 사용한다. 일 실시예에서, 로컬 메모리는 마스터 컨트롤러(224)를 사용하여 제어된다. 다른 실시예에서, 마스터 컨트롤러(224)는 메모리 컨트롤러(228)를 통해 로컬 메모리에 접속한다. 다른 실시예에서, 마스터 컨트롤러(224)는 리눅스 서버를 작동시키며 월드 와이드 웹, 하이퍼텍스트 작성 언어("HTML")등과 같은 다양한 공용 서버 인터페이스들을 제공할 수 있다. 다른 실시예에서, 마스터 컨트롤러(224)는 나노 프로세서를 사용한다. 마스터 컨트롤러(224)는 프로그램 가능하거나 표준 로직, 또는 위에 열거된 컨트롤러 타입들의 임의의 조합을 사용하여 구성될 수 있다. 본 기술분야에서 숙련된 사람은 마스터 컨트롤러(224)에 대한 많은 실시예들을 인지할 것이다.In one embodiment, the master controller 224 uses the embedded controller (s). In another embodiment, the master controller 224 uses local memory, such as a dynamic memory array 230 (dynamic random access memory "DRAM"), a static memory array 232 (static random access memory "SRAM & In one embodiment, the local memory is controlled using a master controller 224. In another embodiment, the master controller 224 connects to the local memory via the memory controller 228. In another embodiment, the master controller 224 operates a Linux server and can provide a variety of public server interfaces, such as the World Wide Web, hypertext creation language ("HTML"), and the like. In another embodiment, the master controller 224 uses a nanoprocessor. The master controller 224 may be configured using programmable or standard logic, or any combination of the controller types listed above. Those skilled in the art will recognize many embodiments of the master controller 224.

일 실시예에서, 저장 장치/고체 상태 저장 장치 컨트롤러(202)는 다수의 데이터 저장 장치들/고체 상태 저장장치(110a-n)를 관리하는 경우에, 마스터 컨트롤러(224)는 고체 상태 저장 컨트롤러들(104a-n)과 같은 내부 컨트롤러들 사이에 작업 부하를 나눈다. 예를 들면, 마스터 컨트롤러(224)는 데이터 저장 장치들(예를 들면 고체 상태 저장장치(110a-n))에 기록되기 위해 객체를 나눌 수 있으며 그 결과 객체의 일부분이 각각의 부착된 데이터 저장 장치들에 저장된다. 이런 특징은 객체에 대한 보다 빠른 저장과 접속을 허용하는 성능 향상이다. 일 실시예에서, 마스터 컨트롤러(224)는 FPGA를 사용하여 실행된다. 다른 실시예에서, 마스터 컨트롤러(224)의 내에 있는 펌웨어는 관리 버스(236), NIC(244)에 연결되는 네트워크를 통과하는 시스템 버스(240) 또는 시스템 버스(240)에 연결되는 다른 장치를 통해 업데이트될 수 있다.In one embodiment, when the storage device / solid state storage controller 202 manages a plurality of data storage devices / solid state storage devices 110a-n, the master controller 224 is coupled to the solid state storage controllers < RTI ID = (104a-n). For example, the master controller 224 may divide objects to be written to data storage devices (e.g., solid state storage devices 110a-n) so that a portion of the objects may be stored in each attached data storage device Lt; / RTI > This feature is a performance enhancement that allows faster storage and access to objects. In one embodiment, the master controller 224 is implemented using an FPGA. The firmware within the master controller 224 may be coupled to the management bus 236 via a system bus 240 passing through the network connected to the NIC 244 or other device connected to the system bus 240. [ Can be updated.

일 실시예에서, 객체들을 관리하는 마스터 컨트롤러(224)는 저장 장치/고체 상태 저장 장치(102)에 연결되는 클라이언트(114) 또는 다른 장치가 블록 저장 장치로 저장 장치/고체 상태 저장 장치(102)를 검사하며 저장 장치/고체 상태 저장 장치(102)에 있는 특정한 물리적 어드레스에 데이터를 전송할 정도로 블록 저장을 모방한다. 마스터 컨트롤러(224)는 그런 다음에 블록들을 나누며 객체들에 했던 것과 같이 데이터 블록들을 저장한다. 마스터 컨트롤러(224)는 그런 다음에 블록들 및 마트터 컨트롤러(224)에 의해 결정된 실제 위치들로 블록과 함께 전송된 물리적 어드레스를 맵핑한다. 맵핑은 객체 인덱스에 저장된다. 일반적으로, 블록 모방을 위해, 블록 장치 어플리케이션 프로그램 인터페이스("APT")가 클라이언트(114)와 같은 컴퓨터의 드라이버에, 또는 블록 저장 장치로 저장 장치/고체 상태 저장 장치(102)를 사용하기를 원하는 다른 장치에 제공된다.In one embodiment, the master controller 224, which manages objects, may be used by the client 114 or other device connected to the storage / solid state storage device 102 as a block storage device to store / And implements block storage to transfer data to a specific physical address in storage / solid state storage device 102. The master controller 224 then divides the blocks and stores the data blocks as they did to the objects. The master controller 224 then maps the physical addresses sent with the blocks to the actual locations determined by the blocks and the martor controller 224. The mapping is stored in the object index. In general, for block mimicry, a block device application program interface ("APT") may be used in the driver of a computer such as client 114, or as a block storage device And is provided to another apparatus.

다른 실시예에서, 마스터 컨트롤러(224)는 데이터와 명령 세트들의 저스트-인-타임 RDMA 이동을 알리기 위해 NIC 컨트롤러들(244) 및 내장된 RDMA 컨트롤러들(246)과 연동한다. NIC 컨트롤러(244)는 주문형 드라이버들의 사용을 가능하게 하기 위해 불투명한 포트의 뒤에 숨겨질 수 있다. 또한, 클라이언트(114)에 대한 드라이버는 표준 스택 API를 사용하며 NIC들(244)과 함께 작동하는 I/O 메모리 드라이버를 통해 컴퓨터 네트워크(116)에 접속할 수 있다.In another embodiment, master controller 224 interfaces with NIC controllers 244 and embedded RDMA controllers 246 to signal just-in-time RDMA movement of data and instruction sets. NIC controller 244 may be hidden behind opaque ports to enable use of custom drivers. In addition, the driver for the client 114 may use the standard stack API and connect to the computer network 116 via an I / O memory driver operating in conjunction with the NICs 244.

일 실시예에서, 마스터 컨트롤러(224)는 또한 리던던트 어레이의 독립 드라이브("RAID") 컨트롤러이다. 데이터 저장 장치/고체 상태 저장 장치(102)가 하나 이상의 다른 데이터 저장 장치들/고체 상태 저장 장치들(102)과 네트워크로 연결된 경우에, 마스터 컨트롤러(224)는 싱글 계층 RAID, 멀티 계층 RAID, 점진적 RAID 등을 위한 RAID 컨트롤러일 수 있다. 마스터 컨트롤러(224)는 또한 몇몇 객체들이 RAID 어레이에 저장되며 다른 객체들이 RAID 없이 저장되는 것을 허용한다. 다른 실시예에서, 마스터 컨트롤러(224)는 분산형 RAID 컨트롤러 소자일 수 있다. 다른 실시예에서, 마스터 컨트롤러(224)는 많은 RAID, 분산형 RAID, 및 다른 곳에 설명된 바와 같은 다른 기능들을 포함할 수 있다. 일 실시예에서, 마스터 컨트롤러(224)는 패러디 정보가 동일한 논리 페이지의 다른 저장 소자들(216, 218, 220)에 저장된 데이터를 보호하는 논리 페이지의 하나 이상의 저장 소자들(216, 218, 220)에 패리티 정보가 저장되는 RAID와 유사한 구조에서 데이터의 저장을 제어한다.In one embodiment, the master controller 224 is also an independent drive ("RAID") controller in a redundant array. When the data storage / solid state storage device 102 is networked with one or more other data storage devices / solid state storage devices 102, the master controller 224 may be a single layer RAID, a multi-layer RAID, RAID < / RTI > The master controller 224 also allows some objects to be stored in the RAID array and other objects to be stored without the RAID. In another embodiment, the master controller 224 may be a distributed RAID controller device. In another embodiment, the master controller 224 may include many RAID, distributed RAID, and other functions as described elsewhere. In one embodiment, the master controller 224 includes one or more storage elements 216, 218, 220 of a logical page protecting paradigm information stored in other storage elements 216, 218, 220 of the same logical page. And stores the data in a structure similar to RAID in which parity information is stored.

일 실시예에서, 마스터 컨트롤러(224)는 대역폭 이용, 장애 복구의 균형을 유지하기 위해, 라우팅을 설립하는 싱글 또는 리던던트 네트워크 관리자들(예를 들면 스위치들)과 연동한다. 다른 실시예에서, 마스터 컨트롤러(224)는 (로컬 버스(206)를 통해) 통합 어플리케이션 특정 로직 및 관련된 드라이버 소프트웨어와 연동한다. 다른 실시예에서, 마스터 컨트롤러(224)는 부착된 어플리케이션 특정 프로세서들(258) 또는 (외부 시스템 버스(240)를 통해) 로직 및 관련된 드라이버 소프트웨어와 연동한다. 다른 실시예에서, 마스터 컨트롤러(224)는 (컴퓨터 네트워크(116)를 통해) 리모트 어플리케이션 특정 로직 및 관련된 드라이버 소프트웨어와 연동한다. 다른 실시예에서, 마스터 컨트롤러(224)는 로컬 버스(206) 또는 외부 버스 부착 하드 디스크 드라이브("HDD") 저장 컨트롤러와 연동한다. In one embodiment, the master controller 224 interfaces with single or redundant network managers (e.g., switches) that establish routing to balance bandwidth utilization, failover, and so on. In another embodiment, master controller 224 (via local bus 206) interfaces with integrated application specific logic and associated driver software. In another embodiment, the master controller 224 interfaces with the application specific processors 258 or the logic and associated driver software (via the external system bus 240). In another embodiment, master controller 224 (via computer network 116) interfaces with remote application specific logic and associated driver software. In another embodiment, the master controller 224 interfaces with a local bus 206 or an external bus attached hard disk drive ("HDD ") storage controller.

일 실시예에서, 마스터 컨트롤러(224)는 저장 장치/고체 상태 저장 장치(102)가 SCSI 버스, 인터넷 SCSI("iSCSI"), 파이버 채널, 등을 통해 연결된 저장 장치로 나타날 수 있는 경우에 하나 이상의 저장 컨트롤러들(254)과 통신한다. 한편 저장 장치/고체 상태 저장 장치(102)는 객체들을 독자적으로 관리할 수 있으며 객체 파일 시스템 또는 분산형 객체 파일 시스템으로 나타날 수 있다. 마스터 컨트롤러(224)는 또한 피어 컨트롤러들(256) 및/또는 어플리케이션 특정 프로세서들(258)에 의해 접속될 수 있다.In one embodiment, the master controller 224 is operatively coupled to one or more storage device / solid state storage devices 102 when storage device / solid state storage device 102 may appear as a storage device connected via a SCSI bus, Internet SCSI ("iSCSI"), Fiber Channel, Storage controllers 254. The storage controller On the other hand, the storage / solid state storage device 102 can independently manage the objects and can appear as an object file system or a distributed object file system. Master controller 224 may also be connected by peer controllers 256 and / or application specific processors 258.

다른 실시예에서, 마스터 컨트롤러(224)는 FPGA 코드 및/또는 컨트롤러 소프트웨어를 주기적으로 확인하며, 운전(리셋) 중에 FPGA 코드를 확인하며/확인하거나 파워 온(리셋) 중에 컨트롤러 소프트웨어를 확인하며, 외부 리셋 요청을 제공하며, 워치독 타임아웃에 기인한 리셋 요청을 제공하며, 전압, 전류, 파워, 온도, 및 한계치 인터럽트의 다른 환경 측정과 설정을 제공하기 위해 독자적으로 통합된 관리 컨트롤러와 연동한다. 다른 실시예에서, 마스터 컨트롤러(224)는 소거 블록들의 재사용을 자유롭게 하기 위해 불필요한 데이터 수집을 관리한다. 다른 실시예에서, 마스터 컨트롤러(224)는 웨어 레벨링을 관리한다. 다른 실시예에서, 마스터 컨트롤러(224)는 데이터 저장 장치/고체 상태 저장 장치(102)가 다수의 논리 다바이스들로 분할되는 것을 허용하며 분할 기반 매체 암호화를 허용한다. 또 다른 실시예에서, 마스터 컨트롤러(224)는 고급, 멀티 비트 ECC 정정을 가지는 고체 상태 저장 컨트롤러(104)를 제공한다. 본 기술분야의 기술자는 저장 컨트롤러(202)에 있거나, 보다 구체적으로는 고체 상태 저장 장치(102)에 있는 마스터 컨트롤러(224)의 다른 특징들과 기능들을 인지할 것이다.In another embodiment, the master controller 224 periodically verifies the FPGA code and / or controller software, identifies and / or verifies the FPGA code during operation (reset), checks the controller software during power on It provides a reset request, provides a reset request due to watchdog timeout, and works with an independently integrated management controller to provide other environmental measurements and settings of voltage, current, power, temperature, and threshold interrupts. In another embodiment, the master controller 224 manages the collection of unnecessary data to free up reuse of erase blocks. In another embodiment, the master controller 224 manages wear leveling. In another embodiment, the master controller 224 allows the data storage / solid state storage device 102 to be partitioned into multiple logical devices and allows partition-based media encryption. In yet another embodiment, the master controller 224 provides a solid state storage controller 104 with advanced, multi-bit ECC correction. Those skilled in the art will recognize other features and functions of the master controller 224 in the storage controller 202, or more specifically, in the solid state storage device 102.

일 실시예에서, 고체 상태 저장 장치 컨트롤러(202)는 동적 랜덤 메모리 어레이(230) 및/또는 정적 랜덤 메모리 어레이(232)를 제어하는 메모리 컨트롤러(228)를 포함한다. 위에 언급된 바와 같이, 메모리 컨트롤러(228)는 마스터 컨트롤러(224)와 독립적이거나 이에 통합될 수 있다. 메모리 컨트롤러(228)는 일반적으로 DRAM(동적 랜덤 메모리 어레이(230)) 및 SRAM(정적 랜덤 메모리 어레이(232))와 같은 몇몇 타입의 휘발성 메모리를 제어한다. 다른 예에서, 메모리 컨트롤러(228)는 또한 전기적으로 소거 가능하며 프로그램 가능한 판독 전용 메모리("EEPROM") 등과 같은 다른 메모리 타입들을 제어한다. 다른 실시예들에서, 메모리 컨트롤러(228)는 두 개 이상의 메모리 타입을 제어하며 메모리 컨트롤러(228)는 둘 이상의 컨트롤러를 포함할 수 있다. 일반적으로, 메모리 컨트롤러(228)는 SRAM(232)을 보완하기 위해 실행 가능하며 DRAM(230)만큼 많은 SRAM(232)을 제어한다.In one embodiment, the solid state storage controller 202 includes a memory controller 228 that controls a dynamic random memory array 230 and / or a static random memory array 232. As noted above, the memory controller 228 may be independent of, or integrated with, the master controller 224. Memory controller 228 generally controls some type of volatile memory, such as DRAM (dynamic random memory array 230) and SRAM (static random memory array 232). In another example, the memory controller 228 also controls other memory types such as electrically erasable programmable read only memory ("EEPROM") and the like. In other embodiments, the memory controller 228 may control more than one memory type and the memory controller 228 may include more than one controller. In general, the memory controller 228 is executable to complement the SRAM 232 and controls as many SRAMs 232 as the DRAM 230.

일 실시예에서, 객체 인덱스는 메모리(230, 232)에 저장되며 그런 다음에 고체 상태 저장장치(110n) 또는 다른 비휘발성 메모리의 채널로 주기적으로 오프 로딩된다. 본 기술분야의 기술자는 메모리 컨트롤러(228), 동적 메모리 어레이(230), 및 정적 메모리 어레이(232)의 다른 사용과 형태를 인지할 것이다.In one embodiment, the object index is stored in memory 230, 232 and then periodically offloaded to the channel of solid state storage device 110n or other non-volatile memory. Those skilled in the art will recognize other uses and forms of the memory controller 228, the dynamic memory array 230, and the static memory array 232.

일 실시예에서, 고체 상태 저장 장치 컨트롤러(202)는 저장 장치/고체 상태 저장 장치(102)와 하나 이상의 외부 메모리 컨트롤러들(250) 및 관련된 외부 메모리 어레이들(252)와 CPU들(248) 사이의 DMA 작동을 제어하는 DMA 컨트롤러(226)를 포함한다. 외부 메모리 컨트롤러들(250)과 외부 메모리 어레이들(252)은 이들이 저장 장치/고체 상태 저장 장치(102)의 외부에 있기 때문에 요청된 외부기기인 것에 주목하라. 더구나 DMA 컨트롤러(226)는 또한 NIC(244)와 관련된 RDMA 컨트롤러(246)를 통해 요청 장치들로 RDMA 작동을 제어할 수 있다.In one embodiment, solid state storage controller 202 is coupled between storage / solid state storage device 102 and one or more external memory controllers 250 and associated external memory arrays 252 and CPUs 248 And a DMA controller 226 for controlling the DMA operation of the DMA. Note that external memory controllers 250 and external memory arrays 252 are the requested external devices because they are external to storage / solid state storage device 102. Furthermore, the DMA controller 226 may also control RDMA operation with the requesting devices via the RDMA controller 246 associated with the NIC 244.

일 실시예에서, 고체 상태 저장 장치 컨트롤러(202)는 관리 버스(236)에 연결되는 관리 컨트롤러(234)를 포함한다. 일반적으로 관리 컨트롤러(234)는 저장 장치/고체 상태 저장 장치(102)의 환경 측정 및 상태를 관리한다. 관리 컨트롤러(234)는 관리 버스(236)를 통해 장치 온도, 팬 속도, 전력 공급부 셋팅 등을 모니터링할 수 있다. 관리 컨트롤러(234)는 FPGA 코드와 컨트롤러 소프트웨어의 저장을 위한 소거 가능하며 프로그램 가능한 판독 전용 메모리("EEPROM")의 판독 및 프로그래밍을 제공할 수 있다. 일반적으로 관리 버스(236)는 저장 장치/고체 상태 저장 장치(102) 내부에 있는 다양한 소자들에 연결된다. 관리 컨트롤러(234)는 로컬 버스(206)를 통해 경보, 인터럽트, 등을 통신할 수 있으며 시스템 버스(240) 또는 다른 버스에 대한 개별적인 연결부를 포함할 수 있다. 일 실시예에서 관리 버스(236)는 Inter-Integrated Circuit("I2C") 버스이다. 본 기술분야의 기술자는 관리 버스(236)에 의해 저장 장치/고체 상태 저장 장치(102)의 소자들에 연결되는 관리 컨트롤러(234)의 다른 관련된 기능과 사용을 인지할 것이다.In one embodiment, the solid state storage controller 202 includes a management controller 234 coupled to the management bus 236. In general, the management controller 234 manages environmental measurements and status of the storage / solid state storage device 102. The management controller 234 may monitor the device temperature, fan speed, power supply settings, and the like via the management bus 236. The management controller 234 can provide readout and programming of an erasable programmable read-only memory ("EEPROM") for storage of FPGA code and controller software. In general, the management bus 236 is coupled to various devices within the storage / solid state storage device 102. The management controller 234 may communicate alerts, interrupts, etc. via the local bus 206 and may include separate connections to the system bus 240 or other buses. In one embodiment, the management bus 236 is an Inter-Integrated Circuit ("I2C") bus. Those skilled in the art will recognize other related functions and uses of the management controller 234 connected to the elements of the storage / solid state storage device 102 by the management bus 236. [

일 실시예에서, 고체 상태 저장 장치 컨트롤러(202)는 특정 어플리케이션을 위해 주문 제작될 수 있는 잡다한 로직(242)을 포함한다. 일반적으로 고체 상태 장치 컨트롤러(202) 또는 마스터 컨트롤러(224)가 FPGA 또는 다른 구성 가능한 컨트롤러를 사용하여 구성되는 경우에, 주문형 로직은 특정 어플리케이션, 주문자 요건, 저장 요건 등에 근거하여 포함될 수 있다.In one embodiment, the solid state storage controller 202 includes miscellaneous logic 242 that can be customized for a particular application. In general, in the case where the solid state device controller 202 or the master controller 224 is configured using an FPGA or other configurable controller, the on-demand logic may be included based on specific applications, ordering requirements, storage requirements, and the like.

데이터 파이프라인Data pipeline

도 3은 본 발명에 따른 고체 상태 저장 장치(102)에 기록 데이터 파이프라인(106)과 판독 데이터 파이프라인(108)을 가지는 고체 상태 저장 컨트롤러(104)의 일 실시예(300)를 도시하는 개략적인 블록도이다. 실시예(300)는 도 2의 고체 상태 저장 장치 컨트롤러(202)와 관련하여 설명된 것들과 대체로 유사한 데이터 버스(204), 로컬 버스(206), 및 버퍼 제어장치(208)를 포함한다. 기록 데이터 파이프라인(106)은 패킷화장치(302) 및 에러 정정 코드("ECC") 발생기(304)를 포함한다. 다른 실시예들에서, 기록 데이터 파이프라인(106)은 입력 버퍼(306), 기록 동기화 버퍼(308), 기록 프로그램 모듈(310), 압축 모듈(312), 암호화 모듈(314), (판독 데이터 파이프라인(108) 내에 일부분을 가지는) 불필요 데이터 수집기 바이패스(316), 매체 암호화 모듈(318), 및 기록 버퍼(320)를 포함한다. 판독 데이터 파이프라인(108)은 판독 동기화 버퍼(328), ECC 정정 모듈(322), 역패킷화장치(324), 정렬 모듈(326), 및 출력 버퍼(330)를 포함한다. 다른 실시예들에서, 판독 데이터 파이프라인(108)은 매체 복호화 모듈(332), 불필요 데이터 수집기 바이패스(316)의 일부분, 복호화 모듈(334), 압축 해제 모듈(336), 및 판독 프로그램 모듈(338)을 포함할 수 있다. 고체 상태 저장 컨트롤러(104)는 또한 제어 및 상태 레지스터들(340) 및 제어 큐들(342), 뱅크 인터리브 컨트롤러(344), 동기화 버퍼(346), 저장 버스 컨트롤러(348), 및 멀티플렉서("MUX")(350)를 포함할 수 있다. 고체 상태 컨트롤러(104)와 관련된 기록 데이터 파이프라인(106) 및 판독 데이터 파이프라인(108)의 소자들이 아래에 설명된다. 다른 실시예들에서, 동기 고체 상태 매체(110)가 사용될 수 있으며 동기화 버퍼들(308, 328)이 제거될 수 있다.3 is a schematic diagram illustrating one embodiment 300 of a solid state storage controller 104 having a write data pipeline 106 and a read data pipeline 108 in a solid state storage device 102 in accordance with the present invention. Respectively. The embodiment 300 includes a data bus 204, a local bus 206, and a buffer control device 208, which are substantially similar to those described in connection with the solid state storage controller 202 of FIG. The write data pipeline 106 includes a packetizer 302 and an error correction code ("ECC") generator 304. In other embodiments, the write data pipeline 106 includes an input buffer 306, a write synchronization buffer 308, a write program module 310, a compression module 312, an encryption module 314, Unneeded data collector bypass 316, which has a portion within line 108, a media encryption module 318, and a write buffer 320. The read data pipeline 108 includes a read synchronization buffer 328, an ECC correction module 322, a de-packetizer 324, an alignment module 326, and an output buffer 330. In other embodiments, the read data pipeline 108 includes a media decryption module 332, a portion of the unwanted data collector bypass 316, a decryption module 334, an decompression module 336, 338 < / RTI > The solid state storage controller 104 also includes control and status registers 340 and control cues 342, a bank interleave controller 344, a synchronization buffer 346, a storage bus controller 348, and a multiplexer ) ≪ / RTI > The elements of the write data pipeline 106 and the read data pipeline 108 associated with the solid state controller 104 are described below. In other embodiments, synchronous solid state media 110 may be used and synchronization buffers 308 and 328 may be eliminated.

기록 데이터 파이프라인Historical data pipeline

기록 데이터 파이프라인(106)은 다른 기록 데이터 파이프라인(160) 스테이지를 통해 직접 또는 간접적으로 고체 상태 저장장치에 기록되는 데이터 또는 메타데이터 세그먼트를 수신하며, 고체 상태 저장 매체(110)를 위한 크기로 만들어진 하나 이상의 패킷들을 생성하는 패킷화장치(302)를 포함한다. 데이터 또는 메타데이터 세그먼트는 일반적으로 객체와 같은 데이터 구조의 일부분이지만, 또한 전체 데이터 구조를 포함할 수 있다. 다른 실시예에서, 데이터 세그먼트는 데이터의 블록의 일부분이지만, 또한 데이터의 전체 블록을 포함할 수 있다. 일반적으로, 데이터 구조와 같은 하나의 세트의 데이터는 클라이언트(114)와 같은 컴퓨터, 또는 다른 컴퓨터 또는 장치로부터 수신되며 고체 상태 저장 장치(102)로 스트리밍된 데이터 세그먼트들로 고체 상태 저장 장치(102)에 전송된다. 데이터 세그먼트는 또한 데이터 파슬과 같은 다른 이름으로 알려질 수 있지만, 여기에 언급된 바와 같이 모든 또는 일부분의 데이터 구조 또는 데이터 블록을 포함한다.The write data pipeline 106 receives data or metadata segments that are written to the solid state storage device either directly or indirectly through another write data pipeline 160 stage and is sized for the solid state storage medium 110 And a packetizer 302 for generating one or more packets that are made. The data or metadata segments are typically part of a data structure, such as an object, but may also include the entire data structure. In another embodiment, the data segment is a portion of a block of data, but may also include an entire block of data. In general, one set of data, such as a data structure, is received from a computer, such as client 114, or other computer or device, and communicated to solid state storage device 102 with data segments streamed to solid state storage device 102. [ Lt; / RTI > A data segment may also be known by another name, such as a data parcel, but includes all or part of a data structure or block of data as mentioned herein.

각각의 데이터 구조는 하나 이상의 패킷들로 저장된다. 각각의 데이터 구조는 하나 이상의 컨테이너 패킷들을 가질 수 있다. 각각의 패킷은 헤더를 가진다. 헤더는 헤더 타입 필드를 포함할 수 있다. 타입 필드들은 데이터, 속성, 메타데이터, 데이터 세그먼트 구분자들(멀티 패킷), 데이터 구조들, 데이터 연결들 등을 포함할 수 있다. 헤더는 또한 패킷에 포함되는 데이터의 바이트의 수와 같은 패킷의 크기에 관한 정보를 포함할 수 있다. 패킷의 길이는 패킷 타입에 의해 설정될 수 있다. 헤더는 데이터 구조에 대한 패킷의 관계를 설정한 정보를 포함할 수 있다. 일 예는 데이터 구조 내에서 데이터 세그먼트의 위치를 식별하기 위해 데이터 패킷 헤더에서 오프셋의 사용일 수 있다. 본 기술분야의 기술자는 패킷화장치(302)에 의해 데이터에 추가된 헤더에 포함될 수 있는 다른 정보 및 데이터 패킷에 추가될 수 있는 다른 정보를 인지할 것이다.Each data structure is stored in one or more packets. Each data structure may have one or more container packets. Each packet has a header. The header may include a header type field. The type fields may include data, attributes, metadata, data segment delimiters (multi-packet), data structures, data connections, and the like. The header may also include information about the size of the packet, such as the number of bytes of data contained in the packet. The length of the packet can be set by the packet type. The header may contain information defining the relationship of the packet to the data structure. An example may be the use of an offset in the data packet header to identify the location of a data segment within the data structure. Those skilled in the art will recognize other information that may be included in the header added to the data by the packetizer 302 and other information that may be added to the data packet.

각각의 패킷은 데이터 또는 메타데이터 세그먼트로부터 나온 헤더와 어쩌면 데이터를 포함한다. 각각의 패킷의 헤더는 패킷이 속하는 데이터 구조에 패킷을 관련시키는 적절한 정보를 포함한다. 예를 들면, 헤더는 객체 식별자 또는 다른 데이터 구조 식별자 및 이로부터 데이터 패킷이 형성된 데이터 세그먼트, 객체, 데이터 구조 또는 데이터 블록을 가리키는 오프셋을 포함할 수 있다. 헤더는 또한 패킷을 저장하기 위해 저장 버스 컨트롤러(348)에 의해 사용되는 논리 어드레스를 포함할 수 있다. 헤더는 또한 패킷에 포함되는 바이트의 수와 같은 패킷의 크기에 관한 정보를 포함할 수 있다. 헤더는 또한 데이터 세그먼트가 데이터 세그먼트 또는 데이터 구조를 재구축할 때 데이터 구조 내에서 다른 패킷들에 대해 속하는 경우에 식별되는 시퀀스 수를 포함할 수 있다. 헤더는 헤더 타입 필드를 포함할 수 있다. 타입 필드들은 데이터, 데이터 구조 속성들, 메타데이터, 데이터 세그먼트 구분자들(멀티 패킷), 데이터 구조 타입들, 데이터 구조 연결들 등을 포함할 수 있다. 본 기술분야의 기술자는 패킷화장치(302)에 의해 데이터 또는 메타데이터에 추가된 헤더에 포함될 수 있는 다른 정보 및 패킷에 첨가될 수 있는 다른 정보를 인지할 것이다.Each packet contains a header or possibly data from the data or metadata segments. The header of each packet contains appropriate information relating the packet to the data structure to which the packet belongs. For example, the header may include an object identifier or other data structure identifier and an offset from the data segment, object, data structure or data block from which the data packet is formed. The header may also include a logical address used by the storage bus controller 348 to store the packet. The header may also include information about the size of the packet, such as the number of bytes contained in the packet. The header may also include the number of sequences identified when the data segment belongs to other packets within the data structure when reconstructing the data segment or data structure. The header may include a header type field. The type fields may include data, data structure attributes, metadata, data segment delimiters (multi-packet), data structure types, data structure links, and so on. Those skilled in the art will recognize other information that may be included in the header added to the data or metadata by the packetizer 302 and other information that may be added to the packet.

기록 데이터 파이프라인(106)은 패킷화장치(302)로부터 수신된 하나 이상의 패킷에 대한 하나 이상의 에러 정정 코드("ECC")를 발생시키는 ECC 발생기(304)를 포함한다. ECC 발생기(304)는 일반적으로 하나 이상의 데이터 패킷들로 저장되는 ECC 체크 비트들을 발생시키기 위해 에러 정정 알고리듬을 사용한다. ECC 코드들과 관련된 하나 이상의 데이터 패킷들과 함께 ECC 발생기(304)에 의해 발생된 ECC 코드들은 ECC 청크를 포함한다. 하나 이상의 데이터 패킷들로 저장된 ECC 데이터는 전송 및 저장을 통해 데이터로 삽입된 에러를 검출하며 정정하는데 사용된다. 일 실시예에서, 패킷들은 길이 N의 인코딩되지 않은 블록들로 ECC 발생기(304)에 스트리밍된다. 일정한 행동 패턴의 길이 S가 계산되며, 추가되며 길이 N+S의 인코딩된 블록으로 출력된다. N과 S의 값은 특정한 성능, 효율, 및 견고성 측정 기준을 달성하기 위해 선택되는 ECC 알고리듬의 특징에 의존한다. 일 실시예에서, ECC 블록들과 패킷들 사이에 고정된 관계가 없으며; 패킷은 둘 이상의 ECC 블록을 포함할 수 있으며; ECC 블록은 둘 이상의 패킷을 포함할 수 있으며; 제1 패킷은 ECC 블록 내의 어느 곳에서 끝날 수 있으며 제2 패킷은 동일한 ECC 블록 내에서 제1 패킷의 종료 후에 시작될 수 있다. 일 실시예에서, ECC 알고리듬은 동적으로 변경되지 않는다. 일 실시예에서, 데이터 패킷들로 저장된 ECC 데이터는 셋 이상의 비트에서 에러를 정정할 정도로 충분히 견고하다.The write data pipeline 106 includes an ECC generator 304 that generates one or more error correction codes ("ECC") for one or more packets received from the packetizer 302. ECC generator 304 typically uses an error correction algorithm to generate ECC check bits that are stored in one or more data packets. The ECC codes generated by ECC generator 304 with one or more data packets associated with ECC codes include an ECC chunk. ECC data stored in one or more data packets is used to detect and correct errors inserted into the data through transmission and storage. In one embodiment, the packets are streamed to the ECC generator 304 with unencoded blocks of length N. [ The length S of a certain behavioral pattern is calculated, added and output as an encoded block of length N + S. The values of N and S depend on the characteristics of the ECC algorithm selected to achieve the specific performance, efficiency, and robustness metrics. In one embodiment, there is no fixed relationship between ECC blocks and packets; A packet may contain more than one ECC block; An ECC block may include more than one packet; The first packet may end anywhere within the ECC block and the second packet may start after the end of the first packet in the same ECC block. In one embodiment, the ECC algorithm is not dynamically changed. In one embodiment, the ECC data stored as data packets is robust enough to correct errors in more than two bits.

유리하게도, 둘 이상의 비트 정정 또는 심지어 더블 비트 정정을 허용하는 견고한 ECC 알고리듬을 사용하는 것은 고체 상태 저장 매체들(110)의 수명이 연장되는 것을 허용한다. 예를 들면, 만약 플래시 메모리가 고체 상태 저장 매체들(110)에서 저장 매체로 사용된다면, 플래시 메모리는 소거 사이클당 에러 없이 대략 100,000번 기록될 수 있다. 이런 사용 제한은 견고한 ECC 알고리듬을 사용하여 연장될 수 있다. ECC 발생기(304)와 고체 상태 저장 장치(102)에 탑재된 상응하는 ECC 정정 모듈(322)을 가지면, 고체 상태 저장 장치(102)는 에러를 내부적으로 정정할 수 있으며 만약 싱글 비트 정정과 같이 견고하지 않은 ECC 알고리듬이 사용된다면, 보다 긴 사용 수명을 가진다. 그러나, 다른 실시예들에서 ECC 발생기(304)는 견고하지 않은 알고리듬을 사용할 수 있으며 싱글 비트 또는 더블 정정할 수 있다. 다른 실시예에서, 고체 상태 저장 장치(110)는 용량을 증가시키기 위해 멀티 레벨 셀("MLC") 플래시와 같은 불확실한 저장을 포함할 수 있으며, 이런 저장은 더 견고한 ECC 알고리듬 없이 충분히 신뢰할 수 없다.Advantageously, using a robust ECC algorithm that allows for more than one bit correction or even double bit correction allows the life of the solid state storage media 110 to be extended. For example, if the flash memory is used as a storage medium in the solid state storage media 110, the flash memory can be written about 100,000 times without errors per erase cycle. This use limitation can be extended using a robust ECC algorithm. Having ECC generator 304 and corresponding ECC correction module 322 mounted on solid state storage device 102 allows solid state storage device 102 to internally correct the error and if it is robust If an unused ECC algorithm is used, it has a longer service life. However, in other embodiments, the ECC generator 304 may use a non-robust algorithm and may be single bit or double corrected. In another embodiment, solid state storage device 110 may include uncertain storage such as multi-level cell ("MLC") flash to increase capacity, and such storage is not reliable enough without a more robust ECC algorithm.

일 실시예에서, 기록 파이프라인(106)는 고체 상태 저장 매체(110)에 기록되는 데이터 세그먼트를 수신하며 패킷화장치(302)와 같은 기록 데이터 파이프라인(106)의 다음 스테이지(또는 더 복합적인 기록 데이터 파이프라인(106)을 위한 다른 스테이지)는 다음 데이터 세그먼트를 프로세싱할 준비를 할 때까지 유입된 데이터 세그먼트들을 저장하는 입력 버퍼(306)를 포함한다. 입력 버퍼(306)는 일반적으로 적절한 크기의 데이터 버퍼를 사용하여 기록 데이터 파이프라인(106)에 의해 수신되며 프로세싱되는 속도 데이터 세그먼트들 사이의 불일치를 허용한다. 입력 버퍼(306)는 또한 데이터 버스(204)의 작동의 효율을 개선하기 위해 데이터 버스(204)가 기록 데이터 파이프라인(106)에 의해 지속될 수 있는 것보다 더 큰 속도로 기록 데이터 파이프라인(106)에 데이터를 전송하는 것을 허용한다. 일반적으로 기록 데이터 파이프라인(106)이 입력 버퍼(306)를 포함하지 않을 때, 버퍼링 기능은 예를 들면 리모트 직접 메모리 접속("RDMA")을 사용할 때 네트워크 인터페이스 카드("NIC") 또는 다른 장치 내에서와 같은 클라이언트(114)에서 고체 상태 저장 장치(102)에 있지만 기록 데이터 파이프라인(106)의 외부와 같은 다른 곳에서 실행된다.In one embodiment, the recording pipeline 106 receives a data segment that is written to the solid state storage medium 110 and provides the next stage (or more complex) of the recording data pipeline 106, (Another stage for the write data pipeline 106) includes an input buffer 306 that stores incoming data segments until it is ready to process the next data segment. The input buffer 306 generally allows for discrepancies between speed data segments that are received and processed by the write data pipeline 106 using an appropriately sized data buffer. The input buffer 306 is also coupled to the write data pipeline 106 at a greater rate than the data bus 204 may sustain by the write data pipeline 106 to improve the efficiency of operation of the data bus 204. [ To transmit the data. In general, when the write data pipeline 106 does not include the input buffer 306, the buffering function may be used to provide a network interface card ("NIC") or other device In solid state storage device 102 at client 114, such as within a storage device 102, but elsewhere, such as outside the record data pipeline 106. [

다른 실시예에서, 기록 데이터 파이프라인(106)은 또한 고체 상태 저장 매체(110)에 패킷들을 기록하기 전에 ECC 발생기(304)로부터 수신된 패킷들을 버퍼링하는 기록 동기화 버퍼(308)를 포함한다. 기록 동기화 버퍼(308)는 로컬 클럭 도메인과 고체 상태 저장 클럭 도메인 사이의 경계에 위치하며 클럭 도메인 차이를 평가하기 위해 버퍼링을 제공한다. 다른 실시예들에서, 동기 고체 상태 저장 매체(110)는 사용될 수 있으며 동기화 버퍼들(308, 328)은 제거될 수 있다.In another embodiment, the write data pipeline 106 also includes a write synchronization buffer 308 that buffers the packets received from the ECC generator 304 before writing the packets to the solid state storage medium 110. The write synchronization buffer 308 is located at the boundary between the local clock domain and the solid state storage clock domain and provides buffering to evaluate the clock domain difference. In other embodiments, synchronous solid state storage medium 110 may be used and synchronization buffers 308 and 328 may be eliminated.

일 실시예에서, 기록 데이터 파이프라인(106)은 또한 직접적으로 또는 간접적으로 패킷화장치(302)로부터 하나 이상의 패킷들을 수신하며 ECC 발생기(304)에 패킷들을 전송하기 전에 고체 상태 저장 장치(102)에 유일한 암호화 키를 사용하여 하나 이상의 패킷들을 암호화하는 매체 암호화 모듈(318)을 포함한다. 일반적으로, 헤더들을 포함하는 전체 패킷은 암호화된다. 다른 실시예에서, 헤더들은 암호화되지 않는다. 본 명세서에서, 암호화 키는 고체 상태 저장 컨트롤러(104)로부터 외부적으로 관리되는 비밀 암호화 키를 의미하는 것으로 이해된다.In one embodiment, the write data pipeline 106 also receives one or more packets from the packetizer 302, either directly or indirectly, and sends the packets to the solid state storage 102 before sending them to the ECC generator 304. [ And a media encryption module 318 that encrypts one or more packets using a unique encryption key. In general, the entire packet including the headers is encrypted. In another embodiment, the headers are not encrypted. Herein, the encryption key is understood to mean a secret encryption key that is externally managed from the solid state storage controller 104.

매체 암호화 모듈(318)과 상응하는 매체 복호화 모듈(332)은 고체 상태 저장 매체(110)에 저장되는 데이터에 대한 일정 레벨의 안전성을 제공한다. 예를 들면, 데이터가 매체 암호화 모듈(318)로 암호화되는 경우에, 만약 고체 상태 매체(110)가 상이한 고체 상태 저장 컨트롤러(104), 고체 상태 저장 장치(102), 또는 서버에 연결된다면, 고체 상태 저장 매체(110)의 내용은 일반적으로 상당한 노력 없이 고체 상태 저장 매체(110)에 데이터의 기록 중에 사용되는 동일한 암호화 키를 사용하지 않고 판독되지 않을 수 있다.The media encryption module 318 and the corresponding media decryption module 332 provide a level of security for the data stored in the solid state storage medium 110. If the solid state media 110 is connected to a different solid state storage controller 104, solid state storage device 102, or server, for example, if the data is encrypted with the media encryption module 318, The contents of the state storage medium 110 may not be read without using the same encryption key used during writing of data to the solid state storage medium 110, generally without significant effort.

일반적인 실시예에서, 고체 상태 저장 장치(102)는 비휘발성 저장장치에 암호화 키를 저장하지 않으며 암호화 키에 대한 외부 접속을 허용하지 않는다. 암호화 키는 초기화 중에 고체 상태 저장 컨트롤러(104)에 제공된다. 고체 상태 저장 장치(102)는 암호화 키와 함께 사용되는 비밀이 아닌 암호 임시값을 사용하며 저장할 수 있다. 상이한 임시값이 패킷마다 저장될 수 있다. 데이터 세그먼트들은 암호화 알고리듬에 의한 보호를 개선하기 위해 특정한 임시값들로 다수의 패킷들 사이에서 분할될 수 있다.In a typical embodiment, the solid state storage device 102 does not store the encryption key in the non-volatile storage and does not allow external access to the encryption key. The encryption key is provided to the solid state storage controller 104 during initialization. The solid state storage device 102 may use and store non-secret cryptographic temporary values used with the encryption key. Different temporary values may be stored for each packet. The data segments may be partitioned between multiple packets with specific temporal values to improve protection by the encryption algorithm.

암호화 키는 클라이언트(114), 서버, 키 관리자, 또는 고체 상태 저장 컨트롤러(104)에 의해 사용되는 암호화 키를 관리하는 다른 장치로부터 수신될 수 있다. 다른 실시예에서, 고체 상태 저장 매체(110)는 둘 이상의 파티션들을 가질 수 있으며 고체 상태 저장 컨트롤러(104)는 각각이 고체 상태 저장 매체(110) 내에 단일 파티션에 대해 작동하는, 마치 둘 이상이 고체 상태 저장 컨트롤러들(104)이었던 것처럼 거동한다. 이런 실시예에서, 특정한 매체 암호화 키는 각각의 파티션에 사용될 수 있다.The encryption key may be received from a client 114, a server, a key manager, or other device that manages the encryption key used by the solid state storage controller 104. In another embodiment, the solid state storage medium 110 may have more than two partitions and the solid state storage controller 104 may be a solid state storage medium, such as a solid state storage medium, Behave as if they were state storage controllers 104. In this embodiment, a particular media encryption key may be used for each partition.

다른 실시예에서, 기록 데이터 파이프라인(106)은 또한 패킷화장치(302)에 데이터 세그먼트를 전송하기 전에, 직접적으로 또는 간접적으로 입력 버퍼(306)로부터 수신된 데이터 또는 메타데이터 세그먼트를 암호화하는 암호화 모듈(314)을 포함하며, 데이터 세그먼트는 데이터 세그먼트와 함께 수신된 암호화 키를 사용하여 암호화된다. 데이터를 암호화하기 위해 암호화 모듈(314)에 의해 사용되는 암호화 키들은 고체 상태 저장 장치(102) 내에 저장되는 모든 데이터에 공용이 아닐 수 있지만 각각의 데이터 구조에 근거하여 다를 수 있으며 아래에 설명되는 바와 같이 수신된 데이터 세그먼트들과 함께 수신된다. 예를 들면, 암호화 모듈(314)에 의해 암호화되는 데이터 세그먼트에 대한 암호화 키는 데이터 세그먼트로 수신될 수 있거나 데이터 세그먼트가 속하는 데이터 구조를 기록하는 명령의 일부분으로 수신될 수 있다. 고체 상태 저장 장치(102)는 암호화 키와 함께 사용되는 각각의 데이터 구조 패킷에 비밀이 아닌 암호 임시값을 사용할 수 있으며 저장할 수 있다. 상이한 임시값이 패킷마다 저장될 수 있다. 데이터 세그먼트들은 암호화 알고리듬에 의한 보호를 개선하기 위해 특정한 임시값들로 다수의 패킷들 사이에서 분할될 수 있다.In other embodiments, the write data pipeline 106 may also be configured to encrypt data or metadata segments received from the input buffer 306, either directly or indirectly, prior to transferring the data segments to the packetizer 302. [ Module 314, and the data segment is encrypted using the received encryption key along with the data segment. The encryption keys used by the encryption module 314 to encrypt the data may not be common to all data stored in the solid state storage device 102, but may be different based on their respective data structures, Together with received data segments. For example, an encryption key for a data segment that is encrypted by the encryption module 314 may be received in the data segment, or may be received as part of an instruction to record the data structure to which the data segment belongs. The solid state storage device 102 may use and store non-secret cryptographic temporary values in each data structure packet used with the cryptographic key. Different temporary values may be stored for each packet. The data segments may be partitioned between multiple packets with specific temporal values to improve protection by the encryption algorithm.

암호화 키는 클라이언트(114), 다른 컴퓨터, 키 관리자, 또는 데이터 세그먼트를 암호화하는데 사용되는 암호화 키를 유지하는 다른 장치로부터 수신될 수 있다. 일 실시예에서, 암호화 키들은 고체 상태 저장 장치(102), 클라이언트(114), 컴퓨터, 또는 개인 및 공공 키들을 안전하게 전송하며 보호하기 위해 산업 표준 방법들을 실행하는 성능을 가지는 다른 외부 에이전트 중의 하나로부터 고체 상태 저장 컨트롤러(104)에 전송된다.The encryption key may be received from the client 114, another computer, a key manager, or other device that maintains an encryption key used to encrypt the data segment. In one embodiment, the encryption keys are stored in the secure storage 102, the client 114, the computer, or one of the other external agents having the capability to execute industry standard methods to securely transmit and protect private and public keys And is transferred to the solid state storage controller 104.

일 실시예에서, 암호화 모듈(314)은 패킷과 함께 수신된 제1 암호화 키로 제1 패킷을 암호화하며 제2 패킷과 함께 수신된 제2 암호화 키로 제2 패킷을 암호화한다. 다른 실시예에서, 암호화 모듈(314)은 패킷과 함께 수신된 제1 암호화 키로 제1 패킷을 암호화하며 암호화 없이 다음 스테이지로 제2 데이터 패킷을 통과시킨다. 유리하게도, 고체 상태 저장 장치(102)의 기록 데이터 파이프라인(106)에 포함되는 암호화 모듈(314)은 싱글 파일 시스템 또는 다른 외부 시스템 없이 데이터 구조마다 또는 세그먼트마다 데이터 암호화가 상응하는 데이터 구조들 또는 데이터 세그먼트들을 저장하는데 사용되는 상이한 암호화 키들의 트랙을 유지하는 것을 허용한다. 각각의 요청 장치(155) 또는 관련된 키 관리자는 요청 장치(155)에 의해 전송된 데이터 구조들 또는 데이터 세그먼트들만을 암호화하는데 사용되는 암호화 키들을 독립적으로 관리한다.In one embodiment, the encryption module 314 encrypts the first packet with the first encryption key received with the packet and encrypts the second packet with the second encryption key received with the second packet. In another embodiment, the encryption module 314 encrypts the first packet with the first encryption key received with the packet and passes the second data packet to the next stage without encryption. Advantageously, the encryption module 314, included in the write data pipeline 106 of the solid state storage device 102, is capable of encrypting data structures, either per data structure or per segment, without a single file system or other external system, Allowing to keep track of different encryption keys used to store data segments. Each requesting device 155 or an associated key manager independently manages the encryption keys used to encrypt only the data structures or data segments sent by the requesting device 155. [

일 실시예에서, 암호화 모듈(314)은 고체 상태 저장 장치(102)에 유일한 암호화 키를 사용하여 하나 이상의 패킷들을 암호화할 수 있다. 암호화 모듈(314)은 독립적으로, 또는 위에 설명된 암호화에 더하여 이런 매체 암호화를 실행할 수 있다. 일반적으로, 헤더들을 포함하는 전체 패킷이 암호화된다. 다른 실시예에서, 헤더들은 암호화되지 않는다. 암호화 모듈(314)에 의한 매체 암호화는 고체 상태 저장 매체(110)에 저장되는 데이터에 대한 일정 레벨의 안전성을 제공한다. 예를 들면, 데이터가 매체 특정 고체 상태 저장 장치(102)에 유일한 암호화로 암호화되는 경우에, 만역 고체 상태 저장 매체(110)가 상이한 고체 상태 저장 컨트롤러(104), 고체 상태 저장 장치(102), 또는 클라이언트(114)에 연결된다면, 고체 상태 저장 매체(110)의 내용은 일반적으로 상당한 노력 없이 고체 상태 저장 매체(110)에 데이터의 기록 중에 사용되는 동일한 암호화 키를 사용하지 않고 판독될 수 없다.In one embodiment, the encryption module 314 may encrypt one or more packets using a unique encryption key in the solid state storage device 102. The encryption module 314 may perform this media encryption independently or in addition to the encryption described above. Generally, the entire packet including the headers is encrypted. In another embodiment, the headers are not encrypted. Media encryption by the encryption module 314 provides a level of security for the data stored in the solid state storage medium 110. For example, when the data is encrypted with a unique encryption in the media specific solid state storage device 102, the local solid state storage medium 110 may be stored in different solid state storage controllers 104, solid state storage devices 102, The contents of the solid state storage medium 110 can not be read without using the same encryption key used during writing of data to the solid state storage medium 110, generally without significant effort.

다른 실시예에서, 기록 데이터 파이프라인(106)은 패킷화장치(302)에 데이터 세그먼트를 전송하기 전에 메타데이터 세그먼트를 위한 데이터를 압축하는 압축 모듈(312)을 포함한다. 압축 모듈(312)은 일반적으로 세그먼트의 저장 크기를 감소시키기 위해 본 기술분야의 기술자에게 알려진 압축 루틴을 사용하여 데이터 또는 메타데이터 세그먼트를 압축한다. 예를 들면, 만약 데이터 세그먼트가 일련의 512 제로들을 포함한다면, 압축 모듈(312)은 512 제로들을 512 제로들을 가리키는 코드 또는 토큰으로 대체할 수 있으며 여기서 코드는 512 제로들에 의해 차지된 공간보다 훨씬 더 콤팩트하다.In another embodiment, the write data pipeline 106 includes a compression module 312 that compresses data for a metadata segment before transferring the data segment to the packetizer device 302. The compression module 312 generally compresses data or metadata segments using compression routines known to those skilled in the art to reduce the storage size of the segments. For example, if the data segment includes a series of 512 zeros, the compression module 312 may replace the 512 zeros with a code or token indicating 512 zeros where the code is much larger than the space occupied by 512 zeros It is more compact.

일 실시예에서, 압축 모듈(312)은 제1 압축 루틴으로 제1 세그먼트를 압축하며 압축 없이 제2 세그먼트를 따라 통과한다. 다른 실시예에서, 압축 모듈(312)은 제1 압축 루틴으로 제1 세그먼트를 압축하며 제2 압축 루틴으로 제2 세그먼트를 압축한다. 고체 상태 저장 장치(102) 내에서 이런 유연성을 가지는 것은 유리하며 그 결과 클라이언트(114) 또는 고체 상태 저장 장치(102)에 데이터를 기록하는 다른 장치들은 압축 루틴을 각각 특정할 수 있거나 하나가 압축 루틴을 특정할 수 있는 사이에 다른 하나는 압축을 특정하지 않는다. 압축 루틴들의 선택은 또한 매 데이터 구조 타입 또는 데이터 구조 클래스에 근거하는 디폴트 세팅들에 따라 선택될 수 있다. 예를 들면, 특정 데이터 구조의 제1 데이터 구조는 디폴트 압축 루틴 세팅들을 오버라이드하는 것을 가능하게 할 수 있으며 동일한 데이터 구조 클래스 및 데이터 구조 타입의 제2 데이터 구조는 디폴트 압축 루틴을 사용할 수 있으며 동일한 데이터 구조 클래스 및 데이터 구조 타입의 제3 데이터 구조는 압축을 사용할 수 없다.In one embodiment, the compression module 312 compresses the first segment into a first compression routine and passes along the second segment without compression. In another embodiment, the compression module 312 compresses the first segment with a first compression routine and compresses the second segment with a second compression routine. It is advantageous to have such flexibility within solid state storage device 102 so that other devices that write data to client 114 or solid state storage device 102 may each specify a compression routine, While the other does not specify compression. The selection of compression routines may also be selected according to default settings based on each data structure type or data structure class. For example, a first data structure of a particular data structure may make it possible to override default compression routine settings, and a second data structure of the same data structure class and data structure type may use a default compression routine, The third data structure of the class and data structure type can not use compression.

일 실시예에서, 기록 데이터 파이프라인(106)은 불필요 데이터 수집 시스템에서 데이터 바이패스의 일부분으로 판독 데이터 파이프라인(108)으로부터 데이터 세그먼트들을 수신하는 불필요 데이터 수집기 바이패스(316)를 포함한다. 일반적으로 패킷은 삭제를 위해 마킹되거나 변경되며 변경된 데이터는 상이한 위치에 저장되기 때문에, 불필요 데이터 수집 시스템은 일반적으로 더 이상 유효하지 않은 패킷들을 마킹한다. 몇몇 점에서, 불필요 데이터 수집 시스템은 특정 섹션의 저장이 복구될 수 있는지를 결정한다. 이런 결정은 이용 가능한 저장 용량의 부족, 한계치에 도달한 유효하지 않은 것으로 마킹된 데이터의 퍼센티지, 유효한 데이터의 고려, 한계치에 도달한 이런 섹션의 저장에 대한 에러 검출률, 또는 데이터 분배에 근거한 성능을 개선하는 것 등에 기인할 수 있다. 수많은 요소들이 일정 섹션의 저장이 복구되는 때를 결정하기 위해 불필요 수집 알고리듬으로 고려될 수 있다.In one embodiment, the write data pipeline 106 includes an unneeded data collector bypass 316 that receives data segments from the read data pipeline 108 as part of the data bypass in the unwanted data collection system. Unnecessary data collection systems generally mark packets that are no longer valid because the packets are typically marked or changed for deletion and the changed data is stored in a different location. In some respects, the unwanted data collection system determines if storage of a particular section can be restored. Such a determination may include a lack of available storage capacity, a percentage of data marked as invalid that has reached the limit, a consideration of valid data, an error detection rate for storage of such a section that has reached a limit, And the like. A number of factors can be considered as unnecessary collection algorithms to determine when storage of a certain section is restored.

일단 일정 섹션의 저장이 복구를 위해 마킹되었다면, 이런 섹션에 있는 유효한 패킷들은 일반적으로 재배치되어야 한다. 불필요 데이터 수집기 바이패스(316)는 패킷들이 판독 데이터 파이프라인(108)으로 판독되며 그런 다음에 고체 상태 저장 컨트롤러(104)로부터 전송되지 않고 기록 데이터 파이프라인(106)에 직접 전송되는 것을 허용한다. 일 실시예에서, 불필요 데이터 수집기 바이패스(316)는 고체 상태 저장 장치(102) 내에서 작동하는 독립된 불필요 데이터 수집기 시스템의 일부분이다. 이는 고체 상태 저장 장치(102)가 데이터를 관리하는 것을 허용하며 그 결과 데이터는 성능, 데이터 신뢰성을 개선하며 고체 상태 저장 매체(110)의 임의의 하나의 위치 또는 영역의 남용과 이용 부족을 회피하며 고체 상태 저장 매체(110)의 사용 수명을 길어지게 하기 위해 고체 상태 저장 매체(110) 전체에 걸쳐 조직적으로 확산된다.Once the schedule section has been marked for recovery, valid packets in these sections should generally be relocated. Unnecessary data collector bypass 316 allows packets to be read into the read data pipeline 108 and then sent directly to the write data pipeline 106 without being sent from the solid state storage controller 104. In one embodiment, the unwanted data collector bypass 316 is part of an independent, unwanted data collector system that operates within the solid state storage device 102. This allows the solid state storage device 102 to manage data and the resulting data can improve performance, data reliability and avoid abuse and lack of use of any one location or area of the solid state storage medium 110 State storage medium 110 in order to increase the service life of the solid-state storage medium 110. [0050]

불필요 데이터 수집기 바이패스(316)는 클라이언트들(114) 또는 다른 장치들에 의해 기록된 다른 세그먼트들을 가지는 기록 데이터 파이프라인(106)으로 세그먼트들의 삽입을 조정한다. 도시된 실시예에서, 불필요 데이터 수집기 바이패스(316)는 기록 데이터 파이프라인(106)에 있는 패킷화장치(302)의 앞에 있으며 판독 데이터 파이프라인(108)에 있는 역패킷화장치(324)의 뒤에 있지만, 또한 판독 데이터 파이프라인(108)과 기록 데이터 파이프라인(106)에 있는 다른 곳에 위치할 수 있다. 불필요 데이터 수집기 바이패스(316)는 고체 상태 저장 매체(110) 내에서 저장의 효율을 개선하며 그에 의해 불필요 데이터 수집의 빈도를 감소시키기 위해 가상 페이지의 나머지를 채우는 기록 데이터 파이프라인(106)의 플러싱 중에 사용될 수 있다.Unnecessary data collector bypass 316 coordinates insertion of segments into a write data pipeline 106 having clients 114 or other segments written by other devices. In the illustrated embodiment, the unneeded data collector bypass 316 is located in front of the packetizer 302 in the write data pipeline 106 and in the read data pipeline 108, But may also be located elsewhere in the read data pipeline 108 and the write data pipeline 106. Unnecessary data collector bypass 316 is used to improve the efficiency of storage within solid state storage medium 110 and thereby reduce the frequency of unneeded data collection by flushing the write data pipeline 106 to fill the remainder of the virtual page. ≪ / RTI >

일 실시예에서, 기록 데이터 파이프라인(106)은 효율적인 기록 작동을 위해 데이터를 버퍼링하는 기록 버퍼(320)를 포함한다. 일반적으로, 기록 버퍼(320)는 고체 상태 저장 매체(110)에서 적어도 하나의 가상 페이지를 채우기 위해 패킷들에 대한 충분한 용량을 포함한다. 이는 기록 작동이 중단 없이 고체 상태 저장 매체(110)에 전체 페이지의 데이터를 전송하는 것을 허용한다. 동일한 용량이 되거나 고체 상태 저장 매체(110) 내의 저장 기록 버퍼보다 더 커지도록 기록 데이터 파이프라인(106)의 기록 버퍼(320)와 판독 데이터 파이프라인(108) 내의 버퍼들을 임의의 크기로 만듦으로써, 단일 기록 명령이 다수의 명령 대신에 고체 상태 저장 매체(110)에 전체 가상 페이지의 데이터를 전송하기 위해 만들어질 수 있기 때문에 데이터를 기록하며 판독하는 것이 보다 효율적이 된다.In one embodiment, the write data pipeline 106 includes a write buffer 320 that buffers data for efficient write operations. In general, the write buffer 320 includes sufficient capacity for packets to fill at least one virtual page in the solid state storage medium 110. [ This allows the recording operation to transfer the entire page of data to the solid state storage medium 110 without interruption. By making the buffers in the write buffer 320 and the read data pipeline 108 of the write data pipeline 106 arbitrary in size to be the same capacity or larger than the storage write buffer in the solid state storage medium 110, It is more efficient to write and read data because a single write command can be made to transfer data of the entire virtual page to the solid state storage medium 110 instead of multiple instructions.

기록 버퍼(320)가 채워지는 동안, 고체 상태 저장 매체(110)가 다른 판독 작동에 사용될 수 있다. 이는 데이터가 저장 기록 버퍼에 기록되며 저장 기록 버퍼로 흐르는 데이터가 정지될 때 더 작은 기록 버퍼를 가지거나 기록 버퍼가 없는 다른 고체 상태 장치들이 고체 상태 저장장치에 결합될 수 있기 때문에 유리하다. 판독 작동은 전체 저장 기록 버퍼가 채워지며 프로그래밍될 때까지 차단될 수 있다. 기록 버퍼가 없거나 작은 기록 버퍼를 가지는 시스템들을 위한 다른 방법은 판독을 가능하게 하기 위해 채우지 않은 저장 기록 버퍼를 플러싱하는 것이다. 게다가 이는 다수의 기록/프로그램 사이클들이 페이지를 채우는데 요구되기 때문에 비효율적이다.While the write buffer 320 is being filled, the solid state storage medium 110 may be used for other read operations. This is advantageous because the data may be written to the storage write buffer and other solid state devices having a smaller write buffer or no write buffer may be coupled to the solid state storage when the data flowing to the storage write buffer is stopped. The read operation can be blocked until the entire storage write buffer is filled and programmed. Another method for systems with or without a write buffer is to flush a write buffer that has not been filled to enable reading. In addition, this is inefficient because multiple write / program cycles are required to fill the page.

가상 페이지보다 더 큰 크기로 만들어진 기록 버퍼(320)를 가지는 도시된 실시예에 대해, 수많은 하위 명령들을 포함하는 단일 기록 명령은 그 다음에 각각의 고체 상태 저장 소자(216, 218, 220)의 저장 기록 버퍼로부터 각각의 고체 상태 저장 소자(216, 218, 220) 내의 지시된 페이지까지 페이지의 데이터를 전송하기 위해 단일 프로그램 명령이 계속될 수 있다. 이런 기술은 데이터 신뢰성과 내구성을 감소시키는 것으로 알려진 부분적인 페이지 프로그래밍을 제거하며 버퍼가 채워지는 동안 판독과 다른 명령에 대한 목표 뱅크를 해제하는 이점을 가진다.For the illustrated embodiment having a write buffer 320 made larger in size than the virtual page, a single write command containing a number of sub-instructions is then stored in each solid state storage element 216, 218, 220 A single program command may be followed to transfer the page's data from the write buffer to the indicated page in each solid state storage element 216,218,220. This technique eliminates partial page programming, which is known to reduce data reliability and durability, and has the advantage of releasing a target bank for reads and other instructions while the buffer is being filled.

일 실시예에서, 기록 버퍼(320)는 핑퐁 버퍼이며 여기서 이런 버퍼의 일측이 채워지며 그런 다음에 핑퐁 버퍼의 타측이 채워지는 동안 적당한 시간에 전송에 대해 지시된다. 다른 실시예에서, 기록 버퍼(320)는 데이터 세그먼트들의 가상 페이지보다 큰 용량을 가지는 선입선출("FIFO") 레지스터를 포함한다. 본 기술분야의 기술자는 데이터의 가상 페이지가 고체 상태 저장 매체(110)에 데이터를 기록하기 전에 저장되는 것을 허용하는 다른 기록 버퍼(320) 형태들을 인지할 것이다.In one embodiment, the write buffer 320 is a ping-pong buffer, where one side of this buffer is filled and then indicated for transmission at the appropriate time while the other side of the ping-pong buffer is filled. In another embodiment, write buffer 320 includes a first-in-first-out ("FIFO") register having a larger capacity than a virtual page of data segments. Those of skill in the art will recognize other forms of write buffers 320 that allow virtual pages of data to be stored prior to writing data to solid state storage medium 110. [

다른 실시예에서, 기록 버퍼(320)는 가상 페이지보다 더 작은 크기로 만들어지며 그 결과 보다 작은 정보의 페이지가 고체 상태 저장 매체(110)에 있는 저장 기록 버퍼에 기록될 수 있다. 이런 실시예에서, 기록 데이터 파이프라인(106)의 지연이 판독 작동을 정지시키는 것을 방지하기 위해, 데이터는 불필요 데이터 수집 과정의 일부분으로 하나의 위치에서부터 다른 위치로 이동되는 것이 필요한 불필요 데이터 수집 시스템을 사용하여 대기열을 이룬다. 기록 데이터 파이프라인(106)의 데이터 지연의 경우에, 데이터는 불필요 데이터 수집기 바이패스(316)를 통해 기록 버퍼(320)에 공급될 수 있으며 그런 다음에 데이터를 프로그래밍하기 전에 가상 페이지의 페이지들을 채우기 위해 고체 상태 저장 매체(110)의 저장 기록 버퍼로 공급될 수 있다. 이런 방식으로 기록 데이터 파이프라인(106)의 데이터 지연이 고체 상태 저장 장치(102)로부터 판독을 지연시키지 않게 한다.In another embodiment, the write buffer 320 is made smaller in size than the virtual page, and as a result, a page of smaller information may be written to the storage write buffer in the solid state storage medium 110. [ In this embodiment, in order to prevent the delay of the write data pipeline 106 from stopping the read operation, the data may need to be moved from one location to another location as part of the unwanted data collection process To form a queue. In the case of a data delay of the write data pipeline 106, the data may be supplied to the write buffer 320 via the unwanted data collector bypass 316 and then filled in pages of the virtual page before programming the data May be supplied to the storage recording buffer of the solid state storage medium (110). In this way, the data delay of the write data pipeline 106 does not delay reading from the solid state storage device 102.

다른 실시예에서, 기록 데이터 파이프라인(106)은 기록 데이터 파이프라인(106) 내에 하나 이상의 사용자 정의 가능 기능들을 가지는 기록 프로그램 모듈(310)을 포함한다. 기록 프로그램 모듈(310)은 사용자가 기록 데이터 파이프라인(106)을 맞춤형으로 제작하는 것을 허용한다. 사용자는 특정 데이터 요건이나 적용에 근거하여 기록 데이터 파이프라인(106)을 맞춤형으로 제작할 수 있다. 고체 상태 저장 컨트롤러(104)가 FPGA인 경우에, 사용자는 주문형 명령 및 기능으로 상대적으로 쉽게 기록 데이터 파이프라인(106)을 프로그래밍할 수 있다. 사용자는 또한 ASIC을 가지는 주문형 기능들을 포함하는 기록 프로그램 모듈(310)을 사용할 수 있지만, 그러나 ASIC을 맞춤형으로 제작하는 것은 FPGA로 하는 것보다 더 어려울 수 있다. 기록 프로그램 모듈(310)은 제2 데이터 세그먼트가 기록 데이터 파이프라인(106)을 통해 계속될 수 있는 동안 제1 데이터 세그먼트가 기록 프로그램 모듈(310)에서 실행되는 것을 허용하기 위해 버퍼들과 바이패스 메커니즘들을 포함할 수 있다. 다른 실시예에서, 기록 프로그램 모듈(310)은 소프트웨어를 통해 프로그래밍될 수 있는 프로세서 코어를 포함할 수 있다.In another embodiment, the write data pipeline 106 includes a write program module 310 having one or more user definable functions within the write data pipeline 106. The recording program module 310 allows the user to customize the recording data pipeline 106. [ The user can customize the recording data pipeline 106 based on specific data requirements or applications. In the case where the solid state storage controller 104 is an FPGA, the user can program the write data pipeline 106 relatively easily with on-demand commands and functions. The user may also use a recording program module 310 that includes on-demand functions with an ASIC, but customizing the ASIC may be more difficult than with an FPGA. Recording program module 310 may include buffers and a bypass mechanism to allow the first data segment to be executed in the recording program module 310 while the second data segment may continue through the recording data pipeline 106. [ Lt; / RTI > In other embodiments, the recording program module 310 may include a processor core that may be programmed via software.

기록 프로그램 모듈(310)이 입력 버퍼(306)와 압축 모듈(312) 사이에서 보여지지만, 그러나 기록 프로그램 모듈(310)이 기록 데이터 파이프라인(106)의 어느 곳에 있을 수 있으며 다양한 스테이지들(302-320) 사이에 분산될 수 있다는 것에 주목하라. 더구나, 프로그래밍되며 독립적으로 작동하는 다양한 스테이지들(302-320) 사이에 분산되는 다수의 기록 프로그램 모듈들(310)이 있을 수 있다. 게다가, 스테이지들(302-320)의 순서는 변경될 수 있다. 본 기술분야의 기술자는 특정 사용자 요건에 근거하여 스테이지들(302-320)의 순서에 대한 활용 가능한 변경을 인지할 것이다.Although the recording program module 310 is shown between the input buffer 306 and the compression module 312 but the recording program module 310 can be anywhere in the recording data pipeline 106 and the various stages 302- 0.0 > 320). ≪ / RTI > Furthermore, there may be a plurality of recording program modules 310 distributed among the various stages 302-320 that are programmed and operating independently. In addition, the order of the stages 302-320 may be changed. The skilled artisan will appreciate the available changes to the order of the stages 302-320 based on the particular user requirements.

판독 데이터 파이프라인Read data pipeline

판독 데이터 파이프라인(108)은 요청 패킷의 각각의 ECC 블록으로 저장된 ECC를 사용함으로써 고체 상태 저장 매체(110)로부터 수신된 요청 패킷의 ECC 블록들에 데이터 에러가 존재하는지를 결정하는 ECC 정정 모듈(322)을 포함한다. ECC 정정 모듈(322)은 그런 다음에 만약 임의의 에러가 존재하며 에러들이 ECC를 사용하여 정정 가능하다면 요청 패킷에 있는 임의의 에러들을 정정한다. 예를 들면, 만약 ECC가 6 비트의 에러를 검출할 수 있지만 3 비트 에러들만을 정정할 수 있다면, ECC 정정 모듈(322)은 3 비트까지의 에러를 가지는 요청 패킷의 ECC 블록들을 정정한다. ECC 정정 모듈(322)은 비트들의 에러를 올바른 일 또는 제로 상태로 변경함으로써 비트들의 에러를 정정하며 그 결과 요청 데이터 패킷은 이것이 고체 상태 저장 매체(110)에 기록되며 ECC가 패킷을 위해 발생되었을 때와 같아진다.The read data pipeline 108 includes an ECC correction module 322 that determines whether there is a data error in the ECC blocks of the request packet received from the solid state storage medium 110 by using the ECC stored in each ECC block of the request packet ). The ECC correction module 322 then corrects any errors in the request packet if there are any errors and the errors are correctable using ECC. For example, if the ECC can detect 6 bits of error but can correct only 3 bit errors, the ECC correction module 322 corrects the ECC blocks of the request packet with up to 3 bits of error. The ECC correction module 322 corrects errors in the bits by changing the error of the bits to the correct one or zero state so that the requested data packet is written to the solid state storage medium 110 when the ECC is generated for the packet Lt; / RTI >

ECC 정정 모듈(322)이 요청 패킷들이 ECC가 정정할 수 있는 것보다 더 많은 비트를 가지는지를 결정하면, ECC 정정 모듈(322)은 요청 패킷의 손상된 ECC 블록들의 에러들을 정정할 수 없으며 인터럽트를 전송한다. 일 실시예에서, ECC 정정 모듈(322)은 요청 패킷이 에러 상태인 것을 가리키는 메시지와 함께 인터럽트를 전송한다. 메시지는 ECC 정정 모듈(322)이 에러들을 정정할 수 없거나 ECC 정정 모듈(322)가 에러를 정정하지 못하는 성능이 내포된다는 정보를 포함할 수 있다. 다른 실시예에서, ECC 정정 모듈(322)은 인터럽트 및/또는 메시지와 함께 요청 패킷의 손상된 ECC 블록들을 전송한다.If the ECC correction module 322 determines that the request packets have more bits than the ECC can correct, the ECC correction module 322 can not correct errors in the corrupted ECC blocks of the request packet, do. In one embodiment, the ECC correction module 322 sends an interrupt with a message indicating that the request packet is in an error state. The message may contain information that the ECC correction module 322 can not correct errors or that the ECC correction module 322 does not correct the error. In another embodiment, the ECC correction module 322 sends corrupted ECC blocks of the request packet along with the interrupt and / or message.

일 실시예에서, ECC 정정 모듈(322)에 의해 정정될 수 없는 요청 패킷의 손상된 ECC 블록 또는 손상된 ECC 블록의 일부분이 마스터 컨트롤러(224)에 의해 판독되며, 정정되며, 판독 데이터 파이프라인(108)에 의한 다른 프로세싱을 위해 ECC 정정 모듈(322)에 반송된다. 일 실시예에서, 요청 패킷의 손상된 ECC 블록 또는 손상된 ECC 블록의 일부분은 데이터를 요청하는 장치에 전송된다. 요청 장치(155)는 ECC 블록을 정정하거나 백업 또는 미러 복사본과 같은 다른 복사본을 사용하여 데이터를 대체할 수 있으며, 그런 다음에 요청 데이터 패킷의 대체 데이터를 사용할 수 있으며 이를 판독 데이터 파이프라인(108)에 반송할 수 있다. 요청 장치(155)는 손상된 요청 패킷을 대체하거나 패킷이 속하는 데이터 구조를 대체하도록 요청된 데이터를 식별하기 위해 에러 상태의 요청 패킷의 헤더 정보를 사용할 수 있다. 다른 실시예에서, 고체 상태 저장 컨트롤러(104)는 몇몇 타입의 RAID를 사용하여 데이터를 저장하며 손상된 데이터를 복구할 수 있다. 다른 실시예에서, ECC 정정 모듈(322) 인터럽트 및/또는 메시지를 전송하며 수신 장치는 요청 데이터 패킷과 관련된 판독 작동을 하지 못한다. 본 기술분야의 기술자는 요청 패킷의 하나 이상의 ECC 블록들이 손상되며 ECC 정정 모듈(322)이 에러들을 정정할 수 없는지를 결정하는 다른 ECC 정정 모듈(322)의 결과로 취해지는 선택사항이나 행위들을 인지할 것이다.In one embodiment, a corrupted ECC block or a portion of a corrupted ECC block of a request packet that can not be corrected by the ECC correction module 322 is read and corrected by the master controller 224, To the ECC correction module 322 for further processing by the ECC correction module 322. In one embodiment, a corrupted ECC block of the request packet or a portion of the corrupted ECC block is sent to the device requesting the data. The requesting device 155 may replace the data using an alternate copy, such as a backup or mirror copy, and then use the alternate data of the requested data packet and send it to the read data pipeline 108, As shown in FIG. The requesting device 155 may use the header information of the request packet in error state to replace the corrupted request packet or to identify the requested data to replace the data structure to which the packet belongs. In another embodiment, the solid state storage controller 104 may use some types of RAID to store data and recover corrupted data. In another embodiment, the ECC correction module 322 sends interrupts and / or messages and the receiving device fails to perform the read operation associated with the requested data packet. The skilled artisan will appreciate that the one or more ECC blocks of the request packet may be corrupted and may include acknowledgments or actions taken as a result of other ECC correction module 322 that determines whether ECC correction module 322 can not correct errors something to do.

판독 데이터 파이프라인(108)은 직접적으로 또는 간접적으로 ECC 정정 모듈(322)로부터 요청 패킷의 ECC 블록들을 수신하며, 하나 이상의 패킷 헤더들을 체크하며 제거하는 역패킷화장치(324)를 포함한다. 역패킷화장치(324)는 헤더들 내에서 패킷 식별자들, 데이터 길이, 데이터 위치, 등을 체크함으로써 패킷 헤더들을 확인할 수 있다. 일 실시예에서, 헤더는 판독 데이터 파이프라인(108)에 전달된 패킷이 요청 패킷인지를 확인하는데 사용될 수 있는 해시 코드를 포함한다. 역패킷화장치(324)는 또한 패킷화장치(302)에 의해 추가된 요청 패킷으로부터 헤더들을 제거한다. 역패킷화장치(324)는 특정 패킷들에 대해 작동되지 않도록 지시를 받을 수 있지만 변경 없이 앞서서 이들을 통과할 수 있다. 일 예는 헤더 정보가 인덱스 재구성을 요구하는 재건 공정의 과정 중에 요청되는 컨테이너 라벨일 수 있다. 다른 예들은 고체 상태 저장 장치(102) 내에서 사용하기로 예정된 다양한 타입의 패킷들의 이동을 포함한다. 다른 실시예에서, 역패킷화장치(324)의 작동은 패킷 타입에 의존할 수 있다.The read data pipeline 108 includes a de-packetizer 324 that receives ECC blocks of the request packet directly or indirectly from the ECC correction module 322, and checks and removes one or more packet headers. The de-packetizer 324 can identify packet headers by checking packet identifiers, data length, data location, etc. within the headers. In one embodiment, the header includes a hash code that can be used to verify that the packet delivered to the read data pipeline 108 is a request packet. The de-packetizer 324 also removes headers from the request packet added by the packetizer 302. The de-packetizer 324 may be instructed not to operate on certain packets but may pass them ahead of time without modification. An example may be a container label where the header information is requested during the rebuild process requiring index reorganization. Other examples include movement of various types of packets intended to be used within the solid state storage device 102. In another embodiment, the operation of the de-packetizing device 324 may depend on the packet type.

판독 데이터 파이프라인(108)은 역패킷화장치(324)로부터 데이터를 수신하며 요구되지 않은 데이터를 제거하는 정렬 모듈(326)을 포함한다. 일 실시예에서, 고체 상태 저장 매체(110)에 전송되는 판독 명령은 패킷의 데이터를 수신한다. 데이터를 요청하는 장치는 검색된 패킷 내의 모든 데이터를 필요로 하지 않을 수 있으며 정렬 모듈(326)은 요구되지 않은 데이터를 제거한다. 만약 검색된 페이지의 모든 데이터가 요청 데이터라면, 정렬 모듈(326)은 임의의 데이터도 제거하지 않는다.The read data pipeline 108 includes an alignment module 326 that receives data from the de-packetizer 324 and removes the undesired data. In one embodiment, the read command transmitted to the solid state storage medium 110 receives the data of the packet. The device requesting the data may not need all the data in the retrieved packet and the sorting module 326 removes the unwanted data. If all of the data in the retrieved page is request data, the sorting module 326 does not remove any data.

정렬 모듈(326)은 데이터 세그먼트를 다음 페이지로 포워딩하기 전에 데이터 세그먼트를 요청하는 장치에 적합한 형태로 데이터 구조의 데이터 세그먼트들로 데이터를 다시 포맷한다. 일반적으로, 데이터가 판독 데이터 파이프라인(108)에 의해 프로세싱될 때, 데이터 세그먼트들 또는 패킷들의 크기는 다양한 스테이지들에서 변경된다. 정렬 모듈(326)은 요청 장치(155)에 송신되며 응답을 형성하기 위해 연결되는데 적합한 데이터 세그먼트들로 데이터를 포맷하기 위해 수신된 데이터를 사용한다. 예를 들면, 제1 데이터 패킷의 일부분으로부터 나온 데이터는 제2 데이터 패킷의 일부분으로부터 나온 데이터와 결합될 수 있다. 데이터 세그먼트가 요청 장치(155)에 의해 요청되는 데이터보다 더 크다면, 정렬 모듈(326)은 요구되지 않은 데이터를 버릴 수 있다.The sorting module 326 reformats the data into data segments of the data structure in a form suitable for the device requesting the data segment before forwarding the data segment to the next page. Generally, when data is processed by the read data pipeline 108, the size of the data segments or packets is changed at various stages. The sorting module 326 uses the received data to format the data into data segments suitable for being sent to the requesting device 155 and connected to form a response. For example, data from a portion of a first data packet may be combined with data from a portion of a second data packet. If the data segment is larger than the data requested by the requesting device 155, the sorting module 326 may discard the undesired data.

일 실시예에서, 판독 데이터 파이프라인(108)은 판독 데이터 파이프라인(108)에 의해 프로세싱되기 전에 고체 상태 저장 매체(110)로부터 판독된 하나 이상의 요청 패킷들을 버퍼링하는 판독 동기화 버퍼(328)를 포함한다. 판독 동기화 버퍼(328)는 고체 상태 저장 클럭 도메인과 로컬 버스 클럭 도메인 사이의 경계에 있으며 클럭 도메인 차이를 평가하기 위해 버퍼링을 제공한다.In one embodiment, the read data pipeline 108 includes a read synchronization buffer 328 that buffers one or more request packets read from the solid state storage medium 110 before being processed by the read data pipeline 108 do. Read sync buffer 328 is at the boundary between the solid state store clock domain and the local bus clock domain and provides buffering to evaluate the clock domain difference.

다른 실시예에서, 판독 데이터 파이프라인(108)은 정렬 모듈(326)로부터 요청 패킷들을 수신하며 요청 장치(155)로 전송하기 전에 패킷들을 저장하는 출력 버퍼(330)를 포함한다. 출력 버퍼(330)는 데이터 세그먼트들이 판독 데이터 파이프라인(108)의 스테이지들로부터 수신될 때와 데이터 세그먼트들이 고체 상태 저장 컨트롤러(104)의 다른 부분들로 또는 요청 장치(155)로 전송될 때 사이의 차이를 평가한다. 출력 버퍼(330)는 또한 데이터 버스(204)의 작동의 효율을 개선하기 위해 데이터 버스(204)가 판독 데이터 파이프라인(108)으로 견딜 수 있는 것보다 높은 속도로 판독 데이터 파이프라인(108)으로부터 나온 데이터를 수신하는 것을 허용한다.In another embodiment, the read data pipeline 108 includes an output buffer 330 that receives request packets from the sort module 326 and stores the packets before sending them to the requesting device 155. The output buffer 330 is coupled between the data segments when they are received from the stages of the read data pipeline 108 and when the data segments are transferred to other parts of the solid state storage controller 104 or to the requesting device 155 . ≪ / RTI > The output buffer 330 also receives data from the read data pipeline 108 at a higher rate than the data bus 204 can withstand the read data pipeline 108 to improve the efficiency of operation of the data bus 204. [ Lt; / RTI > data.

일 실시예에서, 판독 데이터 파이프라인(108)은 ECC 정정 모듈(322)로부터 하나 이상의 암호화된 요청 패킷들을 수신하며 하나 이상의 요청 패킷들을 역패킷화장치(324)에 전송하기 전에 고체 상태 저장 장치(102)에 유일한 암호화 키를 사용하여 하나 이상의 요청 패킷들을 복호화하는 매체 복호화 모듈(332)을 포함한다. 일반적으로 매체 복호화 모듈(332)에 의해 데이터를 복호화하는데 사용되는 암호화 키는 매체 암호화 모듈(318)에 의해 사용되는 암호화 키와 동일하다. 다른 실시예에서, 고체 상태 저장 매체(110)는 둘 이상의 파티션들을 가질 수 있으며 고체 상태 저장 컨트롤러(104)는 마치 이것이 고체 상태 저장 매체(110) 내에서 단일의 파티션에 대해 각각 작동되는 둘 이상의 고체 상태 저장 컨트롤러들(104)인 것처럼 거동한다. 이런 실시예에서, 유일한 매체 암호화 키가 각각의 파티션에 사용될 수 있다.In one embodiment, the read data pipeline 108 receives one or more encrypted request packets from the ECC correction module 322 and sends the one or more request packets to the solid state storage device (e. G. 102 to decrypt the one or more request packets using a unique encryption key. Generally, the encryption key used to decrypt the data by the media decryption module 332 is the same as the encryption key used by the media encryption module 318. In another embodiment, the solid state storage medium 110 may have more than two partitions and the solid state storage controller 104 may include two or more solid Behave as if they were state storage controllers 104. In this embodiment, a unique media encryption key may be used for each partition.

다른 실시예에서, 판독 데이터 파이프라인(108)은 데이터 세그먼트를 출력 버퍼(330)에 전송하기 전에 역패킷화장치(324)에 의해 포맷된 데이터 세그먼트를 복호화하는 복호화 모듈(334)을 포함한다. 데이터 세그먼트는 판독 동기화 버퍼(328)에 의해 수신된 요청된 패킷의 검색을 시작하는 판독 요청과 함께 수신된 암호화 키를 사용하여 복호화될 수 있다. 복호화 모듈(334)은 제1 패킷에 대한 판독 요청과 함께 수신된 암호화 키로 제1 패킷을 복호화할 수 있으며 그런 다음에 상이한 암호화 키로 제2 패킷을 복호화할 수 있거나 복호화 없이 판독 데이터 파이프라인(108)의 다음 스테이지로 제2 패킷을 통과시킬 수 있다. 패킷이 비밀이 아닌 암호 임시값으로 저장되었을 때, 임시값은 데이터 패킷을 복호화하기 위해 암호화 키와 함께 사용된다. 암호화 키는 클라이언트(114), 컴퓨터, 키 관리자, 또는 고체 상태 저장 컨트롤러(104)에 의해 사용되는 암호화 키를 관리하는 다른 장치로부터 수신될 수 있다.In another embodiment, the read data pipeline 108 includes a decryption module 334 that decrypts the data segment formatted by the de-packetizer 324 before sending the data segment to the output buffer 330. The data segment may be decrypted using the received encryption key with a read request that initiates the retrieval of the requested packet received by the read synchronization buffer 328. [ The decryption module 334 may decrypt the first packet with the received encryption key along with the read request for the first packet and then decrypt the second packet with a different encryption key or to decrypt the read data pipeline 108 without decryption, It is possible to pass the second packet to the next stage of the second packet. When a packet is stored as a non-secret cryptographic temporary value, the temporary value is used with the encryption key to decrypt the data packet. The encryption key may be received from a client 114, a computer, a key manager, or other device that manages the encryption key used by the solid state storage controller 104.

다른 실시예에서, 판독 데이터 파이프라인(108)은 역패킷화장치(324)에 의해 포맷된 데이터 세그먼트의 압축을 해제하는 압축 해제 모듈(336)을 포함한다. 일 실시예에서, 압축 해제 모듈(336)은 압축 모듈(312)에 의해 데이터를 압축하는데 사용되는 것에 대해 상보적인 루틴을 선택하기 위해 패킷 헤더와 컨테이너 라벨 중의 하나 또는 양쪽에 저장된 압축 정보를 사용한다. 다른 실시예에서, 압축 해제 모듈(336)에 사용되는 압축 해제 루틴은 압축 해제되는 데이터 세그먼트를 요청하는 장치에 의해 지시된다. 다른 실시예에서, 압축 해제 모듈(336)은 매 데이터 구조 타입 또는 데이터 구조 클래스에 근거하여 디폴트 세팅들에 따라 압축 해제 루틴을 선택한다. 제1 객체의 제1 패킷은 디폴트 압축 해제 루틴을 오버라이딩하는 것을 가능하게 할 수 있으며 동일한 데이터 구조 클래스와 데이터 구조 타입의 제2 데이터 구조의 제2 패킷은 디폴트 압축 해제 루틴을 사용할 수 있으며 동일한 데이터 구조 클래스와 데이터 구조 타입의 제3 데이터 구조의 제3 패킷은 압축 해제를 사용할 수 없다.In another embodiment, the read data pipeline 108 includes a decompression module 336 that decompresses the data segments formatted by the de-packetizing device 324. [ In one embodiment, the decompression module 336 uses compression information stored in one or both of the packet header and the container label to select a routine that is complementary to that used by the compression module 312 to compress the data . In another embodiment, the decompression routine used in decompression module 336 is indicated by the device requesting the decompressed data segment. In another embodiment, the decompression module 336 selects decompression routines according to default settings based on each data structure type or data structure class. The first packet of the first object may enable overriding the default decompression routine and the second packet of the second data structure of the same data structure class and data structure type may use the default decompression routine, The third packet of the third data structure of the structure class and data structure type can not use decompression.

다른 실시예에서, 판독 데이터 파이프라인(108)은 판독 데이터 파이프라인(108) 내에 하나 이상의 사용자 정의 가능 기능들을 포함하는 판독 프로그램 모듈(338)을 포함한다. 판독 프로그램 모듈(338)은 기록 프로그램 모듈(310)과 유사한 특징을 가지며 사용자가 판독 데이터 파이프라인(108)에 주문형 기능들을 제공하는 것을 허용한다. 판독 프로그램 모듈(338)은 도 3에 도시된 바와 같이 위치할 수 있으며, 판독 데이터 파이프라인(108) 내의 다른 위치에 위치할 수 있거나, 판독 데이터 파이프라인(108) 내의 다수의 위치들에 있는 다수의 부분들을 포함할 수 있다. 더구나, 독립적으로 작동하는 판독 데이터 파이프라인(108) 내에 있는 다수의 위치들 내에 다수의 판독 프로그램 모듈들(338)이 있을 수 있다. 본 기술분야의 기술자는 판독 데이터 파이프라인(108) 내에 있는 판독 프로그램 모듈들(338)의 다른 형태를 인지할 것이다. 기록 데이터 파이프라인(106)과 같이, 판독 데이터 파이프라인(108)의 스테이지들은 재배치될 수 있으며 본 기술분야의 기술자는 판독 데이터 파이프라인(108) 내에 있는 스테이지들의 다른 순서들을 인지할 것이다.In another embodiment, the read data pipeline 108 includes a read program module 338 that includes one or more user definable functions within the read data pipeline 108. The read program module 338 has features similar to the write program module 310 and allows the user to provide custom functions to the read data pipeline 108. [ The read program module 338 may be located as shown in Figure 3 and may be located at another location within the read data pipeline 108 or may be located at a number of locations within the read data pipeline 108 And < / RTI > Moreover, there may be multiple read program modules 338 within multiple locations within the read data pipeline 108 that operate independently. Those skilled in the art will recognize other forms of read program modules 338 in the read data pipeline 108. [ The stages of the read data pipeline 108, such as the write data pipeline 106, may be relocated and the skilled artisan will recognize other orders of stages within the read data pipeline 108. [

고체 상태 저장 컨트롤러(104)는 제어 및 상태 레지스터들(340)과 상응하는 제어 큐들(342)을 포함한다. 제어 및 상태 레지스터들(340)과 제어 큐들(342)은 기록 데이터 파이프라인(106)과 판독 데이터 파이프라인(108)에서 프로세싱되는 데이터와 관련된 제어와 시퀀싱 명령 및 하위 명령을 용이하게 한다. 예를 들면, 패킷화장치(302)의 데이터 세그먼트는 ECC 발생기(304)와 관련된 제어 큐(342)에 하나 이상의 상응하는 제어 명령 또는 지시를 가질 수 있다. 데이터 세그먼트가 패킷화될 때, 몇몇 지시 또는 명령이 패킷화장치(302) 내에서 실행될 수 있다. 다른 명령 또는 지시는 데이터 세그먼트로부터 생성된 새롭게 형성된 데이터 패킷이 다음 스테이지로 통과될 때 제어 및 상태 레지스터들(340)을 통해 다음 제어 큐(342)로 통과될 수 있다.The solid state storage controller 104 includes control and status registers 340 and corresponding control queues 342. Control and status registers 340 and control queues 342 facilitate control and sequencing and sub-instructions associated with data being processed in the write data pipeline 106 and the read data pipeline 108. For example, the data segment of the packetizer 302 may have one or more corresponding control commands or instructions in the control queue 342 associated with the ECC generator 304. When a data segment is packetized, several instructions or instructions may be executed within the packetization device 302. [ Other instructions or indications may be passed through the control and status registers 340 to the next control queue 342 when the newly formed data packet generated from the data segment is passed to the next stage.

명령 또는 지시는 개개의 패킷이 이런 스테이지에 의해 실행될 때 적합한 명령 또는 지시를 끌어내는 각각의 파이프라인 스테이지를 가지는 기록 데이터 파이프라인(106)으로 포워딩되는 패킷에 대한 제어 큐들(342)로 동시에 로딩될 수 있다. 이와 마찬가지로, 명령 또는 지시는 개개의 패킷이 이런 스테이지에 의해 실행될 때 적합한 명령 또는 지시를 끌어내는 각각의 파이프라인 스테이지를 가지는 판독 데이터 파이프라인(108)으로부터 요청되는 패킷에 대한 제어 큐들(342)에 동시에 로딩될 수 있다. 본 기술분야의 기술자는 제어 및 상태 레지스터들(340)과 제어 큐들(342)의 다른 특징 및 기능을 인지할 것이다.Instructions or instructions are simultaneously loaded into control queues 342 for packets forwarded to the write data pipeline 106 having respective pipeline stages to pull out the appropriate instructions or instructions when the individual packets are executed by this stage . Likewise, the instructions or instructions may be stored in control queues 342 for packets requested from the read data pipeline 108 having respective pipeline stages to pull out the appropriate instruction or instruction when an individual packet is executed by this stage Can be loaded at the same time. Those skilled in the art will recognize other features and functions of control and status registers 340 and control queues 342. [

고체 상태 저장 컨트롤러(104) 및/또는 고체 상태 저장 장치(102)는 또한 도 4와 관련하여 설명되는, 뱅크 인터리브 컨트롤러(344), 동기화 버퍼(346), 저장 버스 컨트롤러(348), 및 멀티플렉서("MUX")(350)를 포함할 수 있다.The solid state storage controller 104 and / or the solid state storage device 102 may also include a bank interleave controller 344, a synchronization buffer 346, a storage bus controller 348, and a multiplexer (not shown) "MUX") < / RTI >

뱅크 인터리브Bank interleaving

도 4는 본 발명에 따른 고체 상태 저장 컨트롤러(104)에 있는 뱅크 인터리브 컨트롤러(344)의 일 실시예(400)를 도시하는 개략적인 블록도이다. 뱅크 인터리브 컨트롤러(344)는 아래에 설명되는, MUX(350), 저장 버스 컨트롤러(348), 및 동기화 버퍼(346)를 통해 제어 및 상태 레지스터들(340) 및 저장 I/O 버스(210)와 저장 제어 버스(212)에 연결된다. 뱅크 인터리브 컨트롤러(344)는 아래에 설명되는, 고체 상태 저장 매체(110), 뱅크 컨트롤러들(418a-n), 버스 중재기(420), 및 상태 MUX(350)의 뱅크들(214)을 위해 판독 에이전트(402), 기록 에이전트(404), 소거 에이전트(406), 관리 에이전트(408), 판독 큐들(410a-n), 기록 큐들(412a-n), 소거 큐들(414a-n), 및 관리 큐들(416a-n)을 포함한다. 저장 버스 컨트롤러(348)는 아래에 설명되는, 리맵핑 모듈(430)을 가지는 맵핑 모듈(424), 상태 캡처 모듈(426), 및 NAND 버스 컨트롤러(428)을 포함한다.4 is a schematic block diagram illustrating one embodiment 400 of a bank interleave controller 344 in a solid state storage controller 104 in accordance with the present invention. The bank interleave controller 344 is coupled to the control and status registers 340 and the storage I / O bus 210 via a MUX 350, a storage bus controller 348, and a synchronization buffer 346, And is connected to the storage control bus 212. The bank interleave controller 344 is coupled to the banks 214 of the solid state storage medium 110, the bank controllers 418a-n, the bus arbiter 420 and the state MUX 350, The read agent 402, the write agent 404, the erase agent 406, the management agent 408, the read queues 410a-n, the write queues 412a-n, the erasure queues 414a- And cues 416a-n. The storage bus controller 348 includes a mapping module 424 having a remapping module 430, a status capture module 426, and a NAND bus controller 428, as described below.

뱅크 인터리브 컨트롤러(344)는 고체 상태 저장 컨트롤러(104)에 있는 둘 이상의 큐들에 하나 이상의 명령을 지시하며 제1 타입의 명령이 하나의 뱅크(214a)에 대해 실행되는 동안에 제2 타입의 명령이 제2 뱅크(214b)에 대해 실행될 정도로, 고체 상태 저장 매체(110)의 뱅크들(214) 사이에서 큐들에 저장된 명령의 실행을 조정한다. 하나 이상의 명령은 명령 타입에 의해 큐들로 분리된다. 고체 상태 저장 매체(110)의 각각의 뱅크(214)는 뱅크 인터리브 컨트롤러(344) 내에 상응하는 세트의 큐들을 가지며 각각의 세트의 큐들은 각각의 명령 타입에 대한 하나의 큐를 포함한다.The bank interleave controller 344 directs one or more instructions to two or more queues in the solid state storage controller 104 and a second type of instruction is executed while a first type of instruction is executed for one bank 214a. Adjusts the execution of instructions stored in the queues between the banks 214 of the solid state storage medium 110 to such an extent that it is executed on the two banks 214b. One or more commands are separated into queues by command type. Each bank 214 of the solid state storage medium 110 has a corresponding set of queues in the bank interleave controller 344 and each set of queues includes one queue for each command type.

뱅크 인터리브 컨트롤러(344)는 고체 상태 저장 매체(110)의 뱅크들(214) 사이에서 큐들에 저장된 명령의 실행을 조정한다. 예를 들면, 제1 타입의 명령이 하나의 뱅크(214a)에 대해 실행되는 동안에 제2 타입의 명령이 제2 뱅크(214b)에 대해 실행된다. 일반적으로 명령 타입들과 큐 타입들은 판독 및 기록 명령들과 큐들(410, 412)을 포함하지만, 또한 저장 매체 특정인 다른 명령들 또는 큐들을 포함할 수 있다. 예를 들면, 도 4에 도시된 실시예에서, 소거 및 관리 큐들(414, 416)은 포함되며 플래시 메모리, NRAM, MRAM, DRAM, PRAM 등에 적당할 것이다.The bank interleave controller 344 coordinates the execution of instructions stored in the queues between the banks 214 of the solid state storage medium 110. [ For example, a second type of instruction is executed for the second bank 214b while the first type of instruction is being executed for one bank 214a. In general, the command types and queue types include read and write commands and queues 410 and 412, but may also include other commands or queues that are storage medium specific. For example, in the embodiment shown in FIG. 4, erase and management queues 414 and 416 are included and will be suitable for flash memory, NRAM, MRAM, DRAM, PRAM, and the like.

다른 타입의 고체 상태 저장 매체(110)에 대해, 다른 타입의 명령들 및 상응하는 큐들은 본 발명의 범위를 벗어나지 않고 포함될 수 있다. 유연한 성질의 FPGA 고체 상태 저장 컨트롤러(104)는 저장 매체의 유연성을 허용한다. 만약 플래시 메모리가 다른 고체 상태 저장 타입으로 변경되었다면, 뱅크 인터리브 컨트롤러(344), 저장 버스 컨트롤러(348), 및 MUX(350)는 데이터 파이프라인들(106, 108)과 다른 고체 상태 저장 컨트롤러(104) 기능에 상당한 영향을 끼치지 않고 매체 타입에 적응하기 위해 변경될 수 있다.For other types of solid state storage media 110, other types of instructions and corresponding queues may be included without departing from the scope of the present invention. The flexible nature of the FPGA solid state storage controller 104 allows the flexibility of the storage medium. The bank interleave controller 344, the storage bus controller 348 and the MUX 350 are coupled to the data pipelines 106 and 108 and other solid state storage controllers 104 ) ≪ / RTI > functionality without significantly affecting the media type.

도 4에 도시된 실시예에서, 뱅크 인터리브 컨트롤러(344)는 각각의 뱅크(214)에 대해, 고체 상태 저장 매체(110)로부터 나온 데이터를 판독하기 위한 판독 큐(410), 고체 상태 저장 매체(110)로부터 나온 명령을 기록하기 기록 큐(412), 고체 상태 저장장치의 소거 블록을 소거하기 위한 소거 큐(414), 관리 명령을 위한 관리 큐(416)를 포함한다. 뱅크 인터리브 컨트롤러(344)는 또한 상응하는 판독, 기록, 소거, 및 관리 에이전트들(402, 404, 406, 408)을 포함한다. 다른 실시예에서, 제어 및 상태 레지스터들(340)과 제어 큐들(342) 또는 유사한 소자들은 뱅크 인터리브 컨트롤러(344) 없이 고체 상태 저장 매체(110)의 뱅크들(214)에 전송된 데이터에 대한 명령의 대기열을 이룬다.4, the bank interleave controller 344 includes, for each bank 214, a read queue 410 for reading data from the solid state storage medium 110, a solid state storage medium < RTI ID = 0.0 > An erase queue 414 for erasing the erase blocks of the solid state storage device, and a management queue 416 for management instructions. The bank interleave controller 344 also includes corresponding read, write, erase, and management agents 402, 404, 406, 408. In other embodiments, control and status registers 340 and control cues 342 or similar elements may be used to store instructions for data transmitted to banks 214 of solid state storage medium 110 without bank interleave controller 344. [ .

에이전트들(402, 404, 406, 408)은, 일 실시예에서, 뱅크(214a)에 대한 올바른 큐로 특정 뱅크(214a)에 대해 예정된 적당한 타입의 명령을 지시한다. 예를 들면, 판독 에이전트(402)는 뱅크-1(214b)에 대한 판독 명령을 수신할 수 있으며 뱅크-1 판독 큐(410b)에 판독 명령을 지시한다. 기록 에이전트(404)는 고체 상태 저장 매체(110)의 뱅크-0(214a)의 위치에 데이터를 기록하기 위해 기록 명령을 수신할 수 있으며 그런 다음에 뱅크-0 기록 큐(412a)에 기록 명령을 전송할 것이다. 이와 마찬가지로, 소거 에이전트(406)는 뱅크-1(214b)의 소거 블록을 소거하기 위해 소거 명령을 수신할 수 있으며 그런 다음에 뱅크-1 소거 큐(414b)에 소거 명령을 통과시킨다. 명령 에이전트(408)는 일반적으로 관리 명령, 상태 요청, 및 리셋 명령 또는 뱅크-01(214a)와 같은 뱅크(214)의 형태 레지스터를 판독하는 요청과 같은 이와 유사한 것을 수신한다. 관리 에이전트(408)는 뱅크-0 관리 큐(416a)에 관리 명령을 전송한다.The agents 402, 404, 406, 408, in one embodiment, direct the appropriate type of command that is scheduled for the particular bank 214a to the correct queue for the bank 214a. For example, read agent 402 may receive a read command for bank-1 214b and direct a read command to bank-1 read queue 410b. The recording agent 404 may receive a write command to write data to the bank-0 214a location of the solid state storage medium 110 and then write a write command to the bank-0 write queue 412a Lt; / RTI > Similarly, the cancellation agent 406 may receive an erase command to erase the erase block of bank-1 214b and then pass an erase command to the bank-1 erase queue 414b. The command agent 408 generally receives management instructions, status requests, and similar commands, such as a reset command or a request to read the type register of the bank 214, such as bank-01 214a. The management agent 408 sends an administrative command to the bank-0 management queue 416a.

에이전트들(402, 404, 406, 408)은 일반적으로 또한 큐들(410, 412, 414, 416)의 상태를 모니터링하며 큐들(410, 412, 414, 416)이 완전하며, 거의 완전하며, 기능을 하지 못하는 등일 때 상태, 인터럽트, 또는 다른 메시지들을 전송한다. 일 실시예에서, 에이전트들(402, 404, 406, 408)은 명령을 수신하며 이에 상응하는 하위 명령을 발생시킨다. 일 실시예에서, 에이전트들(402, 404, 406, 408)은 제어 및 상태 레지스터들(340)을 통해 명령을 수신하며 큐들(410, 412, 414, 416)에 포워딩되는 이에 상응하는 하위 명령을 발생시킨다. 본 기술분야의 기술자는 에이전트들(402, 404, 406, 408)의 다른 기능들을 인지할 것이다.The agents 402, 404, 406 and 408 also generally monitor the status of the queues 410, 412, 414 and 416 and the queues 410, 412, 414 and 416 are complete, Or other messages when it is unable to do so. In one embodiment, the agents 402, 404, 406, 408 receive the command and generate a corresponding sub-command. In one embodiment, agents 402, 404, 406, 408 receive commands via control and status registers 340 and provide corresponding sub-commands to be forwarded to queues 410, 412, 414, . Those of skill in the art will recognize other functions of the agents 402, 404, 406, 408.

큐들(410, 412, 414, 416)은 일반적으로 명령을 수신하며 고체 상태 저장 뱅크들(214)에 전송되는 것이 요구될 때까지 명령을 저장한다. 일반적인 실시예에서, 큐들(410, 412, 414, 416)은 선입선출("FIFO") 레지스터들이거나 FIFO로 작동하는 유사한 소자다. 다른 실시예에서, 큐들(410, 412, 414, 416)은 데이터, 중요성의 순서, 또는 다른 기준과 일치하는 순서로 명령을 저장한다.Cues 410, 412, 414, and 416 typically receive instructions and store instructions until it is required to be transmitted to solid state storage banks 214. In a typical embodiment, the queues 410, 412, 414, and 416 are first-in, first-out ("FIFO") registers or similar devices that operate in a FIFO. In another embodiment, the queues 410, 412, 414, and 416 store instructions in order of matching data, order of importance, or other criteria.

뱅크 컨트롤러들(418)은 일반적으로 큐들(410, 412, 414, 416)로부터 명령을 수신하며 적당한 하위 명령을 발생시킨다. 예를 들면, 뱅크-0 기록 큐(412a)는 한 페이지의 데이터 패킷들을 뱅크-0(214a)에 기록하기 위해 명령을 수신할 수 있다. 뱅크-0 컨트롤러(418a)는 적당한 시간에 기록 명령을 수신할 수 있으며 뱅크-0(214a)의 페이지에 기록되기 위해 기록 버퍼(320)에 저장된 각각의 데이터 패킷에 대해 하나 이상의 기록 하위 명령을 발생시킬 수 있다. 예를 들면, 뱅크-0 컨트롤러(418a)는 뱅크-0(214a)와 고체 상태 저장 어레이(216)의 상태를 확인하며, 하나 이상의 데이터 패킷들을 기록하기 위한 적당한 위치를 선택하며, 고체 상태 저장 메모리 어레이(216) 내에서 입력 버퍼들을 청소하며, 하나 이상의 데이터 패킷들을 입력 버퍼들로 이동시키며, 입력 버퍼들을 선택된 위치로 프로그래밍하며, 데이터가 올바르게 프로그래밍되었는지를 검증하며, 만약 프로그램 실패가 일어난다면 마스터 컨트롤러(224)를 차단하는 것, 동일한 물리적 위치에 기록을 다시 시도하는 것, 및 상이한 물리적 위치에 기록을 다시 시도하는 것 중의 하나 이상을 행하기 위해 명령을 발생시킬 수 있다. 더구나, 예시적인 기록 명령과 함께, 저장 버스 컨트롤러(348)는 하나 이상의 명령이 저장 I/O 버스들(210a)를 위해 제1 물리적 어드레스에 맵핑되며, 저장 I/O 버스들(210b)를 위해 제2 물리적 어드레스에 맵핑된 명령의 논리 어드레스를 가지는 각각의 저장 I/O 버스들(210a-n)에 증가되는 것, 및 아래에 더 설명되는 기타 등등을 야기할 것이다.The bank controllers 418 generally receive instructions from the queues 410, 412, 414, 416 and generate appropriate sub-instructions. For example, the bank-0 write queue 412a may receive instructions to write one page of data packets to the bank-0 214a. The bank-0 controller 418a may receive one or more write sub-commands for each data packet stored in the write buffer 320 to be able to receive the write command at the appropriate time and to be written to the page of the bank-0 214a . For example, the bank-0 controller 418a checks the status of the bank-0 214a and the solid state storage array 216, selects a suitable location for recording one or more data packets, To clean input buffers in array 216, to move one or more data packets to input buffers, to program input buffers to selected locations, to verify that data has been programmed correctly, and if a program failure occurs, Intercepting the physical location 224, retrying the write to the same physical location, and retrying the write to a different physical location. Furthermore, along with the exemplary write command, the storage bus controller 348 is configured such that one or more instructions are mapped to a first physical address for storage I / O buses 210a, and for storage I / O buses 210b Increasing to each storage I / O buses 210a-n having the logical address of the instruction mapped to the second physical address, and the like as further described below.

일반적으로, 버스 중재기(420)는 뱅크 컨트롤러들(418) 중에서 선택되며 뱅크 컨트롤러들(418) 내에서 출력 큐들로부터 하위 명령을 끌어내며 뱅크들(214)의 성능을 최적화하는 시퀀스로 저장 버스 컨트롤러(348)에 이들을 포워딩한다. 다른 실시예에서, 버스 중재기(420)는 높은 레벨의 인터럽트에 응답할 수 있으며 통상의 선택 기준을 변경할 수 있다. 다른 실시예에서, 마스터 컨트롤러(224)는 제어 및 상태 레지스터들(340)을 통해 버스 중재기(420)를 제어할 수 있다. 본 기술분야의 기술자는 버스 중재기(420)가 뱅크 컨트롤러들(418)에서부터 고체 상태 저장 매체(110)까지 명령의 시퀀스를 제어하며 인터리브할 수 있는 다른 수단을 인지할 것이다.In general, the bus arbiter 420 selects one of the bank controllers 418 and fetches the sub-instructions from the output queues within the bank controllers 418 and transfers them to the storage bus controller 418 in a sequence that optimizes the performance of the banks 214. [ RTI ID = 0.0 > 348 < / RTI > In another embodiment, the bus arbiter 420 can respond to high level interrupts and change the normal selection criteria. In another embodiment, the master controller 224 may control the bus arbiter 420 via the control and status registers 340. Those skilled in the art will appreciate other means by which the bus arbiter 420 may control and interleave sequences of instructions from the bank controllers 418 to the solid state storage medium 110.

버스 중재기(420)는 일반적으로 적당한 명령의 선택, 및 뱅크 컨트롤러들(418)로부터 명령 타입이 요구될 때 상응하는 데이터를 조정하며, 저장 버스 컨트롤러(348)에 명령과 데이터를 전송한다. 버스 중재기(420)는 일반적으로 또한 적당한 뱅크(214)를 선택하기 위해 저장 제어 버스(212)에 명령을 전송한다. 플래시 메모리 또는 비동시성 양방향 직렬 저장 I/O 버스(210)를 가지는 다른 고체 상태 저장 매체(110)의 경우에 대해, 단지 하나의 명령(제어 정보) 또는 세트의 데이터가 한번에 전송될 수 있다. 예를 들면, 기록 명령 또는 데이터가 저장 I/O 버스(210)에 있는 고체 상태 저장 매체(110)에 전송될 때, 판독 명령, 판독되는 데이터, 소거 명령, 관리 명령, 또는 다른 상태 명령이 저장 I/O 버스(210)에 전송될 수 없다. 예를 들면, 데이터가 저장 I/O 버스(210)로부터 판독되는 중일 때, 데이터는 고체 상태 저장 매체(110)에 기록될 수 없다.The bus arbiter 420 generally coordinates the selection of the appropriate command and the corresponding data when the command type is requested from the bank controllers 418 and sends commands and data to the storage bus controller 348. The bus arbiter 420 generally also sends a command to the storage control bus 212 to select the appropriate bank 214. For the case of another solid state storage medium 110 having a flash memory or asynchronous bidirectional serial storage I / O bus 210, only one instruction (control information) or set of data can be transmitted at a time. For example, when a write command or data is transferred to solid state storage medium 110 on storage I / O bus 210, a read command, read data, erase command, management command, It can not be transmitted to the I / O bus 210. For example, when data is being read from the storage I / O bus 210, the data can not be written to the solid state storage medium 110.

예를 들면, 뱅크-0에 기록 작동 중에 버스 중재기(420)는 저장 버스 컨트롤러(348)가 다음의 시퀀스를 실행하는 것을 야기하는 이의 큐의 상부에 기록 명령 또는 시리즈의 기록 하위 명령을 가질 수 있는 뱅크-0 컨트롤러(418a)를 선택한다. 버스 중재기(420)는 저장 제어 버스(212)를 통해 뱅크-0(214a)를 선택하며, 뱅크-0(214a)과 관련된 고체 상태 저장 소자들(216, 218, 220)의 입력 버퍼들을 청소하는 명령을 전송하며, 뱅크-0(214a)와 관련된 고체 상태 저장 소자들(216, 218, 220)의 상태를 확인하는 명령을 전송함으로써 기록 명령을 구성하는 저장 버스 컨트롤러(348)에 기록 명령을 포워딩한다. 저장 버스 컨트롤러(348)는 그런 다음에 논리 소거 블록 어드레스로부터 맵핑될 때 각각 개개의 물리적 소거 고체 상태 저장 소자(216a-m)에 대한 논리 소거 블록의 어드레스를 포함하는 물리적 어드레스를 가지는, 저장 I/O 버스(210)에 기록 하위 명령을 전송한다. 저장 버스 컨트롤러(348)는 그런 다음에 MUX(350)를 통해 저장 I/O 버스(210)에 기록 동기화 버퍼(308)를 통해 기록 버퍼(320)를 멀티플렉싱하며 적당한 페이지에 기록 데이터를 스트리밍한다. 페이지가 채워질 때, 그런 다음에 저장 버스 컨트롤러(348)는 뱅크-0(214a)과 관련된 고체 상태 저장 소자들(216a-m)이 고체 상태 저장 소자들(216a-m) 내에 메모리 셀들에 입력 버퍼를 프로그래밍하는 것을 야기한다. 마지막으로, 저장 버스 컨트롤러(348)는 페이지가 올바르게 프로그래밍되었다는 것을 보장하기 위해 상태를 확인한다.For example, during a write operation to bank-0, bus arbiter 420 may have a write command or series write sub-command at the top of its queue causing storage bus controller 348 to execute the following sequence 0.0 > 418a < / RTI > Bus arbiter 420 selects bank-0 214a via storage control bus 212 and clears input buffers of solid state storage elements 216, 218, 220 associated with bank- And sends a write command to the storage bus controller 348 that constitutes the write command by sending a command to acknowledge the state of the solid state storage elements 216, 218, 220 associated with the bank-0 214a Forward. The storage bus controller 348 is then coupled to the storage I / O bus 348 having a physical address including the address of a logical erase block for each physical erased solid state storage element 216a-m, respectively, when mapped from a logical erase block address. O bus < RTI ID = 0.0 > 210 < / RTI > The storage bus controller 348 then multiplexes the write buffer 320 through the write sync buffer 308 to the storage I / O bus 210 via the MUX 350 and streams the write data to the appropriate page. When the page is filled, then the storage bus controller 348 causes the solid state storage elements 216a-m associated with the bank-0 214a to be placed in the memory cells in the solid state storage elements 216a- Lt; / RTI > Finally, the storage bus controller 348 checks the status to ensure that the page has been programmed correctly.

판독 작동은 위의 기록 예와 유사하다. 판독 작동 중에, 일반적으로 버스 중재기(420), 또는 뱅크 인터리브 컨트롤러(344)의 다른 소자는 데이터 및 이에 상응하는 상태 정보를 수신하며 판독 데이터 파이프라인(108)에 데이터를 전송하며 동시에 제어 및 상태 레지스터들(340)로 상태 정보를 전송한다. 일반적으로, 버스 중재기(420)로부터 저장 버스 컨트롤러(348)까지 포워딩된 판독 데이터 명령은 MUX(350)가 판독 데이터 파이프라인(108)으로 저장 I/O 버스(210)에 대한 판독 데이터를 게이트로 통제하는 것을 야기하며 상태 MUX(422)를 통해 적당한 제어 및 상태 레지스터들(340)에 상태 정보를 전송할 것이다.The read operation is similar to the above-described recording example. During a read operation, bus interposer 420, or other element of bank interleave controller 344, typically receives data and corresponding status information and transmits data to read data pipeline 108, And transfers the status information to the registers 340. In general, a read data command forwarded from the bus arbiter 420 to the storage bus controller 348 causes the MUX 350 to read the read data for the I / O bus 210 into the read data pipeline 108. [ And will send state information to the appropriate control and status registers 340 via state MUX 422. [

버스 중재기(420)는 다양한 명령 타입들과 데이터 접속 모드들을 조정하며 그 결과 단지 적합한 명령 타입 또는 이에 상응하는 데이터만이 어느 주어진 시간에 버스에 탑재된다. 만약 버스 중재기(420)가 기록 명령, 및 고체 상태 저장 매체(110)에 기록되는 기록 하위 명령과 이에 상응하는 데이터를 선택하였다면, 버스 중재기(420)는 저장 I/O 버스(210)에 대한 다른 명령 타입을 허용하지 않을 것이다. 유리하게도, 버스 중재기(420)는 버스들의 아이들링 시간을 최소화하거나 제거하는 목적과 함께 버스에 대한 다양한 명령의 실행을 조정하기 위해 뱅크(214) 상태와 관련하여 수신된 상태 정보와 함께 예상된 명령 실행 시간과 같은 타이밍 정보를 사용한다.Bus arbiter 420 coordinates various command types and data connection modes so that only the appropriate command type or equivalent data is loaded on the bus at any given time. If the bus arbiter 420 selects a write command and the write subcommand and corresponding data to be written to the solid state storage medium 110, the bus arbiter 420 may be coupled to the storage I / O bus 210 It will not allow other command types for. Advantageously, the bus arbiter 420 is operable to adjust the execution of various commands to the bus, with the aim of minimizing or eliminating the idle time of the buses, Timing information such as execution time is used.

버스 중재기(420)를 통해 마스터 컨트롤러(224)는 일반적으로 상태 정보와 함께, 큐들(410, 412, 414, 416)에 저장된 명령의 예상 완료 시간을 사용하며, 그 결과 명령과 관련된 하위 명령이 하나의 뱅크(214a)에 대해 실행되는 중일 때, 다른 명령의 다른 하위 명령이 다른 뱅크들(214b-n)에 대해 실행된다. 하나의 명령이 뱅크(214a)에 대해 완전히 실행될 때, 버스 중재기(420)는 뱅크(214a)에 다른 명령을 지시한다. 버스 중재기(420)는 또한 큐들(410, 412, 414, 416)에 저장되지 않은 다른 명령과 함께 큐들(410, 412, 414, 416)에 저장된 명령을 조정할 수 있다.The master controller 224 via the bus arbiter 420 generally uses the expected completion time of the instructions stored in the queues 410, 412, 414 and 416, together with the status information, When being executed for one bank 214a, another sub-command of another instruction is executed for the other banks 214b-n. When one instruction is fully executed for the bank 214a, the bus arbiter 420 directs another instruction to the bank 214a. The bus arbiter 420 may also adjust commands stored in the queues 410, 412, 414, and 416 with other commands not stored in the queues 410, 412, 414,

예를 들면, 소거 명령은 고체 상태 저장 매체(110) 내에 있는 하나의 그룹의 소거 블록들을 소거하기 위해 외부로 전송될 수 있다. 소거 명령은 기록 또는 판독 명령보다 10 내지 1000배나 더 많은 실행하는 시간이 걸릴 수 있거나 프로그램 명령보다 10 내지 100배 더 많은 실행하는 시간이 걸릴 수 있다. N 뱅크들(214)에 대해, 뱅크 인터리브 컨트롤러(244)는 뱅크(214a)의 가상 소거 블록을 각각 소거하기 위해 소거 명령을 N 명령들로 분할할 수 있다. 뱅크-0(214a)가 소거 명령을 실행하는 동안, 버스 중재기(420)는 다른 뱅크들(214b-n)에 대한 실행을 위한 다른 명령을 선택할 수 있다. 버스 중재기(420)는 또한 버스들 사이에서 명령 실행을 조정하기 위해 저장 버스 컨트롤러(348), 마스터 컨트롤러(224) 등과 같은 다른 소자들과 함께 작동할 수 있다. 버스 중재기(420), 뱅크 컨트롤러들(418), 큐들(410, 412, 414, 416), 및 뱅크 인터리브 컨트롤러(344)의 에이전트들(402, 404, 406, 408)를 사용하여 명령의 실행을 조정하는 것은 뱅크 인터리브 기능이 없는 다른 고체 상태 저장 시스템들에 걸쳐 성능을 극적으로 증가시킬 수 있다.For example, the erase command may be sent externally to erase a group of erase blocks in the solid state storage medium 110. For example, The erase command may take 10 to 1000 times more execution time than the write or read command, or it may take 10 to 100 times more execution time than the program command. For N banks 214, the bank interleave controller 244 may divide the erase command into N instructions to erase the virtual erase blocks of the bank 214a, respectively. While bank-0 214a is executing an erase command, bus arbiter 420 may select another command for execution on other banks 214b-n. Bus arbiter 420 may also operate in conjunction with other elements such as storage bus controller 348, master controller 224, etc. to coordinate instruction execution between the buses. Execution of instructions using bus arbiter 420, bank controllers 418, queues 410, 412, 414 and 416, and agents 402, 404, 406 and 408 of bank interleave controller 344 Can dramatically increase performance across other solid state storage systems without bank interleaving.

일 실시예에서, 고체 상태 컨트롤러(104)는 고체 상태 저장 매체(110)의 모든 저장 소자들(216, 218, 220)을 다루는 하나의 뱅크 인터리브 컨트롤러(344)를 포함한다. 다른 실시예에서, 고체 상태 컨트롤러(104)는 각각의 칼럼의 저장 소자들(216a-m, 218a-m, 220a-m)을 위한 뱅크 인터리브 컨트롤러(344)를 포함한다. 예를 들면, 하나의 뱅크 인터리브 컨트롤러(344)는 하나의 칼럼의 저장 소자들(SSS 0.0-SSS N.0 216a, 218a,... 220a)을 다루며, 제2 뱅크 인터리브 컨트롤러(344)는 제2 칼럼의 저장 소자들(SSS 0.1-SSS N.1 216b, 218b,... 220b) 등을 다룬다.In one embodiment, the solid state controller 104 includes one bank interleave controller 344 that handles all storage elements 216, 218, 220 of the solid state storage medium 110. In another embodiment, the solid state controller 104 includes a bank interleave controller 344 for each column of storage elements 216a-m, 218a-m, 220a-m. For example, one bank interleave controller 344 handles one column of storage elements (SSS 0.0-SSS N.0.02 216a, 218a, ... 220a), and the second bank interleave controller 344 2 columns of storage elements (SSS 0.1-SSS N.1 216b, 218b, ... 220b).

저장 특정 소자들Storage specific elements

고체 상태 저장 컨트롤러(104)는 고체 상태 저장 매체(110)로부터 전송되며 수신된 명령과 상태 메시지를 버퍼링하는 동기화 버퍼(346)를 포함한다. 동기화 버퍼(346)는 고체 상태 저장 클럭 도메인과 로컬 버스 클럭 도메인 사이의 경계에 위치하며 클럭 도메인 차이를 평가하기 위해 버퍼링을 제공한다. 동기화 버퍼(346), 기록 동기화 버퍼(308), 및 판독 동기화 버퍼(328)는 독립적일 수 있거나 데이터, 명령, 상태 메시지들 등을 버퍼링하기 위해 함께 작동할 수 있다. 일 실시예에서, 동기화 버퍼(346)는 클럭 도메인들을 가로지는 가장 작은 수의 신호가 있는 곳에 위치한다. 본 기술분야의 기술자는 몇몇 양상의 디자인 실행을 최적화하기 위해 클럭 도메인들 사이의 동기화가 고체 상태 저장 장치(102) 내의 다른 위치에 임의로 이동될 수 있다는 것을 인지할 것이다.The solid state storage controller 104 includes a synchronization buffer 346 that is transmitted from the solid state storage medium 110 and buffers received commands and status messages. The synchronization buffer 346 is located at the boundary between the solid state storage clock domain and the local bus clock domain and provides buffering for evaluating the clock domain difference. The synchronization buffer 346, the write synchronization buffer 308, and the read synchronization buffer 328 may be independent or may work together to buffer data, commands, status messages, and the like. In one embodiment, the synchronization buffer 346 is located where there are the smallest number of signals traversing the clock domains. Those skilled in the art will recognize that synchronization between clock domains may be arbitrarily shifted to other locations within the solid state storage device 102 to optimize the design performance of some aspects.

고체 상태 저장 컨트롤러(104)는 고체 상태 저장 매체(110)에 전송되며 이로부터 판독된 데이터에 대한 명령 및 고체 상태 저장 매체(110)의 타입에 근거하여 고체 상태 저장 매체(110)로부터 수신된 상태 메시지들을 해석하며 변환하는 저장 버스 컨트롤러(348)를 포함한다. 예를 들면, 저장 버스 컨트롤러(348)는 상이한 타입의 저장장치에 대한 상이한 타이밍 요건, 상이한 수행 특성을 가지는 저장장치, 상이한 제조업자들로부터 나온 저장장치 등을 가질 수 있다. 저장 버스 컨트롤러(348)는 또한 제어 명령을 저장 제어 버스(212)에 전송한다.The solid state storage controller 104 is coupled to the solid state storage medium 110 and receives instructions from the solid state storage medium 110 to determine the states received from the solid state storage medium 110 based on the instructions for the data read therefrom and the type of solid state storage medium & And a storage bus controller 348 that interprets and translates the messages. For example, the storage bus controller 348 may have different timing requirements for different types of storage devices, storage devices having different performance characteristics, storage devices from different manufacturers, and the like. The storage bus controller 348 also sends control commands to the storage control bus 212.

일 실시예에서, 고체 상태 저장 컨트롤러(104)는 하나의 배열의 멀티플렉서들(350a-n)을 포함하는 MUX(350)를 포함하며 여기서 각각의 멀티플렉서는 고체 상태 저장 어레이(216)에 하나의 열로 구현된다. 예를 들면, 멀티플렉서(350a)는 고체 상태 저장 소자들(216a, 218a, 220a)과 연결된다. MUX(350)는 기록 데이터 파이프라인(106)으로부터 데이터 및 저장 I/O 버스(210)를 통해 저장 버스 컨트롤러(348)에서부터 고체 상태 저장 매체(110)까지의 명령을 라우팅하며 저장 I/O 버스(210)를 통해 고체 상태 저장 매체(110)로부터 판독 데이터 파이프라인(108)와 저장 버스 컨트롤러(348), 동기화 버퍼(346), 및 뱅크 인터리브 컨트롤러(344)를 통해 제어 및 상태 레지스터들(340)까지 데이터와 상태 메시지들을 라우팅한다.In one embodiment, the solid state storage controller 104 includes a MUX 350 that includes one array of multiplexers 350a-n, wherein each multiplexer is coupled to the solid state storage array 216 in one column . For example, the multiplexer 350a is coupled to the solid state storage elements 216a, 218a, and 220a. The MUX 350 routes commands from the storage bus controller 348 to the solid state storage medium 110 via the data and storage I / O buses 210 from the write data pipeline 106, Via the read data pipeline 108 and the storage bus controller 348, the synchronization buffer 346, and the bank interleave controller 344 from the solid state storage medium 110 via the controller 210 and the control and status registers 340 RTI ID = 0.0 > and / or < / RTI >

일 실시예에서, 고체 상태 저장 컨트롤러(104)는 각각의 칼럼의 고체 상태 조장 소자들(예를 들면 SSS 0.0 216a, SSS 1.0 218a, SSS N.0 220a)에 대한 MUX(350)를 포함한다. MUX(350)는 기록 데이터 파이프라인(106)으로부터 나온 데이터와 저장 I/O 버스(210)를 통해 고체 상태 저장 매체(110)에 전송된 명령을 결합시키며 명령으로부터 판독 데이터 파이프라인(108)에 의해 프로세싱되는 데이터를 분리시킨다. 기록 버퍼(320)에 저장된 패킷들은 각각의 칼럼의 고체 상태 저장 소자들(SSS 0.x to SSS N.x 216, 218, 220)에 대한 MUX(350)로 각각의 칼럼의 고체 상태 저장 소자들(SSS 0.x to SSS N.x 216, 218, 220)에 대한 기록 동기화 버퍼(308)를 통해 기록 버퍼(320)으로부터 버스들에 대해 지시된다. 명령과 판독 데이터는 저장 I/O 버스(210)로부터 MUX들(350)에 의해 수신된다. MUX들(350)은 또한 저장 버스 컨트롤러(348)에 대한 상태 메시지들을 지시한다.In one embodiment, the solid state storage controller 104 includes a MUX 350 for each column of solid state promoters (e.g., SSS 0.0 216a, SSS 1.0 218a, SSS N.0220a). The MUX 350 combines the data from the write data pipeline 106 with the instructions sent to the solid state storage medium 110 via the storage I / O bus 210 and sends the read data to the read data pipeline 108 To separate the data being processed. The packets stored in the write buffer 320 are transferred to the MUX 350 for each column of solid state storage elements SSS 0.x to SSS Nx 216,218, 0.x to SSS Nx 216, 218, and 220, respectively, from the write buffer 320 via the write synchronization buffer 308. The instruction and the read data are received by the MUXes 350 from the storage I / O bus 210. The MUXs 350 also indicate status messages to the storage bus controller 348. [

저장 버스 컨트롤러(348)는 맵핑 모듈(424)을 포함한다. 맵핑 모듈(424)은 소거 블록의 하나 이상의 물리적 어드레스에 대한 소거 블록의 논리 어드레스를 맵핑한다. 예를 들면, 뱅크(214a)당 하나의 배열의 20개의 저장 소자들(예를 들면 SSS 0.0 내지 SSS 0.M 216)을 가지는 고체 상태 저장 매체(110)는 소거 블록의 20개의 물리적 어드레스, 저장 소자당 하나의 물리적 어드레스에 대해 맵핑된 특정 소거 블록에 대한 논리 어드레스를 가질 수 있다. 저장 소자들이 병렬로 접속되기 때문에, 하나의 칼럼의 저장 소자들(216a, 218a, 220a)에서 각각의 저장 소자의 동일한 위치에 있는 소거 블록들은 물리적 어드레스를 공유할 것이다. 열을 이루는 모든 소거 블록(예를 들면 저장 소자들(SSS 0.0, 1.0,... N.0 216a, 218a, 220a)) 대신에 (예를 들면 저장 소자(SSS 0.0 216a)에서)하나의 소거 블록을 선택하기 위해, 하나의 뱅크(이런 경우에 뱅크-0(214a))가 선택된다.The storage bus controller 348 includes a mapping module 424. The mapping module 424 maps the logical address of the erase block to one or more physical addresses of the erase block. For example, a solid state storage medium 110 having 20 storage elements (e.g., SSS 0.0 to SSS 0.M 216) in one arrangement per bank 214a may be configured to store 20 physical addresses of the erase block, It may have a logical address for a specific erase block mapped to one physical address per device. Because the storage elements are connected in parallel, the erase blocks in the same location of each storage element in the storage elements 216a, 218a, 220a of one column will share the physical address. (For example, in the storage element (SSS 0.0 216a)) instead of all erase blocks in the row (e.g., storage elements SSS 0.0, 1.0, ... N.0 216a, 218a, 220a) To select a block, one bank (in this case bank-0 214a) is selected.

만약 하나의 소거 블록이 손상을 입거나 접속이 불가능하다면, 맵핑이 다른 소거 블록을 맵핑하기 위해 변경될 수 있기 때문에 소거 블록들에 대한 이런 논리 대 물리적 맵핑이 유리하다. 이는 하나의 소자의 소거 블록에 결함이 있을 때 전체 가상 소거 블록을 상실하는 손실을 경감시킨다. 리맵핑 모듈(430)은 소거 블록의 논리 어드레스의 맵핑을 (이런 배열의 저장 소자들에 걸쳐 확산되는) 가상 소거 블록의 하나 이상의 물리적 어드레스로 변경시킨다. 예를 들면, 가상 소거 블록(1)은 저장 소자(SSS 0.0 216a)의 소거 블록(1)까지, 저장 소자(SSS 0.1 216b)의 소거 블록(1)까지, ..., 및 저장 소자(0.M 216m)까지 맵핑될 수 있으며, 가상 소거 블록(2)은 저장 소자(SSS 1.0 218a)의 소거 블록(2)까지, 저장 소자(SSS 1.1 218b)의 소거 블록(2)까지, ..., 저장 소자(1.M 218m) 등까지 맵핑될 수 있다. 또는, 가상 소거 블록(1)은 저장 소자(N.M 220m)의 소거 블록(1)까지 이런 배열로 각각의 저장 소자에 대해, 가상 소거 블록(1)이 저장 소자(SSS 0.0 216a)의 소거 블록(1) 내지 저장 소자(SSS 0.1 216b)의 소거 블록(1) 내지 저장 소자(0.M 216m), 및 저장 소자(SSS 1.0 218a)의 소거 블록(1) 내지 저장 소자(SSS 1.1 218b)의 소거 블록(1), ..., 및 저장 소자(1.M 218m)까지를 포함할 정도로 하나의 배열의 각각의 저장 소자로부터 하나의 소거 블록까지 맵핑될 수 있다.If one erase block is damaged or unreachable, this logical to physical mapping of erase blocks is advantageous because the mapping can be changed to map another erase block. This alleviates loss of the entire virtual erase block when there is a defect in the erase block of one device. The remapping module 430 changes the mapping of the logical address of the erase block to one or more physical addresses of the virtual erase block (spread across storage elements of such arrangement). For example, the virtual erase block 1 is connected to the erase block 1 of the storage element (SSS 0.06 216a), to the erase block 1 of the storage element (SSS 0.1 216b), ..., and to the storage element 0 And the virtual erase block 2 may be mapped to the erase block 2 of the storage element SSS 1.0 218a, the erase block 2 of the storage element SSS 1.1 218b, , The storage element (1.M 218m), and the like. Or for each storage element in this arrangement up to the erase block 1 of the storage element NM 220m, the virtual erase block 1 is connected to the erase block of the storage element (SSS 0.06 02a) (1) to the storage element (SSS 0.1 216b) of the storage element (SSS 0.1 216b) and the storage element (SSS 1.0 218a) of the storage element May be mapped from each storage element of one array to one erase block so as to include up to block 1, ..., and storage element 1.M 218m.

만약 저장 소자(SSS0.0 216a)의 소거 블록(1)이 손상되거나, 마모 등에 기인한 에러들을 경험하거나, 또는 몇몇 이류로 사용될 수 없다면, 리맵핑 모듈(430)은 가상 소거 블록(1)의 소거 블록(1)에 포인팅된 논리 어드레스에 대한 논리 대 물리적 맵핑을 변경할 수 있다. 만약 저장 소자(SSS 0.0 216a)의 예비 소거 블록(이를 소거 블록(221)로 부름)이 이용 가능하며 현재 맵핑되지 않았다면, 리맵핑 모듈(430)은 저장 소자(SSS 0.1 216b)의 소거 블록(1), 저장 소자(SSS 0.2)(도시되지 않음)의 소거 블록(1), ..., 및 저장 소자(0.M 216m)를 포인팅하기 위해 가상 소거 블록(1)의 맵핑을 변경할 수 있다. 맵핑 모듈(424) 또는 리맵핑 모듈(430)은 규정된 순서(가상 소거 블록(1) 내지 저장 소자들의 소거 블록(1), 가상 소거 블록(2) 내지 저장 소자들의 소거 블록(2) 등)로 소거 블록들을 맵핑할 수 있거나 몇몇 다른 기준에 근거하여 다른 순서로 저장 소자들(216, 218, 220)의 소거 블록들을 맵핑할 수 있다.If the erase block 1 of the storage element SSS0.02 216a experiences damage due to damage, wear or the like, or can not be used with some adition, The logical to physical mapping for the logical address pointed to the erase block 1 can be changed. If the pre-erase block (referred to as erase block 221) of the storage element (SSS 0.0 216a) is available and not currently mapped, then the remapping module 430 is in the erase block 1 ), The erase block 1 of the storage element SSS 0.2 (not shown), ..., and the storage element 0.M 216m. The mapping module 424 or the remapping module 430 may be configured to perform a predetermined procedure such as erasure block 1, virtual erase block 2, storage block erase block 2, And may map erase blocks of storage elements 216, 218, 220 in a different order based on some other criteria.

일 실시예에서, 소거 블록들은 접속 시간으로 그룹을 이룰 수 있다. 특정 소거 블록들의 페이지들로 데이터를 프로그래밍하는 것(기록하는 것)과 같은 명령을 실행하는 시간을 의미하는, 접속 시간에 의한 그룹핑은 명령 완료를 균일하게 할 수 있으며 그 결과 가상 소거 블록의 소거 블록들을 통해 실행된 명령은 가장 늦은 소거 블록에 의해 제한되지 않는다. 다른 실시예들에서, 소거 블록들은 마모 수준, 건전성, 등에 의해 그룹을 이룰 수 있다. 본 기술분야의 기술자는 소거 블록들을 맵핑하거나 리맵핑할 때 고려되는 다른 요소들을 인지할 것이다.In one embodiment, erase blocks may be grouped into connection times. Grouping by connection time, which means the time to execute an instruction, such as programming (writing) data into pages of specific erase blocks, can make the instruction completion even, and as a result, Are not limited by the latest erase block. In other embodiments, erase blocks may be grouped by wear level, soundness, and the like. Those of skill in the art will recognize other factors to consider when mapping or remapping erase blocks.

일 실시예에서, 저장 버스 컨트롤러(348)는 고체 상태 저장 매체(110)로부터 나온 상태 메시지들을 수신하며 상태 메시지들을 상태 MUX(422)로 전송하는 상태 캡처 모듈(426)을 포함한다. 다른 실시예에서, 고체 상태 저장 매체(110)가 플래시 메모리일 때, 저장 버스 컨트롤러(348)는 NAND 버스 컨트롤러(428)를 포함한다. NAND 버스 컨트롤러(428)는 판독 및 기록 데이터 파이프라인들(106, 108)로부터 나온 명령을 고체 상태 저장 매체(110)의 올바른 위치에 지시하며, 플래시 메모리의 특징 등에 근거하여 명령 실행의 타이밍을 조정한다. 만약 고체 상태 저장 매체(110)가 다른 고체 상태 저장 타입이라면, NAND 버스 컨트롤러(428)는 저장 타입이 특정한 버스 컨트롤러에 의해 대체될 수 있다. 본 기술분야의 기술자는 NAND 버스 컨트롤러(428)의 다른 기능을 인지할 것이다.In one embodiment, the storage bus controller 348 includes a status capture module 426 that receives status messages from the solid state storage medium 110 and sends status messages to the status MUX 422. In another embodiment, the storage bus controller 348 includes a NAND bus controller 428 when the solid state storage medium 110 is a flash memory. The NAND bus controller 428 directs instructions from the read and write data pipelines 106 and 108 to the correct location of the solid state storage medium 110 and adjusts the timing of command execution based on features of the flash memory, do. If the solid state storage medium 110 is another solid state storage type, the NAND bus controller 428 may be replaced by a particular bus controller for the storage type. Those skilled in the art will recognize other functions of the NAND bus controller 428.

정전 관리Power Outage Management

도 5a는 전력 관리 장치(122)의 일 실시예를 도시한다. 일 실시예에서, 전력 관리 장치(122)는 모니터 모듈(510) 및 전력 손실 모듈(520)을 포함할 수 있다. 다른 실시예에서, 전력 손실 모듈(520)은 식별 모듈(512), 종료 모듈(514), 손상 모듈(516), 및 완성 모듈(518)을 포함한다.FIG. 5A shows an embodiment of a power management device 122. FIG. In one embodiment, the power management device 122 may include a monitor module 510 and a power loss module 520. In another embodiment, the power loss module 520 includes an identification module 512, a termination module 514, a corruption module 516, and a completion module 518.

모니터 모듈(510)은, 일 실시예에서, 제1 전력 연결부(130)를 통해 미리 결정된 한계치 이상의 전력을 공급하지 못하는 제1 전원에 응답하여 비휘발성 저장 장치(102)에서 전력 손실 모드를 시작한다. 전력 손실 모드는, 일 실시예에서, 전력 관리 장치(122)가 제2 전력 공급부(124)에 의해 제공되는 전력 유지 시간 내에서 중지시키기 위해 저장 장치(102)를 준비하는 작동의 모드이다. 전력 손실 모듈(520)은, 일 실시예에서, 필수적인 프로세스 내의 작동들이 실행되는 것을 허용하기 위해 전력 손실 모드 중에 비휘발성 저장 장치(102)에 대한 프로세스 내의 작동의 실행을 조절한다.The monitor module 510, in one embodiment, initiates a power loss mode in the non-volatile storage 102 in response to a first power source that fails to provide power beyond a predetermined threshold via the first power connection 130 . The power loss mode is a mode of operation in which, in one embodiment, the power management device 122 prepares the storage device 102 to pause within the power hold time provided by the second power supply 124. [ The power loss module 520, in one embodiment, controls the execution of operations within the process for the non-volatile storage device 102 during the power loss mode to allow operations within the necessary processes to be performed.

일 실시예에서, 미리 결정된 한계치 이상의 전력은 저장 장치(102)에 충분하다. 충분한 전력은, 일 실시예에서, 적절히 작동하기 위해 저장 장치(102)에 대한 요건을 충족시키는 전력이다. 미리 결정된 한계치는, 다른 실시예에서, 저장 장치(102)에 대해 불충분한 전력 레벨로 설정되거나 그 이상이다. 불충분한 전력은 저장 장치(102)에 대한 요건을 충족하지 않는 전력이다. DC가 예상될 때 높은 AC 또는 고주파 성분 및 너무 낮은 전압 또는 전류를 가지는 전력은 불충분한 전력의 예이다. 위에 설명된 바와 같이, 일 실시예에서, 저장 장치(102)는 제1 전원으로부터 나온 전력이 미리 결정된 한계치의 아래로 떨어질 때 제2 전력 공급부(124)로부터 전력을 자동으로 받아들이거나 그렇지 않으면 끌어내도록 구성된다. 미리 결정된 한계치는, 일 실시예에서, 제2 전원 공급부(124)와 이에 상응하는 회로들의 특성에 의해 결정된 공학적인 한계치다.In one embodiment, power above a predetermined threshold is sufficient for the storage device 102. Sufficient power is, in one embodiment, the power that meets the requirements for storage device 102 to operate properly. The predetermined threshold is, in other embodiments, set to an insufficient power level for the storage device 102 or higher. Insufficient power is power that does not meet the requirements for storage device 102. When DC is expected, high AC or high frequency components and power with too low a voltage or current are examples of insufficient power. As described above, in one embodiment, the storage device 102 is configured to automatically receive or otherwise draw power from the second power supply 124 when the power from the first power source falls below a predetermined threshold . The predetermined threshold is, in one embodiment, the engineering limit determined by the characteristics of the second power supply 124 and corresponding circuits.

제1 전원은, 일 실시예에서, 비휘발성 저장 장치(102)가 통상의 작동 중에 사용하는 전력의 발생원이며 이는 통상의 작동 중에 예기치 않게 중단되지 않는 전력의 대체로 연속적인 공급을 제공한다. 예를 들면, 일반적인 실시예들에서, 저장 장치(102)가 부착되는 컴퓨터 시스템(즉, 클라이언트(114) 또는 이와 유사한 것)은 제1 전원이며 PCI, PCIe, AGP, 또는 이와 유사한 것과 같은 버스 또는 슬롯 연결부를 통해서와 같이 마더보드를 통해, 또는 USB 포트, FireWire 포트, eSATAp 포트, 또는 이와 유사한 것과 같은 외부 포트를 통해 전력을 제공한다. 다른 실시예에서, 제1 전원은 표준 전기 출력이다.The first power source, in one embodiment, is the source of power used by the non-volatile storage device 102 during normal operation, which provides a substantially continuous supply of power that is not unexpectedly uninterrupted during normal operation. For example, in typical embodiments, a computer system (i.e., client 114 or the like) to which storage device 102 is attached is a first power source and may be a bus such as PCI, PCIe, AGP, Through a motherboard, such as through a slot connection, or through an external port, such as a USB port, a FireWire port, an eSATAp port, or the like. In another embodiment, the first power source is a standard electrical output.

일 실시예에서, 모니터 모듈(510)은 제1 전원으로부터 나온 전력이 미리 결정된 한계치의 아래로 떨어질 때를 결정하기 위해 직접적으로 제1 전력 연결부(130)를 모니터링한다. 예를 들면, 모니터 모듈(510)은 비휘발성 저장 장치(102)가 충분한 외부 전력을 받아들이는지를 결정하는데 사용하기 위해 전력 센서, 전류 센서, 및/또는 다른 적당한 센서를 포함할 수 있다. 다른 실시예들에서, 모니터 모듈(510)은 비휘발성 저장 장치(102)가 외부 전력을 잃은 경우에 비휘발성 저장 장치(102)에 있는 다른 소자에 의해 통지될 수 있다.In one embodiment, the monitor module 510 monitors the first power connection 130 directly to determine when the power from the first power source falls below a predetermined threshold. For example, the monitor module 510 may include a power sensor, a current sensor, and / or other suitable sensors for use in determining whether the non-volatile storage device 102 receives sufficient external power. In other embodiments, the monitor module 510 may be informed by other devices in the non-volatile storage device 102 that the non-volatile storage device 102 has lost external power.

일 실시예에서, 모니터 모듈(510)은 제1 전력 연결부(130)로부터 전력의 손실에 응답하는 아날로그 회로를 포함한다. 예를 들면, 제1 전력 연결부(130)와 제2 전력 공급부(124)는 (예를 들면, 제2 전력 공급부(124)가 캐패시커들로 이루어질 때) 제2 전력 공급부(124)가 완전히 충전되게 유지하며 저장 장치(102)에 전력을 공급할 정도로 제1 전력 연결부(130)가 병렬로 배치될 수 있다. 병렬 형태에서, 제2 전력 공급부(124)는 제1 전력 연결부(130)의 고장의 경우에 전력을 제공하는 것을 자연적으로 시작하며, 저장 장치(102)는 제2 전력 공급부(124)로부터 나온 전력을 자연적으로 받아들인다. 모니터 모듈(510) 회로는 또한 제2 전력 공급부(124)로부터 나온 전력이 저장 장치(102)에 전달되는 것을 보장하기 위해 적당한 절연을 제공할 수 있으며; 예를 들면, 다이오드가, 제1 전력 공급부의 고장의 경우에, 제2 전력 공급부(124)로부터 저장 장치(102)까지 이며, 고장난 제1 전력 공급부까지가 아닌 전력 흐름을 보장하는데 사용될 수 있다. 적당한 절연에 대한 방법은 본 발명을 비추어 본 기술분야의 기술자에 의해 이해될 것이다.In one embodiment, the monitor module 510 includes analog circuitry responsive to a loss of power from the first power connection 130. For example, the first power connection 130 and the second power supply 124 may be configured such that the second power supply 124 is fully charged (e.g., when the second power supply 124 is made of capacitors) And the first power connection 130 may be arranged in parallel to supply power to the storage device 102. In a parallel configuration, the second power supply 124 naturally begins to provide power in the event of a failure of the first power connection 130, and the storage device 102 is configured to power up the power from the second power supply 124 Naturally. The monitor module 510 circuitry may also provide appropriate isolation to ensure that power from the second power supply 124 is delivered to the storage device 102; For example, a diode may be used to ensure power flow from the second power supply 124 to the storage device 102, not to the failed first power supply, in the event of a failure of the first power supply. Methods for proper insulation will be understood by those skilled in the art in light of the present invention.

모니터 모듈(510)은, 이와 같은 실시예에서, 전력 분배를 감지하며 이에 응답하여 전력 관리 장치(122)에 다른 모듈들의 작동을 일으키기 위해 전력 손실 모드를 시작하는 (전류 센서들, 전압 센서들, 또는 이와 유사한 것과 같은) 검출 소자들을 여전히 포함할 수 있다. 다른 실시예에서, 모니터 모듈(510)은 전력 분배 신호를 감지할 수 있으며 제1 전력 연결부(130)로부터 제2 전력 공급부(124), 또는 이와 유사한 것까지, 저장 장치(102)에 대한 전력 인출을 변경하는 스위치를 활성화시킬 수 있다.The monitor module 510 may in this embodiment detect power distribution and in response thereto initiate a power loss mode to cause the power management device 122 to operate other modules (such as current sensors, voltage sensors, ≪ / RTI > or the like) sensing elements. In another embodiment, the monitor module 510 can sense a power distribution signal and can be configured to power up the storage device 102 from the first power connection 130 to the second power supply 124, Can be activated.

모니터 모듈(510)은, 일 실시예에서, 전력 손실 모듈(520) 및/또는 저장 장치(102)가 전력 손실 모드에 들어간 다른 모듈과 직접적으로 또는 간접적으로 통신함으로써 전력 손실 모드를 시작할 수 있다. 예를 들면, 다양한 실시예들에서, 모니터 모듈(122)은 상태 레지스터를 설정할 수 있으며, 전력 손실 모드 명령을 전송하며, 전력 손실 신호를 전송하며, 전력 손실 인터럽트를 전송하며, 전력 손실 모드 기능 또는 과정을 시작하며, 전력 손실 상태에서 저장 장치를 배치하며/배치하거나, 그렇지 않으면 전력 손실 모듈(520)의 전력 손실 모드를 통지한다.The monitor module 510 may, in one embodiment, initiate a power loss mode by communicating directly or indirectly with the power loss module 520 and / or other modules that have entered the power loss mode. For example, in various embodiments, the monitor module 122 may set a status register, send a power loss mode command, send a power loss signal, send a power loss interrupt, Initiates the process, places / places the storage device in a power loss state, or otherwise notifies the power loss mode of the power loss module 520.

전력 손실 모듈(520)은, 일 실시예에서, 클라이언트(114) 또는 이와 유사한 것에서 승인된 작동들과 같은 필수적인 작동들이 전력 유지 시간 중에 실행되는 것을 보장하기 위해 전력 손실 모드 중에 저장 장치(102)에 대한 프로세스 내의 작동의 실행을 조절한다. 프로세스 내의 작동들은, 일 실시예에서, 저장 장치(102)가 현재 실행되는 작동들을 포함한다. 다른 실시예들에서, 프로세스 내의 작동들은 저장 장치(102)에 대한 실행을 위한 대기열을 이루며, 기록 데이터 파이프라인(106) 및/또는 판독 데이터 파이프라인(108), 또는 이와 유사한 것의 내에 있는 작동들을 포함한다. 도시된 실시예에서, 전력 손실 모듈(520)은 식별 모듈(512), 종료 모듈(514), 및 손상 모듈(516)을 포함한다.The power loss module 520 may be coupled to the storage device 102 during the power loss mode to ensure that, in one embodiment, essential operations, such as operations approved by the client 114 or the like, To control the execution of operations within the process. Operations within the process, in one embodiment, include operations in which the storage device 102 is currently executing. In other embodiments, operations within the process are queues for execution on the storage device 102 and operations within the write data pipeline 106 and / or the read data pipeline 108, or the like, . In the illustrated embodiment, the power loss module 520 includes an identification module 512, a termination module 514, and a corruption module 516.

식별 모듈(512)은, 일 실시예에서, 외부 전력이 손실되었는지, 미리 결정된 한계치의 아래에 있는지, 또는 그렇지 않으면 불충분한지 및 전력 손실 모드에 들어가는지를 결정하는 모니터 모듈(510)에 응답하여 비휘발성 저장 장치(102)에 대한 하나 이상의 필수적이지 않은 작동들을 식별한다. 필수적이지 않은 작동들은 저장 장치(102)에 대한 데이터 손상 또는 데이터 손실을 야기하지 않고 종료될 수 있거나, 정지될 수 있거나, 또는 중지될 수 있는 이런 작동들이다. 필수적인 작동들은 데이터 손상, 저장 장치(102)에 대한 데이터 손실, 또는 저장 장치(102)와 클라이언트(114) 사이에 일관성이 없는 통신들(즉 이후에 적절하게 취급되지 않으며 통지와 일치하지 않는 데이터에 대해 클라이언트(114)에 통지를 전송하는 것)을 회피하기 위해 실행되어야 하는 이런 작동들이다. 식별 모듈(512)은 필수적이지 않은 작동들은 실행하는지, 또는 이들이 대기열을 이루며 실행을 기다리는지를 더 결정할 수 있다.The identification module 512 is configured to determine whether the external power is lost, under the predetermined threshold, or otherwise insufficient in one embodiment, and in response to the monitor module 510 determining whether to enter the power loss mode, And identifies one or more non-essential acts on the storage device 102. Non-essential operations are those operations that can be terminated, stopped, or stopped without causing data corruption or data loss to the storage device 102. The essential operations include data corruption, data loss to the storage device 102, or communications that are inconsistent between the storage device 102 and the client 114 (i.e., data that is not handled properly and does not match the notification To send a notification to the client 114). The identification module 512 may further determine whether to perform nonessential operations, or whether they are queued and waiting to be executed.

종료 모듈(514)은, 일 실시예에서, 식별 모듈(512)에 의해 식별되는 필수적이지 않은 작동들을 종료한다. 종료 모듈(514)은, 다양한 실시예들에서, 대기열을 이루는 필수적이지 않은 작동들, 명령들, 및 지시들을 소거하며/소거하거나 저장 장치(102)에 대해 현재 실행되는 필수적이지 않은 작동들을 차단함으로써 필수적이지 않은 작동들을 종료할 수 있다. 일 실시예에서, 종료 모듈(514)은 필수적이지 않은 작동들을 실행하지 않고 저장 장치(102)의 전력이 차단되는 것(즉 일단 전력 유지 시간이 만료되면 제2 전력 공급부(124)가 감소되는 것)을 허용한다. 다른 실시예에서, 종료 모듈(514)은 일단 저장 장치(102)가 전력 손실 후에 다시 전력이 공급되면 필수적이지 않은 작동들이 실행되지 않거나 다시 시작되지 않는 방식으로 필수적이지 않은 작동들을 종료한다. 예를 들면, 일 실시예에서, 종료 모듈(514)은 종료된 필수적이지 않은 작동들의 기록을 남기지 않고 필수적이지 않은 작동들을 종료하며, 그 결과 저장 장치(102)는 종료된 필수적이지 않은 작동들을 실행하지 않거나 다시 시작하지 않고 전력을 공급받는다.Termination module 514, in one embodiment, terminates nonessential operations identified by identification module 512. [ Termination module 514 may be configured to, in various embodiments, delete and / or erase non-essential operations, commands, and instructions that form a queue, or by blocking non-essential operations currently being performed on storage device 102 You can terminate nonessential actions. In one embodiment, the termination module 514 is configured such that power to the storage device 102 is powered off (i.e., once the power hold time expires, the second power supply 124 is reduced) ). In another embodiment, the termination module 514 terminates nonessential operations in a manner such that nonessential operations are not executed or restarted once the storage device 102 is powered back up after a power loss. For example, in one embodiment, the termination module 514 terminates nonessential operations without leaving a record of nonessential operations that have been terminated, such that the storage device 102 executes nonessential operations that have been terminated Do not do it or get power without restarting.

일 실시예에서, 식별 모듈(512)은 또한 저장 장치(102)가 제2 전력 공급부(124)로 작동하는 동안에 저장 장치(102)에 대한 전력 예산을 관리한다. 식별 모듈(512)은 예를 들면, 얼마나 많은 전력이 이용 가능한지, 얼마나 많은 전력이 저장 장치(102)에 대한 모든 일어날 작동들에 필요로 하며, 우선하는지를 결정할 수 있다. 따라서 작동들은 전력 유지 시간 내에 적어도 필수적이 프로세스 내의 작동들을 실행하기 위해 우선사항의 순서로 재정비되며 실행될 수 있다. 일 실시예에서, 만약 식별 모듈(512)이 있을 수 있는 에러나 고장 때문에 모든 기록 작동들(즉 비휘발성 고체 상태 저장 장치에 대한 프로그램 작동들)을 실행하기에 불충분한 전력이 있다는 것을 판별한다면, 식별 모듈(512)은 아마 전력이 회복된 후에, 사용자에게 또는 얼마간의 또는 모든 기록 작동들이 분실된 시스템에 통지를 제공하기 위해 이런 정보를 기록할 것이다.In one embodiment, the identification module 512 also manages the power budget for the storage device 102 while the storage device 102 is operating with the second power supply 124. The identification module 512 may determine, for example, how much power is available, how much power is needed and preferred for all operations that occur to the storage device 102. Thus, the operations may be refined and executed in order of priority to perform operations in the process, at least essentially, within the power maintenance time. In one embodiment, if the identification module 512 determines that there is insufficient power to perform all write operations (i.e., program operations for non-volatile solid state storage) due to possible errors or failures, The identification module 512 will probably record this information to the user or some or all of the recording operations after the power is restored to provide notification to the lost system.

일 실시예에서, 필수적이지 않은 작동들은 비휘발성 저장 장치(102)에 있는 비휘발성 메모리(110)를 소거하는 소거 작동들 및/또는 비휘발성 저장 장치(102)에 있는 데이터를 판독하는 판독 작동들을 포함한다. 소거 작동은 예를 들면, 플래시 메모리 장치와 같은 고체 상태 저장 장치에 있는 공간을 재사용하는 불필요 데이터 수집 작동의 일부분으로 발생될 수 있다. 필수적이지 않은 작동들은 또한 비휘발성 저장 장치(102)의 데이터에 대한 해시 키를 발생시키는 것, 저장장치로부터 판독된 데이터의 압축을 해제하는 것과 같은 작동들, 또는 다른 작동들을 포함할 수 있다. 필수적이지 않은 작동들은, 다른 실시예에서, 비휘발성 저장 장치(102)가 클라이언트(114)에 통지를 전송하지 않은 기록(또는 프로그램) 작동들을 포함할 수 있다. 일 실시예에서, 사용자 또는 시스템 디자이너는 임의의 작동들이 필수적이며 임의의 작동들이 필수적이지 않는지를 구체화한다.In one embodiment, non-essential operations include erase operations that erase non-volatile memory 110 in non-volatile storage 102 and / or erase operations that read data in non-volatile storage 102 . The erase operation can occur, for example, as part of an unnecessary data collection operation that reuses space in a solid state storage device, such as a flash memory device. Non-essential operations may also include generating a hash key for data in non-volatile storage 102, operations such as decompressing the data read from the storage, or other operations. Non-essential operations may, in other embodiments, include write (or program) operations in which the non-volatile storage device 102 did not send a notification to the client 114. [ In one embodiment, the user or system designer specifies that certain actions are necessary and that no actions are necessary.

특정 실시예들에서, 종료 모듈(514)은 얼마나 많은 전력을 이들이 요구하는지에 근거하여 필수적이지 않은 작동들을 종료한다. 예를 들면, 고체 상태 저장 장치들의 소거 작동들은 상당한 양의 전력을 소비하는 경향이 있다. 종료 모듈(514)은 전력을 보존하기 위해 소거 작동들을 신속하게 종료할 수 있다. 이와 반대로, 판독 작동들은 상대적으로 적은 전력을 필요로 한다. 종료 모듈(514)은 단지 소거 작동들이 종료된 후에만 또는 이와 유사한 것 후에만 판독 작동들을 종료하는 것을 시작할 수 있다.In certain embodiments, the termination module 514 terminates operations that are not essential based on how much power they require. For example, erase operations of solid state storage devices tend to consume a significant amount of power. Termination module 514 may expedite the erase operations to conserve power. Conversely, read operations require relatively little power. Termination module 514 may only begin to terminate the read operations only after the erase operations have ended or after a similar one.

일 실시예에서, 식별 모듈(512)은 작동을 실행하는 중요성에 근거하여 우선권으로 작동들의 우선 순위를 결정한다. 예를 들면, 통지된 데이터에 대한 프로그램 작동들은 가장 높은 우선권이 주어질 수 있지만, 반면에 소거 작동은 가장 낮은 우선권이 주어질 수 있다. 종료 모듈(514)은 가장 낮은 우선권의 작동들을 종료하는 것을 시작할 수 있으며 작동들의 우선순위 목록을 이동시킬 수 있으며, 임의의 필수적인 작동들을 종료하지 않을 수 있다. 따라서, 가장 낮은 우선권의 작동을 시작하는 종료 모듈(514)은 작동이 필수적인지를 결정한다. 만약 아니라면, 이런 작동은 종료된다. 만약 작동이 필수적이라면, 작동은 종료되지 않으며 종료 모듈(514)은 고려를 위해 다음 작동으로 이동한다.In one embodiment, the identification module 512 determines the priority of the operations as a priority based on the importance of performing the operation. For example, program operations for the notified data may be given the highest priority, while the erase operation may be given the lowest priority. The termination module 514 may begin to terminate the operations with the lowest priority and may move the priority list of operations and may not terminate any essential operations. Thus, the termination module 514, which initiates operation with the lowest priority, determines whether operation is required. If not, this operation is terminated. If operation is required, operation is not terminated and termination module 514 moves to the next operation for consideration.

특정 실시예들에서, 식별 모듈(512)은 또한 필수적이지 않은 작동을 완료하는데 요구되는 에너지의 양에 근거하여 실행하는 과정에 있는 필수적이지 않은 작동들의 우선순위를 결정할 수 있다. 예를 들면, 90% 완료된 소거 작동은 5% 완료된 소거 작동보다 낮은 종료에 대한 우선권이 주어질 수 있으며; 따라서, 90%인 소거 작동은 완료하는 것이 허용될 수 있지만, 반면에 5% 완료된 소거 작동은 정전이 검출될 때 중지된다. 일 실시예에서, 작동을 위해 요구되는 에너지의 양은 그 동안에 작동이 실행되는 시간의 경과에 따라 변경될 수 있다.In certain embodiments, the identification module 512 may also determine the priority of non-essential operations in the course of execution based on the amount of energy required to complete the non-essential operation. For example, a 90% complete erase operation may be given a lower priority than a 5% complete erase operation; Thus, an erase operation of 90% may be allowed to complete, while a 5% complete erase operation is halted when a power failure is detected. In one embodiment, the amount of energy required for operation may change over time during which the operation is performed over time.

종료 모듈(514)은, 일 실시예에서, 식별 모듈(512)에 의해 식별되는 필수적이지 않은 작동들을 종료한다. 위에 언급된 바와 같이, 종료 모듈(514)은 다른 작동들 전에 종료를 위해, 식별 모듈(512)에 의해 우선순위가 결정된 것으로, (전력 집중 소거 작동들 또는 독자적인 그루밍 작동들과 같은) 특정 클래스의 작동들을 종료할 수 있다. 일 실시예에서, 종료 모듈(514)은 도 6과 관련하여 보다 자세하게 논의되는 바와 같이 작동이 행해지며/실행되는 메모리 영역 또는 소자를 식별하며 메모리 영역 또는 소자를 리셋함으로써 필수적이지 않은 작동을 종료한다. 여기에 사용되는 바와 같이, 메모리 영역 또는 소자는 물리적인 섹션에서 실행되는 작동들이 명령 또는 신호로 리셋되거나, 종료되거나, 정지되거나, 보류되거나, 또는 중지될 수 있는 비휘발성 메모리(110)의 물리적인 섹션을 가리킨다.Termination module 514, in one embodiment, terminates nonessential operations identified by identification module 512. [ As noted above, the termination module 514 may be one that has been prioritized by the identification module 512 for termination prior to other operations (such as power-concentrated erase operations or proprietary grooming operations) The operations can be terminated. In one embodiment, the termination module 514 terminates non-essential operations by identifying memory regions or elements that are actuated / executed as discussed in more detail with respect to FIG. 6 and resetting memory regions or devices . As used herein, a memory region or element is a physical or logical entity of a non-volatile memory 110 that is capable of being executed in a physical section, reset to a command or signal, terminated, stopped, pending, Points to a section.

필수적이지 않은 작동들을 종료함으로써, 전력 관리 장치(122)는 전력이 필수적인 기록 작동들 및 다른 필수적인 작동들에 사용되는 것을 보장할 수 있으며 그 결과 필수적인 작동들이 전력 유지 시간 내에 실행될 수 있다. 더구나, 전력 관리 장치(122)는 따라서 제2 전력 공급부(124)가 제공하는데 필요한 전력의 전체 양을 감소시킬 수 있다. 따라서 디자이너는, 예를 들면, 저장 장치(102)의 공간을 절약할 수 있는, 전력을 제공하는 더 작은 캐패시터들을 사용하며, 비용을 감소시키며, 신뢰성을 개선하면서 모든 수신되며 통지된 데이터가 예기치 않은 정전으로부터 보존되며 보호되는 것을 보장하기 위해 성능을 유지하는 것을 선택하는 것이 허용된다.By terminating nonessential operations, the power management device 122 can ensure that the power is used for the necessary write operations and other essential operations, such that essential operations can be performed within the power hold time. Moreover, the power management device 122 may thus reduce the overall amount of power required by the second power supply 124 to provide. The designers therefore use smaller capacitors that provide power, which can save space in the storage device 102, for example, reduce costs, and improve reliability, so that all received and notified data is unexpected It is permissible to choose to maintain performance to ensure that it is preserved and protected from power outages.

일 실시예에서, 종료 모듈(514)은 특정한 필수적이지 않은 작동이 대기열을 이루는지 또는 실행 중인지를 결정한다. 종료 모듈(514)은 작동들이 실행되지 않은 것을 보장하기 위해 큐로부터 작동들을 제거함으로써 대기열을 이룬 필수적이지 않은 작동들을 삭제할 수 있다. 또는, 이에 더하여, 종료 모듈(514)은 실행하는 작동들이 추가적인 전력을 소비하는 것을 방지하기 위해 실행 중인 작동들을 취소할 수 있다. 특정 실시예들에서, 위에 언급된 바와 같이, 종료 모듈(514)은 프로세스 간에 있는 몇몇 필수적이지 않은 작동들을 종료하면서 다른 것들이 완료되는 것을 허용한다.In one embodiment, the termination module 514 determines whether a particular non-essential operation is queuing or running. Termination module 514 may delete non-essential queuing operations by removing operations from the queue to ensure that operations are not being performed. Or, in addition, the termination module 514 may cancel running operations to prevent the executing operations from consuming additional power. In certain embodiments, as noted above, termination module 514 allows other things to be completed while terminating some nonessential operations between processes.

손상 모듈(516)은, 일 실시예에서, 손상된 것으로 여겨지거나 손상된 것으로 여겨져야 하는 비휘발성 메모리(110)에 기록되는 것인 저장 장치(102)에 의해 수신된 데이터를 식별한다. 이와 같은 데이터는, 예를 들면, 기록 데이터 파이프라인(106)에 있는 데이터일 수 있다. 손상 모듈(516)은 손상된 것으로 여겨지는 데이터가 비휘발성 메모리(110)에 저장되지 않는 것을 보장하며 또한 클라이언트(114)가 데이터가 저장되지 않았다는 것을 인지되는 것을 보장하거나, 클라이언트(114)가 손상된 데이터가 성공적으로 저장되지 않았다는 것을 통고받는 것을 보장한다.Damage module 516 identifies data received by storage device 102 that, in one embodiment, is written to non-volatile memory 110 that should be considered corrupted or damaged. Such data may be, for example, data in the record data pipeline 106. The corruption module 516 ensures that the data that is believed to be corrupted is not stored in the non-volatile memory 110 and also assures that the client 114 is aware that the data has not been stored, Is not notified of a successful storage.

특정 실시예들에서, 손상 모듈(516)과 종료 모듈(514)은 일단 모니터 모듈(510)이 정전을 검출하면 취해진 행위를 기록한다. 예를 들면, 종료 모듈(514)은 임의의 필수적이지 않은 작업들이 이들이 실행을 시작하기 전에 취소되었는지 그리고 임의의 필수적이지 않은 작업들이 실행 중에 종료되었는지를 기록할 수 있다. 손상 모듈(516)은 무슨 데이터가 손상된 것으로 결정되었는지에 관한 정보를 기록할 수 있다. 전력 관리 장치(122)의 다른 모듈들은 이와 유사하게 저장 장치(102), 클라이언트(114), 또는 다른 관련된 실체가 예기치 않은 중지 중에 발생된 것을 결정하는데 도움을 주기 위해, 이들의 활동, 또는 이의 서브세트를 기록할 수 있다.In certain embodiments, the corruption module 516 and the termination module 514 record the actions taken once the monitor module 510 detects a power failure. For example, the termination module 514 may record whether any nonessential tasks have been canceled before they begin execution, and whether any nonessential tasks have been terminated during execution. The corruption module 516 may record information as to what data was determined to be corrupted. Other modules of the power management device 122 may similarly have their activities, or their subservices, to assist in determining that the storage device 102, client 114, or other related entity has occurred during an unexpected outage. Set can be recorded.

일 실시예에서, 손상 모듈(516)은 정전 신호가 모니터 모듈(510)에 의해 수신되기 전에 과거의 얼마간의 특정 시간(예를 들면, 5 마이크로초)에 시작된 저장 장치(102)에 의해 수신된 모든 데이터가 손상되며 비휘발성 저장장치(110)에 저장되지 않아야 하는 것을 예상한다. 본 명세서는 PCI, PCI-e, 또는 이와 유사한 것과 같은 표준에 의해 또는 클라이언트(114), 저장 장치(102), 벤더, 제조업자, 등에 의해 기술될 수 있다. 다른 실시예에서, 손상 모듈(516)은 손상된 것으로 미리 결정된 스테이지 전에 기록 데이터 파이프라인(106)의 내에 있는 데이터를 평가한다.In one embodiment, the corruption module 516 may detect that the power failure signal received by the storage device 102 initiated at some specific time in the past (e. G., 5 microseconds) before the power failure signal is received by the monitor module 510 It is anticipated that all data should be corrupted and not stored in the non-volatile storage 110. The present specification may be described by standards such as PCI, PCI-e, or the like, or by the client 114, the storage device 102, the vendor, the manufacturer, In another embodiment, corruption module 516 evaluates the data in the write data pipeline 106 before a predetermined stage of corruption.

도 5b는 데이터 손상과 관련된 시간표의 일 예를 도시한다. 시간 0에서, 전력 교란이 일어난다. 이런 시점은 교란 시간으로 불린다. 일어난 전력 교란과 전력 교란 신호가 모니터 모듈(510)에 의해 수신될 때, 모니터 모듈(510)이 전력 교란을 검출할 때, 또는 이와 유사한 것 사이를 통과하는 그 결과로 나온 기간이 있다. 이런 기간은 여기서 손상 기간으로 불린다. 본 명세서는 (위에 언급된 5 마이크로초와 같은) 예시적인 손상 기간들을 제공할 수 있지만, 손상 기간은 이와 같은 것으로 제한되지 않으며, 표준과 개발자, 제조업자, 디자이너 등의 가정에 근거하여 변경될 수 있다.Figure 5B shows an example of a timetable associated with data corruption. At time zero, a power disturbance occurs. This point is called disturbance time. There is a resulting period of time when the resulting power disturbance and power disturb signals are received by the monitor module 510, when the monitor module 510 detects a power disturbance, or the like. This period is called the impairment period here. Although the present specification can provide exemplary damage periods (such as the 5 microseconds mentioned above), the damage period is not limited to this and can be varied based on the assumptions of standards, developers, manufacturers, designers, etc. have.

손상 기간은 (5 마이크로초에 일어난 것으로 보여지는) 전력 교란을 검출하며, (3 마이크로초에 일어난 것으로 보여지는) 전력 교란이 있었다는 것을 가리키는 신호를 발생시키며, (5 마이크로초에 일어난 것으로 보여지는) 모니터 모듈(510)이 전력 교란 신호를 수신하는데 필요한 시간의 결과이다. 일반적으로, 손상 모듈(516)은 새로운 데이터가 손상된 것으로 여겨질 때 일단 전력 교란이 있었다는 것이 결정되면 새로운 데이터가 기록 데이터 파이프라인(106)에 들어오는 것을 방지한다. 그러나, 손상된 데이터는 손상 기간 중에 기록 데이터 파이프라인(106)으로 이동된다.The impairment period detects a power disturbance (which appears to have occurred at 5 microseconds), generates a signal indicating that there was a power disturbance (which appears to occur at 3 microseconds) Is the result of the time required for the monitor module 510 to receive the power disturb signal. Generally, the corruption module 516 prevents new data from entering the write data pipeline 106 once it is determined that there has been a power disturbance when new data is considered corrupted. However, the corrupted data is moved to the write data pipeline 106 during the corruption period.

따라서, 손상 시간 후에 수신된 모든 데이터는 손상된 것으로 여겨지며 저장되지 않아야 한다. 예를 들면, 손상 모듈(516)은 모니터 모듈(510)이 시간(t)에서 정전 신호를 수신하였는지를 결정할 수 있으며, 손상 모듈(516)은 t-5 마이크로초로 손상 시간을 항상 설정할 수 있다. 손상 모듈(516)은 그러므로 t-5 마이크로초의 손상 시간 후에 수신된 모든 데이터가 손상된다는 결론을 내릴 수 있다. 이와 같은 실시예에서, 손상 모듈(516)은 t-5 마이크로초 후에 수신된 모든 기록 작동들(즉 플래시 메모리 등에 대한 프로그램 작동들)을 식별하며, 이들이 기록 데이터 파이프라인(106)의 어디에 있는지를 결정하며, 기록 작동들을 건너뛴다. 손상 모듈(516)은, 다양한 실시예들에서, 이들을 취소하거나, 이들을 건너뛰거나, 이들을 청소하거나, 이들을 차단하거나, 또는 그렇지 않으면 이들을 실행하지 않음으로써 기록 작동들을 건너뛸 수 있다.Therefore, all data received after the corruption time is considered corrupted and should not be stored. For example, the corruption module 516 may determine whether the monitor module 510 has received an outage signal at time t, and the corruption module 516 may always set the corruption time at t-5 microseconds. Damage module 516 may therefore conclude that all data received after the damage time of t-5 microseconds is corrupted. In such an embodiment, damage module 516 identifies all write operations (i.e., program operations for the flash memory, etc.) received after t-5 microseconds and determines where they are in the write data pipeline 106 And skips the recording operations. Damage module 516 may, in various embodiments, skip write operations by canceling them, skipping them, cleaning them, blocking them, or otherwise not executing them.

일 실시예에서, 전력 관리 장치(122)는 또한 완성 모듈(518)을 포함한다. 몇몇 실행에서, 기록 데이터 파이프라인(106)의 스테이지들과 관련된 특정 작동들은 이런 스테이지와 관련된 버퍼가 채워질 때까지 이런 파이프라인을 통해 데이터의 연속된 흐름을 실행하거나 허용하지 않을 것이다. 예를 들면, 도 3의 ECC 발생기(304)와 같은 ECC 스테이지는 ECC 값을 발생시키기 전에 채워진 버퍼를 필요로 할 수 있다. 이와 마찬가지로, 기록 버퍼(320), 기록 동기화 버퍼(308), 또는 이와 유사한 것과 같은 출력 버퍼는 데이터가 출력 버퍼로부터 나와서 비휘발성 저장장치(110)로 이동되기 전에 채워져야 한다. 일 실시예에서, 만약 버퍼가 통상의 조건 하에 부분적으로 채워진다면, 버퍼와 관련된 스테이지는 이런 버퍼와 관련된 작동들이 실행되기 전에 버퍼가 채워질 때까지 기다릴 것이다. 여기에 언급되는 버퍼들은 물리적 버퍼들일 수 있거나, 단순하게 레지스터들, DRAM 위치들, 또는 다른 것들과 같은 일시적인 저장 위치들일 수 있다. 다른 실시예에서, 패킷화장치(302)는 패킷이 완성될 때까지, 하나의 그룹의 패킷들이 완성될 때까지, 또는 이와 유사한 때가지 기록 데이터 파이프라인(106)에 있는 다른 스테이지로 패킷을 통과시키지 않을 수 있다. 이와 마찬가지로, 기록 버퍼(320)는, 특정 실시예들에서, 페이지, 논리 페이지, 하나의 그룹의 페이지들이나 논리 페이지들, 또는 이와 유사한 것이 완성될 때까지 저장 장치(102)로 데이터를 전송할 수 없다.In one embodiment, the power management device 122 also includes a completion module 518. In some implementations, certain operations associated with the stages of the write data pipeline 106 will not or will not allow a continuous flow of data through such a pipeline until the buffer associated with that stage is filled. For example, an ECC stage such as ECC generator 304 of FIG. 3 may require a buffer filled before generating an ECC value. Likewise, an output buffer such as write buffer 320, write synchronization buffer 308, or the like must be populated before data is moved out of the output buffer and moved to non-volatile storage 110. In one embodiment, if the buffer is partially filled under normal conditions, the stage associated with the buffer will wait until the buffer is filled before the operations associated with this buffer are executed. The buffers referred to herein may be physical buffers, or may simply be temporary storage locations such as registers, DRAM locations, or others. In another embodiment, the packetizer 302 may pass a packet to another stage in the record data pipeline 106 until the packet is complete, until one group of packets is complete, or the like . Similarly, the write buffer 320, in certain embodiments, can not transfer data to the storage device 102 until pages, logical pages, a group of pages, logical pages, or the like are complete .

정전의 경우에, 비휘발성 메모리(110), 또는 이와 유사한 것에 데이터를 플러싱하기 위해, 심지어 하나 이상의 스테이지들에서 버퍼, 패킷, 또는 페이지가 채워지지 않더라도 기록 데이터 파이프라인(106)을 통해 데이터를 이동시키는 것이 유용할 수 있다. 완성 모듈(518)은 기록 데이터 파이프라인(106)을 통해 그리고 비휘발성 메모리(110)로 부분적으로 채워진 데이터 버퍼에서 데이터를 플러싱한다. 일 실시예에서, 완성 모듈(518)은 부분적으로 채워진 버퍼들, 패킷들, 및/또는 채워지지 않은 페이지들을 식별하며 데이터가 버퍼들로부터 그리고 기록 데이터 파이프라인(106)을 통해 이동될 정도로 패드 데이터로 버퍼들을 채운다.In the event of a power outage, data is moved through the write data pipeline 106, even if the buffer, packet, or page is not filled in one or more stages, to flush the data to non-volatile memory 110, Can be useful. The completion module 518 flushes the data through the write data pipeline 106 and from the partially filled data buffer to the non-volatile memory 110. In one embodiment, the completion module 518 identifies partially filled buffers, packets, and / or unfilled pages, and stores the pad data < RTI ID = 0.0 > To fill the buffers.

완성 모듈(518)은, 일 실시예에서, 채움은 저장 장치(102) 및/또는 클라이언트(114)가 채움을 식별할 수 있다는 것을 보장하며 패드 데이터가 실제 데이터의 일부분이 아니라는 것을 알려주는 패드 데이터로 식별 가능하다는 것을 보장한다. 일 실시예에서, 완성 모듈(518)은 특정한 헤더, 토큰, 마커, 패턴, 또는 채우는 데이터를 식별하기 위한 다른 식별자를 사용한다. 다른 실시예에서, 완성 모듈(518)은 부분적으로 채워진 버퍼, 패킷, 및/또는 페이지를 완성하기 위해 버퍼의 채워지지 않은 공간에 존재하는 데이터를 사용하여, 채우는 데이터를 추가하지 않고 버퍼, 패킷, 및/또는 페이지를 플러싱한다. 예를 들면, 채워지지 않거나 빈 상태의 버퍼는 모든 2진수 1들, 모든 2진수 0들, 폐기 또는 불필요한 데이터, 이전의 처리로부터 나온 데이터, 또는 이와 유사한 것을 저장할 수 있다. 완성 모듈(518)은, 일 실시예에서, 채우는 데이터로서 버퍼의 채워지지 않은 영역에 존재하는 데이터를 식별한다. 완성 모듈(518)은 본 발명에 비추어, 특정한 패턴, 플래그 또는 다른 지시자, 또는 본 기술분야의 사람에게 알려진 다른 방법들을 사용할 수 있다.The completion module 518, in one embodiment, may be a pad data that ensures that the storage device 102 and / or the client 114 can identify the fill and that the pad data is not part of the actual data Lt; / RTI > In one embodiment, completion module 518 uses a specific header, token, marker, pattern, or other identifier to identify the filling data. In other embodiments, completion module 518 may use buffered data, data, and / or data that is present in the unfilled space of the buffer to complete the partially filled buffer, packet, and / And / or flushes the page. For example, an unfilled or empty buffer may store all binary 1's, all binary 0's, discarded or unneeded data, data from previous processing, or the like. Completion module 518, in one embodiment, identifies data that is present in the unfilled area of the buffer as filling data. Completion module 518 may use a particular pattern, flag or other indicator, or other methods known to those skilled in the art in light of the present invention.

완성 모듈(518)은, 일 실시예에서, 특정한 헤더, 풋터, 토큰, 마커, 패턴, 또는 전력 관리 장치(122)가 전력 손실 모드에서 필수적인 작동들을 성공적으로 완성하였는지를 식별하기 위한 다른 식별자를 사용한다. 일 실시예에서, 필수적인 작동들을 성공적으로 완성하는 것은 완성 모듈(518)이 기록 데이터 파이프라인(106)을 통해 그리고 비휘발성 메모리(110) 또는 이와 유사한 것으로 기록 작동들로부터 나온 기록 데이터를 성공적으로 플러싱하였다는 것을 의미한다. 지시자는, 일 실시예에서, 채우는 데이터를 식별하기 위한 위에 설명된 것과 동일한 지시자이다. 다른 실시예에서, 완성 모듈(518)은 전력 손실 모드 중에 필수적인 작동들의 성공적인 실행을 식별하기 위해 개개의 지시자를 사용한다.The completion module 518 uses a different identifier to identify whether a particular header, footer, token, marker, pattern, or power management device 122 has successfully completed the necessary operations in the power loss mode . In one embodiment, successful completion of the essential operations is accomplished by the completion module 518 successfully flushing the write data coming from the write operations through the write data pipeline 106 and into the non-volatile memory 110 or the like . The indicator is, in one embodiment, the same indicator as described above for identifying the data to fill. In another embodiment, completion module 518 uses an individual indicator to identify a successful execution of operations that are required during a power loss mode.

도 6은 전력 관리 장치(122)와 비휘발성 메모리(110)의 일 실시예(600)를 도시한다. 위에 언급된 바와 같이, 전력 관리 장치(122)는 저장 컨트롤러(104)의 일부분일 수 있다. 전력 관리 장치(122)외 비휘발성 메모리(110)는 물리적으로 동일한 저장 장치(102)의 일부분일 수 있다. 전력 관리 장치(122)는 도 5a와 관련하여 설명된 작동들을 실행할 수 있다. 도시된 실시예에서, 전력 관리 장치(122)는 모니터 모듈(510)과 전력 손실 모듈(520)을 포함한다. 전력 손실 모듈(520)은, 다른 실시예에서, 식별 모듈(512), 종료 모듈(514), 손상 모듈(516), 및/또는 완성 모듈(518)을 포함할 수 있다. 전력 관리 장치(122)는 또한 전력 관리 장치(122)가 직접적으로 또는 간접적으로 비휘발성 메모리(110)에 신호들을 통신할 정도로 비휘발성 메모리(110)와 통신을 한다. 전력 관리 장치(122)는, 예를 들면, 비휘발성 메모리(110)에 제어 신호를 전송하는 것을 가능하게 할 수 있다.FIG. 6 illustrates one embodiment 600 of power management device 122 and non-volatile memory 110. FIG. As noted above, the power management device 122 may be part of the storage controller 104. The power management device 122 and non-volatile memory 110 may be part of a physically identical storage device 102. Power management device 122 may perform the operations described with respect to FIG. 5A. In the illustrated embodiment, the power management device 122 includes a monitor module 510 and a power loss module 520. The power loss module 520 may include an identification module 512, a termination module 514, a corruption module 516, and / or a completion module 518 in other embodiments. The power management device 122 also communicates with the non-volatile memory 110 such that the power management device 122 communicates signals directly or indirectly to the non-volatile memory 110. [ The power management device 122 may enable, for example, to transmit a control signal to the non-volatile memory 110. [

도 6은 비휘발성 메모리(110)에 대한 구조의 일 실시예를 도시한다. 비휘발성 메모리(110)는 채널들(632a 및 632b)을 포함할 수 있다. 채널들은 다수의 뱅크들을 포함할 수 있으며, 예를 들면, 채널(632a)은 뱅크들(630a 및 630b)을 포함하며, 채널(632b)은 뱅크들(650a 및 650b)을 포함한다. 특정 실시예들에서, 칩들(634a-c 및 654a-c)은 다수의 다이(636a-f 및 656a-f)를 포함한다. 특정 실시예들에서, 각각의 칩(634a-c 및 654a-c)에 있는 하나의 다이는 뱅크를 형성하는데 사용된다. 도시된 바와 같이, 뱅크(630a)는 다이들(636a, 636c, 및 636e)을 둘러싼다. 뱅크(630b)는 다이들(636b, 636d, 및 636f)을 포함한다. 뱅크들(650a 및 650b)은 이와 유사하게 칩들(654a-c)에 있는 하나의 다이로 구성된다. 일 실시예에서, 도 6의 비휘발성 메모리(110)는 위에 설명된 도 2의 고체 상태 저장 매체(110)와 실질적으로 유사하다.FIG. 6 illustrates one embodiment of a structure for non-volatile memory 110. FIG. Non-volatile memory 110 may include channels 632a and 632b. The channels may include a plurality of banks, for example, channel 632a includes banks 630a and 630b, and channel 632b includes banks 650a and 650b. In certain embodiments, chips 634a-c and 654a-c include a plurality of die 636a-f and 656a-f. In certain embodiments, one die in each chip 634a-c and 654a-c is used to form the bank. As shown, the bank 630a surrounds the dies 636a, 636c, and 636e. Bank 630b includes dies 636b, 636d, and 636f. Banks 650a and 650b similarly comprise one die in chips 654a-c. In one embodiment, the non-volatile memory 110 of Figure 6 is substantially similar to the solid state storage medium 110 of Figure 2 described above.

본 기술분야의 기술자는 도 6에 도시된 실시예가 간단히 플래시와 같은 비휘발성 메모리(110)에 대한 구조의 일 예이며, 수많은 다른 구조들이 또는 가능하다는 것을 이해할 것이다. 도 6은 본 발명의 이해에 도움을 주는 방식으로 비휘발성 메모리(110)의 특징에 초점을 맞추기 위해 비휘발성 메모리(110)의 단순화된 버전을 도시한다. 비휘발성 메모리(110) 실행에 대한 보다 상세한 것은 (여기 이후에 "뱅크 인터리브 출원"으로 불리는) 여기에 참조로 첨부된, "Apparatus, System, and Method for Managing Commands of Solid-State Storage Using Bank Interleave"을 명칭으로 하는, 2007년 12월 6일에 출원된 David Flynn 등의 미국 특허 출원 번호 11/952,095에 발견될 수 있다.It will be appreciated by those skilled in the art that the embodiment shown in FIG. 6 is merely an example of a structure for non-volatile memory 110 such as flash, and numerous other structures are possible or possible. FIG. 6 illustrates a simplified version of non-volatile memory 110 to focus on features of non-volatile memory 110 in a manner that helps to understand the present invention. More details on non-volatile memory 110 implementation may be found in "Apparatus, System, and Method for Managing Interfaces ", which is hereby incorporated by reference herein, No. 11 / 952,095, filed December 6, 2007, by David Flynn et al.

위에 언급된 바와 같이, 종료 모듈(514)은 작동이 실행되는 중인 메모리 영역 또는 소자를 판별하며, 메모리 영역 또는 소자를 리셋함으로써 식별 모듈(512)에 의해 식별되는 필수적이지 않은 작동을 종료할 수 있다. 여기에 사용되는 바와 같은, 메모리 영역 또는 소자는 리셋 명령으로 리셋될 수 있는 비휘발성 메모리(110)의 물리적 섹션을 가리킨다. 리셋 명령은 종료하기 위해 기록하며, 소거하며, 판독하는 것과 같이 메모리 영역에 대해 실행 중인 모든 작동들을 야기하는 명령이다. 일 실시예에서, 각각의 다이(636a-f 및 656a-f)는 각각 개개의 다이(636a-f 및 656a-f)가 특정 메모리 영역 또는 소자를 구성할 정도로 독립적으로 리셋될 수 있다. 리셋 작동은 리셋 작동의 주체인 특정 다이에 대한 작동이 프로세스를 종료시키는 것을 야기한다.As noted above, the termination module 514 may determine the memory region or device in which the operation is being performed and may terminate the non-essential operation identified by the identification module 512 by resetting the memory region or device . As used herein, a memory area or element refers to a physical section of non-volatile memory 110 that can be reset by a reset command. A reset command is an instruction that causes all operations being performed on a memory area, such as writing, erasing, and reading, to terminate. In one embodiment, each die 636a-f and 656a-f may be independently reset such that each die 636a-f and 656a-f constitutes a particular memory region or element. The reset operation causes operation to a particular die, which is the subject of the reset operation, to terminate the process.

여기에 설명된 바와 같은, 특정 실시예들에서, 작동들은 뱅크를 기반으로 일어난다. 예를 들면, 소거 작동은, 일 실시예에서, 뱅크를 구성하는 다수의 다이에 미치는 논리 소거 블록에서 실행된다. 이와 같은 실시예들에서, 메모리 영역 또는 소자는 뱅크일 수 있으며, 리셋 작동은 대체로 동일한 시간에 뱅크에 있는 모든 다이에 전송된다. 리셋 작동 그 자체는 하나의 명령 또는 다수의 명령일 수 있으며; 이와 같은 실시예들에서, 뱅크에 있는 각각의 다이는 리셋되며, 이는 논리 소거 블록의 각각의 다이에 있는 각각의 물리적 블록들에 대한 소거 작동들을 정지시킨다.In certain embodiments, as described herein, operations occur on a bank basis. For example, the erase operation, in one embodiment, is performed in a logical erase block on a plurality of dice forming a bank. In such embodiments, the memory region or element may be a bank, and the reset operation is transmitted to all the die in the bank at substantially the same time. The reset operation itself may be an instruction or a plurality of instructions; In such embodiments, each die in the bank is reset, which stops erase operations for each physical block in each die of the logical erase block.

다른 실시예에서, 종료 모듈(514)은 실질적으로 모든 비휘발성 메모리(110)를 동시에 리셋할 수 있다. 예를 들면, 일 실시예에서, 저장 장치(102)는 각각의 뱅크(630a, 630b, 650a, 650b)에 대한 소거 작동들을 동시에 스케줄링할 수 있으며 종료 모듈(514)은 이런 스케줄링된 소거 작동들을 종료하기 위해 비휘발성 메모리(110)에 있는 각각의 뱅크(630a, 630b, 650a, 650b)에 리셋 명령을 전송할 수 있다.In another embodiment, the termination module 514 may reset substantially all of the non-volatile memory 110 simultaneously. For example, in one embodiment, the storage device 102 may simultaneously schedule erase operations for each bank 630a, 630b, 650a, 650b and the termination module 514 may terminate these scheduled erase operations The reset command may be sent to each of the banks 630a, 630b, 650a, and 650b in the non-volatile memory 110 to be reset.

이와 같은 실시예에서, 종료 모듈(514)은 버스를 통해 리셋 명령을 특정한 다이(636a-f 또는 656a-f)에 전송할 수 있다. 이는 종료 모듈(514)이 (소거와 같은) 필수적이지 않은 작동들을 실행하는 중이며 동시에 계속해서 다른 메모리 영역들에 대한 프로그래밍 작동들(즉 데이터 저장 기록 작동들)을 허용하는 메모리 영역들을 리셋하는 것을 허용한다. 일 실시예에서, 종료 모듈(514)은 리셋 신호를 발신함으로써 작동들을 실행하는 것을 종료하며 명령 큐로부터 나온 작동을 제거하거나 그렇지 않으면 작동들을 건너뜀으로써 미결의 작동들(즉 아직 시작되지 않은 명령 큐에 있는 이런 작동들)을 종료한다.In such an embodiment, the termination module 514 may send a reset command to the particular die 636a-f or 656a-f via the bus. This allows the termination module 514 to reset non-essential operations (such as erase) and to simultaneously resume memory areas that allow programming operations (i.e., data storage write operations) for other memory areas do. In one embodiment, the termination module 514 terminates execution of operations by issuing a reset signal, and terminates operations from the command queue, or otherwise skips operations to return pending operations (i.e., These operations in FIG.

특정의 필수적이지 않은 작동들은 리셋 명령의 사용 없이 종료될 수 있다. 예를 들면, 위에 설명된 바와 같이, 명령 큐에 있는 필수적이지 않은 작동들은 이들을 전혀 시작하지 않고 필수적이지 않은 작동들을 삭제하거나, 청소하거나, 실행을 방지하는 마킹을 하거나, 또는 제거함으로써 간단히 건너뛸 수 있다. 이런 작동들은 결코 시작되지 않기 때문에, 다이(636a-f 또는 656a-f)는 작동을 종료하기 위해 리셋되는 것이 필요하지 않다. 다이(636a-f 및 656a-f)에 대해 실행되지 않는 다른 필수적이지 않은 작동들은 이와 마찬가지로 심지어 이들이 실행되는 중일 때도 리셋 명령 없이 종료될 수 있으며; 예를 들면, 만약 기록 데이터 파이프라인(106)의 스테이지가 정전이 검출될 때 데이터에 대한 해시 키를 발생시키는 중이라면, 해시 발생 작동은 다이(636a-f 및 656a-f)에 전송되는 리셋 작동 없이 종료될 수 있다. 특정 실시예들에서, 특정 다이(636a-f 및 656a-f)에서 실행의 과정에 있는 프로그램/기록, 판독, 및 소거 작동들만이 리셋 명령으로 종료된다.Certain nonessential operations may be terminated without the use of a reset command. For example, as described above, non-essential operations in the command queue can be skipped simply by either not starting them at all, deleting non-essential operations, marking to prevent cleaning, have. Because these operations are never initiated, die 636a-f or 656a-f need not be reset to terminate operation. Other non-essential operations that are not performed on die 636a-f and 656a-f may likewise be terminated without a reset command even when they are being executed; For example, if the stage of the write data pipeline 106 is generating a hash key for the data when a power failure is detected, the hash generation operation may be initiated by a reset operation sent to the die 636a-f and 656a- . ≪ / RTI > In certain embodiments, only the program / write, read, and erase operations in the process of execution at particular dies 636a-f and 656a-f end with a reset command.

특정 실시예들에서, 종료 모듈(514)은 저장 장치(102)의 특정한 영역들/섹션들/모듈들/하위 소자들을 정지하거나 그렇지 않으면 중지할 수 있다. 예를 들면, 종료 모듈(514)은 판독 데이터 파이프라인(108)을 실행하는 모든 물리적 장치들/소자들 및/또는 논리 모듈들을 중지할 수 있다. 다른 실시예에서, 종료 모듈(514)은 판독 DMA 엔진, 또는 필수적이지 않은 작동들과 관련된 다른 하위 소자들을 정지하거나 그렇지 않으면 중지할 수 있다. 종료 모듈(514)은 또한 저장 장치(102)에서 작동하는 하나 이상의 CPU들을 중지할 수 있으며; 예를 들면, 저장 장치(102)는 멀티 코어 CPU를 가질 수 있다. 이와 같은 실시예에서, 종료 모듈(514)은 전력 관리 장치(122)가 사용하지 않는 CPU에 있는 하나 이상의 코어들을 중지할 수 있다.In certain embodiments, the termination module 514 may stop or otherwise suspend specific areas / sections / modules / sub-elements of the storage device 102. For example, the termination module 514 may suspend all physical devices / devices and / or logic modules that execute the read data pipeline 108. In another embodiment, termination module 514 may stop or otherwise terminate the read DMA engine, or other sub-elements associated with nonessential operations. Termination module 514 may also stop one or more CPUs operating in storage device 102; For example, the storage device 102 may have a multi-core CPU. In such an embodiment, termination module 514 may suspend one or more cores in the CPU that power management device 122 is not using.

종료 모듈(514)은 또한 전력 관리 장치(122)의 작동들과 관련되지 않은 활동이 전력 관리 장치(122)를 서포팅하는 코어에서 일어나지 않는 것을 모니터링하며 보장할 수 있다. 특정 실시예들에서, 전력 관리 장치(122)는 종료 모듈(514)이 전력을 보존하기 위해 CPU(또는 CPU들)을 간단히 중지할 수 있을 정도로 CPU로부터 분리된 하드웨어에서 실행될 수 있다. 종료 모듈(514)은 개개의 클럭들을 정지함으로써 판독 데이터 파이프라인(108)과 CPU를 중지할 수 있다. 본 기술분야의 기술자는 판독 데이터 파이프라인(108), 판독 DMA 엔진, CPU, 및/또는 저장 장치(102)의 다른 하위 소자들을 중지시키는 다른 방법들을 이해할 것이다.Termination module 514 may also monitor and ensure that activities not related to the operations of power management device 122 do not occur in the core that supports power management device 122. [ In certain embodiments, the power management device 122 may be implemented in hardware separate from the CPU such that the termination module 514 may simply stop the CPU (or CPUs) to conserve power. Termination module 514 may suspend the read data pipeline 108 and the CPU by stopping individual clocks. Those skilled in the art will appreciate other ways of stopping the read data pipeline 108, the read DMA engine, the CPU, and / or other sub-elements of the storage device 102.

특정 실시예들에서, 뱅크 인터리브 출원에서 설명된 바와 같이, 특정 작동들은 뱅크 레벨에 대해 일어날 수 있으며; 예를 들면, 데이터는 뱅크(630a)에 영향을 끼치는 프로그램 작동 중에 다이(636a, 636c, 및 636e)에 프로그래밍된다(즉 기록되거나 저장된다). 뱅크들(630a-b 및 650a-b)은 이들이 (뱅크들에 n 다이가 있을 때 n 수의 물리적 소거 블록들로 구성되는) 논리 소거 블록들, (뱅크들에 N 다이가 있을 때 N 수의 물리적 소거 블록들로 구성되는) 논리 페이지들, 및 기타 등등을 제공할 정도로 조직될 수 있다. 따라서, 도 6에서, 뱅크(630a)는 (다이(636a, 636c, 및 636e)로부터) 세 개의 물리적 소거 블록들로 구성되는 논리 소거 블록, 및 다이(636a, 636c, 및 636e)로부터 세 개의 물리적 페이지들로 구성되는 데이터의 논리 페이지들을 제공할 수 있다.In certain embodiments, as described in the bank interleave application, certain operations may occur for the bank level; For example, data is programmed (i.e., written or stored) on dies 636a, 636c, and 636e during program operation affecting bank 630a. Banks 630a-b and 650a-b may be implemented as logical erase blocks (which comprise n number of physical erase blocks when there are n dies in the banks) Physical pages), logical pages (consisting of physical erase blocks), and the like. 6, bank 630a includes a logical erase block consisting of three physical erase blocks (from dies 636a, 636c, and 636e) and three physical erase blocks from die 636a, 636c, and 636e To provide logical pages of data comprised of pages.

이와 같은 실시예들에서, 종료 모듈(514)은 뱅크(630a)에 병렬로 이어지는 (다이(636a, 636c, 및 636e)와 같은) 다이에 버스를 통해 리셋 명령을 전송할 수 있다. 이와 같은 실시예에서, 이런 그룹의 다이(636a, 636c, 및 636e)는 동시에 리셋될 것이며, 각각의 다이(636a, 636c, 및 636e)에서 일어나는 작동들을 효과적으로 정지시킬 것이다. 따라서, 소거 작동이 세 개의 물리적 다이(636a, 636c, 및 636e)에 있는 물리적 소거 블록들을 포함하는 논리 소거 블록에서 일어나기 때문에, 리셋 작동은 논리 소거 블록에 대한 과정에 있는 소거 작동을 동시에 정지시키기 위해 다이(636a, 636c, 및 636e)에 있는 세 개의 물리적 소거 블록들에 물리적으로 전송될 수 있다. 이와 마찬가지로, 다른 실시예에서, 종료 모듈(514)은 전체 비휘발성 메모리(110)를 동시에 리셋하기 위해 모든 다이들(636a-f, 656a-f)에 리셋 작동을 전송할 수 있다.In such embodiments, termination module 514 may send a reset command over the bus to die (such as die 636a, 636c, and 636e) that are connected in parallel to bank 630a. In such an embodiment, this group of dies 636a, 636c, and 636e will be reset at the same time and will effectively stop the operations occurring at each die 636a, 636c, and 636e. Thus, because the erase operation occurs in the logical erase block including the physical erase blocks in the three physical dies 636a, 636c, and 636e, the reset operation can be used to simultaneously stop the erase operation in the process for the logical erase block May be physically transmitted to the three physical erase blocks in the dies 636a, 636c, and 636e. Similarly, in other embodiments, termination module 514 may send a reset operation to all dies 636a-f, 656a-f to reset the entire non-volatile memory 110 simultaneously.

하나의 가능한 예에서, 모니터 모듈(510)은 저장 장치(102)가 전력을 손실했는지를 결정할 수 있다. 식별 모듈(512)은 뱅크(650a)에 있는 논리 소거 블록에 대응하여 비휘발성 메모리(110)에서 일어난 소거 작동이 있는지를 결정한다. 종료 모듈(514)은 뱅크(650a)에 리셋 명령을 전송하며, 이는 다이(656a, 656c, 및 656e)가 리셋되는 것을 야기하며 그에 따라 소거 작동을 종료한다. 유사한 패턴이 저장 장치(102)가 전력을 상실한 후에 비휘발성 메모리(110)에 대해 미결인 다른 소거 작동들과 판독 작동들에 대해 일어날 수 있다. 게다가, 뱅크들은 하나의 뱅크에서 일어난 작동들이 저장 장치(102)에 있는 다른 뱅크들의 작동들에 영향을 끼치지 않고 종료되거나 중지될 수 있을 정도로 서로 독립적일 수 있다.In one possible example, the monitor module 510 may determine if the storage device 102 has lost power. The identification module 512 determines whether there is an erase operation occurring in the non-volatile memory 110 corresponding to the logical erase block in the bank 650a. The termination module 514 sends a reset command to the bank 650a which causes the dies 656a, 656c, and 656e to be reset and thus terminates the erase operation. A similar pattern may occur for other erase operations and read operations that are pending for the non-volatile memory 110 after the storage device 102 has lost power. In addition, the banks may be independent of each other such that operations occurring in one bank may be terminated or stopped without affecting the operations of the other banks in the storage device 102.

특정 실시예들에서, 프로그램, 소거, 및 판독 작동들은 위에 설명된 바와 같이 뱅크 레벨에서 일어나지 않으며; 특정 구조들에서, 프로그램, 소거, 및 판독 작동들은 각각의 다이(636a-f 및 656a-f)에 개별적으로 일어난다. 이와 같은 실시예들에서, 리셋 작동은 영향을 받는 다이에 전송될 수 있으며; 예를 들면, 다이(636b)에 있는 물리적인 소거 블록의 소거는 다이(636b)에 리셋 명령을 전송하는 종료 모듈(514)에 의해 종료될 수 있다.In certain embodiments, program, erase, and read operations do not occur at the bank level as described above; In certain configurations, program, erase, and read operations occur individually on each die 636a-f and 656a-f. In such embodiments, the reset operation may be sent to the affected die; For example, erasing of a physical erase block on die 636b may be terminated by a termination module 514 that sends a reset command to die 636b.

다른 방법들이 식별 모듈(512)에 의해 식별된 것으로 실행되는 필수적이지 않은 작동들을 종료하는데 취해질 수 있다. 일 실시예에서, 종료 모듈(514)은 필수적이지 않은 작동을 중지함으로써 실행 중이거나 실행하기 위해 대기열을 이루는 필수적이지 않은 작동들을 종료한다. 특정한 비휘발성 메모리 장치들(110)은 실행하는 작동들이 중지되는 것을 허용할 수 있다. 이와 같은 실시예들에서, 종료 모듈(514)은 필수적이지 않은 작동들을 재개하는 연이어지는 명령을 전송하지 않고 필수적이지 않은 작동들을 중지하는 명령을 전송할 수 있으며, 이런 작동이 취소되는 것을 효과적으로 야기한다. 다른 실시예들에서, 종료 모듈(514)은 필수적이지 않은 작동들을 중지시키는 명령을 전송할 수 있으며, 모든 필수적인 프로그램 작동들이 완료될 때까지 기다릴 수 있으며, 그런 다음에 하나 이상의 재개 명령을 다양한 중지된 작동들에 전송할 수 있다.Other methods may be taken to terminate the nonessential operations that are performed as identified by the identification module 512. [ In one embodiment, the termination module 514 terminates nonessential operations that are in execution by queuing nonessential operations or queuing to execute them. Certain non-volatile memory devices 110 may allow the performing operations to cease. In such embodiments, the termination module 514 may send commands to resume nonessential operations without sending successive commands and to suspend nonessential operations, effectively causing this operation to be canceled. In other embodiments, the termination module 514 may send a command to stop nonessential operations, wait until all essential program actions have been completed, and then send one or more resume commands to the various suspended operations Lt; / RTI >

도 7은 전력 관리 장치(122)와 저장 장치(102)를 위한 기록 데이터 파이프라인(106)의 일 실시예(700)를 도시한다. 일 실시예에서, 기록 데이터 파이프라인(106)은 도 3과 관련하여 위에 설명된 기록 데이터 파이프라인(106)과 대체로 유사하다. 도시된 실시예(700)에서, 기록 데이터 파이프라인(106)은 입력 버퍼(306), 압축 모듈(312), 암호화 모듈(314), 패킷화장치(302), ECC 발생기(304), 및 기록 버퍼(320)를 포함한다. 다른 실시예들에서, 기록 데이터 파이프라인(106)은 기록 프로그램 모듈(310), 불필요 데이터 수집기 바이패스(316), 매체 암호화 모듈(318), 기록 동기화 버퍼(308), 및/또는 다른 스테이지들과 같은 다른 스테이지들 또는 모듈들을 포함할 수 있다.Figure 7 shows one embodiment 700 of a write data pipeline 106 for power management device 122 and storage device 102. [ In one embodiment, the write data pipeline 106 is substantially similar to the write data pipeline 106 described above with respect to FIG. In the illustrated embodiment 700, the write data pipeline 106 includes an input buffer 306, a compression module 312, an encryption module 314, a packetizer 302, an ECC generator 304, And a buffer 320. In other embodiments, the write data pipeline 106 includes a write program module 310, an unwanted data collector bypass 316, a media encryption module 318, a write synchronization buffer 308, and / or other stages , ≪ / RTI >

도 3에 도시된 바와 같이, 기록 데이터 파이프라인(106)은 고체 상태 저장(SSS) 컨트롤러(104)의 일부분으로 실행될 수 있다. 전력 관리 장치(122)는, 일 실시예에서, 또한 SSS 컨트롤러(104)의 일부분으로 실행될 수 있다. 일 실시예에서, 전력 관리 장치(122)는 독립하여 실행될 수 있지만, SSS 컨트롤러(104)와 통신할 수 있다. 전력 관리 장치(122)는, 다른 실시예에서, SSS 컨트롤러(104)와 통합될 수 있다.As shown in FIG. 3, the write data pipeline 106 may be executed as part of the solid state storage (SSS) controller 104. The power management device 122, in one embodiment, may also be implemented as part of the SSS controller 104. In one embodiment, the power management device 122 may be run independently, but may communicate with the SSS controller 104. The power management device 122 may be integrated with the SSS controller 104, in other embodiments.

위에 논의된 바와 같이, 손상 모듈(516)은, 특정 실시예들에서, PCI-e 연결부(또는 실행에 따른 다른 연결부)를 통해 수신되며 정전 후에 수신되며 (일반적으로 손상된 데이터로 여기 이후에 불리는) 손상된 것으로 여겨지는 데이터를 식별한다. 손상 모듈(516)은, 일 실시예에서, 또한 클라이언트(114)가 손상된 것으로 여겨지는 데이터가 저장 장치(102)에 저장되지 않았다는 것을 알 수 있거나 알아야 하는 것을 보장한다. 일 실시예에서, 손상 모듈(516)은 기록 데이터 파이프라인(106)에서 가장 오래된 조각의 손상된 데이터의 위치를 결정한다. 가장 오래된 조각의 손상된 데이터는 손상 기간이 시작된 후에 수신된 데이터의 시작부에 있다. 가장 오래된 조각의 손상된 데이터로부터 나와서 기록 데이터 파이프라인(106)의 시작(예를 들면, 입력 버퍼(306))으로 되돌아가는 모든 데이터는 손상된 것으로 여겨지며 기록 데이터 파이프라인(106)으로부터 제거된다.As discussed above, corruption module 516, in certain embodiments, is received via a PCI-e connection (or other connection depending on execution) and is received after a power failure (generally referred to herein as corrupted data) Identify data that is believed to be corrupt. The corruption module 516, in one embodiment, also ensures that the client 114 knows or should know that data that is deemed to be corrupted has not been stored in the storage device 102. In one embodiment, corruption module 516 determines the location of the corrupted data of the oldest piece in the write data pipeline 106. The corrupted data of the oldest piece is at the beginning of the received data after the corruption period has begun. Any data that leaves the corrupted data of the oldest piece and returns to the beginning of the write data pipeline 106 (e.g., input buffer 306) is considered corrupted and is removed from the write data pipeline 106.

일 실시예에서, 손상 모듈(516)은 손상 시간을 계산하는데 사용되는 기간이 지난 후까지 저장 장치(102)가 클라이언트(114)로 되돌아서 통지를 보내는 것을 지연하는 것을 야기할 수 있다. 위에 논의된 바와 같이, 저장 장치(102)와 기록 데이터 파이프라인(106)의 구조에 의존하는 특정 실시예들에서, 손상 모듈(516)은 모니터 모듈(510)이 정전을 검출한 후에 5 마이크로초 이상에서 수신된 모든 데이터가 손상된 것으로 가정할 수 있다. 따라서, 5 마이크로초는 손상 시간을 계산하는데 사용되는 기간이다. 따라서, 손상 모듈(516)은 통지가 데이터가 저장 장치(102)에 의해 수신된 후에 5 마이크로초까지 클라이언트(114)에 전송되지 않은 것이라는 것을 구체화할 수 있다. 그 결과로, 특정 실시예들에서, 저장 장치(102)가 데이터는 정전에 의해 손상되지 않았으며 아직 검출되지 않았으며/않았거나 저장 장치(102)에 통신하였다는 것을 보장할 때까지 데이터는 저장된 것으로 결코 통지되지 않는다.In one embodiment, the corruption module 516 may cause the storage device 102 to delay returning to the client 114 to send the notification until after the period of time used to calculate the corruption time has elapsed. As discussed above, in certain embodiments that rely on the structure of the storage device 102 and the write data pipeline 106, the corruption module 516 may detect that the monitor module 510 has detected a power outage, It can be assumed that all the data received in the above is damaged. Thus, 5 microseconds is the period used to calculate the damage time. Thus, corruption module 516 may specify that the notification is not sent to client 114 for up to 5 microseconds after data is received by storage device 102. As a result, in certain embodiments, data is stored until the storage device 102 ensures that the data is not corrupted by power failure and has not yet been detected and / or communicated to the storage device 102 Is never notified.

일 실시예에서, 손상 모듈(516)은 일단 데이터가 버퍼 컨트롤러(208)에 의해 관리되지만, 기록 데이터 파이프라인(106)에 들어오는 데이터에 앞서 버퍼들을 떠나면 통지를 전송한다. 예를 들면, 데이터가 직접 메모리 접속("DMA") 엔진에 의해 저장 장치(102)에 있는 버퍼들로 전송될 수 있으며, 그런 다음에 이런 데이터는 하나 이상의 버퍼 컨트롤러들(208)에 의해 기록 데이터 파이프라인(106)으로 이동된다.In one embodiment, the corruption module 516 sends a notification once the data is managed by the buffer controller 208, but leaves the buffers prior to the data coming into the write data pipeline 106. For example, data may be transferred to buffers in the storage device 102 by a direct memory access ("DMA") engine, and then such data may be transferred to one or more buffer controllers 208, To the pipeline 106.

일 실시예에서, 버퍼 컨트롤러(208)는 DMA 엔진으로부터 데이터를 수신하는 버퍼가 채워지는 것을 허용하며, 손상 시간의 종료를 기다리며, 그런 다음에 클라이언트(114)에 통지를 전송한다. 버퍼가 채워진 후에 일단 기간이 지나면, 정전이 버퍼에 있는 모든 또는 일부분의 데이터를 손상시켰는지 아닌지가 알려지며 데이터가 안전하게 통지될 수 있다. 만약 정전이 일어났다면, 데이터는 기록 데이터 파이프라인(106)에 전송되지 않고 버퍼로부터 제거될 수 있다. 더구나, 만약 정전이 일어났다면, 통지는 데이터가 저장되었다는 것을 알려주는 클라이언트(114)에 전송되지 않을 수 있다. 최선의 실시에 따라, 그러므로 클라이언트(114)는 데이터가 저장되지 않았다는 것을 가정해야 한다. 다른 실시예에서, 기록 데이터 파이프라인(106)에서 데이터 손상의 잠재적인 위험은 받아들일 수 있으며 그래서 버퍼 컨트롤러(208)는 버퍼가 채워지는 것을 허용하며, 지연이 손상 시간 동안 부여되지 않으며, 그런 다음에 저장 장치(102)가 클라이언트(114)에 통지를 전송한다. 특정 실시예들에서, 저장 장치(102)는 디폴트로 손상 회피 지연을 삽입하며 손상 회피 지연을 삽입하지 않는 것을 허용하도록 구성될 수 있다.In one embodiment, the buffer controller 208 allows the buffer that receives data from the DMA engine to be filled, waits for the end of the corruption time, and then forwards the notification to the client 114. Once the buffer has been filled, once the period has elapsed, it is known whether the power outage has corrupted all or part of the data in the buffer and the data can be notified securely. If a power failure has occurred, the data may be removed from the buffer without being transferred to the write data pipeline 106. Moreover, if a power outage has occurred, the notification may not be transmitted to the client 114 indicating that the data has been stored. In accordance with the best practice, therefore, the client 114 must assume that the data has not been stored. In another embodiment, the potential risk of data corruption in the write data pipeline 106 may be acceptable and so the buffer controller 208 allows the buffer to be filled, the delay is not granted for the impairment time, The storage device 102 sends a notification to the client 114. [ In certain embodiments, the storage device 102 may be configured to insert a damage avoidance delay by default and not to insert a damage avoidance delay.

그 결과로, 이와 같은 실시예에서, 손상 모듈(516)은 정전에 의해 손상된 데이터가 기록 데이터 파이프라인(106)으로 들어오는 것을 방지할 수 있으며 저장 장치(102)가 정전 중에 데이터가 손상되지 않았다는 것을 가정할 수 있는 후까지 저장 장치(102)가 통지를 전송하는 것을 더 방지할 수 있다.As a result, in such an embodiment, the corruption module 516 can prevent data corrupted by power outages from entering the write data pipeline 106 and that the storage device 102 is not corrupted It is possible to further prevent the storage device 102 from transmitting the notification until after it can be assumed.

다른 실시예에서, 손상 모듈(516)은 초크 점에서 기록 데이터 파이프라인(106) 내에서 손상된 데이터를 정지시킨다. 초크 점은, 정전이 검출된 경우에, 초크 점의 위(즉, 입력 버퍼(306)에 있는 데이터를 포함하는, 초크 점과 입력 버퍼(306) 사이)에 있는 임의의 데이터가 손상된 것으로 여겨지는 기록 데이터 파이프라인(106)의 위치이다. 초크 점의 위치는 데이터가 기록 데이터 파이프라인(106)을 통해 그리고 또는 손상 시간을 결정하는데 사용되는 기간에 진행하는 속도로 결정될 수 있다. 예를 들면, 손상 모듈(516)은, 손상 시간 이후 5 마이크로초 내에, 기록 데이터 파이프라인(106)으로 이동될 수 있는 가장 먼 데이터가 ECC 발생기(304)에 있다는 것을 가정할 수 있다. 따라서, ECC 발생기(304)는, 예시적인 실시예에서, 기록 데이터 파이프라인(106)의 초크 점이다. 정전이 검출되는 경우에, 손상 모듈(516)은 ECC 발생기(304) 내에 있는 데이터와 기록 데이터 파이프라인의 위로 더 멀리 있는(즉, 매체 암호화 모듈(314), 패킷화장치(302), 및 기록 데이터 파이프라인(106)의 위에 있는 기타 등등) 임의의 데이터가 기록 데이터 파이프라인(106)을 통해 그리고 비휘발성 메모리(110)로 이동되는 것을 방지할 수 있다. 특정 실시예들에서, 손상 모듈(516)은 초크 점의 위에 있는 기록 데이터 파이프라인(106)에서 일어나는 작동들을 중단한다.In another embodiment, the corruption module 516 stops corrupted data in the write data pipeline 106 at the choke point. The choke point indicates that any data lying above the choke point (i. E., Between the choke point and the input buffer 306, including data in the input buffer 306) is considered to be damaged And the location of the record data pipeline 106. The location of the choke point may be determined at a rate at which data travels through the write data pipeline 106 and / or during the time period used to determine the damage time. For example, damage module 516 may assume that ECC generator 304 is in the farthest data that can be moved to write data pipeline 106, within 5 microseconds after the damage time. Thus, the ECC generator 304, in the exemplary embodiment, is the choke point of the write data pipeline 106. [ In the event of a power outage, the corruption module 516 may be further from the data in the ECC generator 304 and above the write data pipeline (i.e., the media encryption module 314, the packetizing device 302, Data pipeline 106, etc.), any data may be prevented from moving through the write data pipeline 106 and into the non-volatile memory 110. In certain embodiments, the corruption module 516 interrupts operations occurring in the write data pipeline 106 above the choke point.

다른 실시예에서, 초크 점의 위치는 기록 데이터 파이프라인(106)이 비휘발성 메모리(110)에 데이터를 기록하기에 충분한 정보를 가지는 위치에 의해 결정될 수 있다. 예를 들면, 일 실시예에서, 일단 패킷화장치(302)가 완성된 패킷에 추가된 헤더 메타데이터를 가진다면, 기록 데이터 파이프라인(106)은 패킷을 더 처리하며(즉 ECC 발생기(304) 등으로 패킷을 통과시키며) 비휘발성 메모리(110)에 패킷을 기록하기에 충분한 정보를 가진다. 패킷은, 일 실시예에서, 기록 데이터 파이프라인(106)에 있는 가장 작은 기록 가능한 단위의 데이터이다. 이런 예시적인 실시예에서, 패킷화장치(302)는 초크 점이다. 다른 실시예에서, ECC 청크 또는 코드워드는 기록 데이터 파이프라인(106)에 있는 가장 작은 기록 가능한 단위의 데이터이며, ECC 발생기(304)는 초크 점일 수 있다. 일 실시예에서, 제2 전력 공급부(124)의 특징은 데이터가 초크 점으로부터 기록 데이터 파이프라인(106)을 통해 충분히 통과될 만큼 충분하게 긴 전력 유지 시간을 제공하며 비휘발성 메모리(110)에 기록되기 위해 선택된다.In another embodiment, the location of the choke point may be determined by the location at which the record data pipeline 106 has sufficient information to write data to the non-volatile memory 110. [ For example, in one embodiment, once the packetizer 302 has header metadata added to the completed packet, the record data pipeline 106 further processes the packet (i.e., the ECC generator 304) Volatile memory 110) that has sufficient information to write a packet. The packet is, in one embodiment, the smallest writable unit of data in the write data pipeline 106. In this exemplary embodiment, the packetizer 302 is a choke point. In another embodiment, the ECC chunk or codeword is the smallest writable unit of data in the write data pipeline 106, and the ECC generator 304 may be a choke point. In one embodiment, the characteristic of the second power supply 124 is that it provides a power hold time that is sufficiently long enough for data to pass through the write data pipeline 106 from the choke point and is written to the non-volatile memory 110 .

특정 실시예들에서, 일단 데이터가 기록 데이터 파이프라인(106)에 있는 초크 점을 통해 완전히 이동되었다면 손상 모듈(516)은 데이터에 대한 통지를 전송한다. 따라서, 손상 데이터는 정지될 수 있으며, 손상 데이터에 작용하는 작동들은 통지가 전송되기 전에 중단될 수 있다. 그 결과로, 클라이언트(114)는 저장되거나 저장되기 위해 이런 파이프라인에 있는 데이터가 양호하며 손상되지 않은 데이터일 때까지 통지를 주지 않는다.In certain embodiments, once the data has been completely moved through the choke point in the write data pipeline 106, the corruption module 516 sends a notification of the data. Thus, the corruption data can be stopped, and actions acting on the corruption data can be stopped before the notification is sent. As a result, the client 114 does not give notice until the data in this pipeline is good and is not corrupted, in order to be stored or stored.

특정 실시예들에서, 데이터는 원자 데이터 유닛으로 조직될 수 있다. 예를 들면, 원자 데이터 유닛은 패킷, 페이지, 논리 페이지, 논리 패킷, 블록, 논리 블록, (논리 블록 어드레스가 인접하거나 인접하지 않은) 하나 이상의 논리 블록 어드레스와 관련된 한 세트의 데이터, 파일, 문서, 또는 다른 그룹의 관련된 데이터일 수 있다. 이와 같은 실시예들에서, 손상 모듈(516)은 전체 원자 데이터 유닛이 초크 점을 통해 통과될 때까지 통지를 전송하는 것을 지연시킬 수 있다. 예를 들면, 파일의 일부분이 초크 점을 통해 통과될 수 있으며 그에 따라 손상되지 않은 데이터인 것으로 알려지며; 그러나, 파일의 마지막 반은 초크 점을 통해 아직 통과되지 않았으며 그에 따라 손상된 데이터를 포함할 수 있다. 원자 데이터 유닛의 일부분만이 이동될 때 통지를 전송하는 것과 반대로, 손상 모듈(516)은 전체 원자 데이터 유닛이 통지를 전송하기 전에 초크 점을 통해 통과될 때까지 기다릴 수 있다. 일 실시예에서, 손상 모듈(516)은 손상된 원자 데이터 유닛들을 부분적으로 버린다. 다른 실시예에서, 손상 모듈(516)은 원자 데이터 유닛의 손상되지 않은 부분, 또는 원자 데이터 유닛의 손상되지 않은 부분과 손상된 부분 모두가 기록 데이터 파이프라인(106)을 통해 통과되며 비휘발성 메모리(110)에 기록되는 것을 허용한다. 특정 실시예들에서, 원자 데이터 유닛은 부분적인 데이터 또는 손상된 데이터를 포함할 수 있는 경우에, 전력 관리 장치(122)는 적절한 상태의 원자 데이터 유닛을 지시하기 위해 저장된 데이터를 가지는 지시자를 포함할 수 있다.In certain embodiments, the data may be organized into atomic data units. For example, an atomic data unit may be a set of data, files, documents, and / or data associated with one or more logical block addresses (adjacent or non-adjacent logical block addresses) of a packet, page, logical page, logical packet, Or other group of related data. In such embodiments, the corruption module 516 may delay sending notifications until the entire atomic data unit has passed through the choke point. For example, a portion of a file may be passed through a choke point and is therefore known to be undamaged data; However, the last half of the file has not yet been passed through the choke point and can therefore contain corrupted data. In contrast to sending a notification when only a portion of the atomic data unit is moved, the corruption module 516 may wait until the entire atomic data unit has passed through the choke point before sending the notification. In one embodiment, corruption module 516 partially discards corrupted atomic data units. In another embodiment, the corruption module 516 is configured such that both the undamaged portion of the atomic data unit, or the undamaged portion and the corrupted portion of the atomic data unit are passed through the write data pipeline 106 and the non-volatile memory 110 ). ≪ / RTI > In certain embodiments, when the atomic data unit may include partial data or corrupted data, the power management device 122 may include an indicator with stored data to indicate the atomic data unit in the appropriate state have.

손상 모듈(516)은 정전이 검출된 후에 기록 데이터 파이프라인(106)으로 데이터의 흐름을 정지시키는 원인이 더 될 수 있다. 따라서, 손상된 데이터가 기록 데이터 파이프라인(106)의 외부에서 또는 기록 데이터 파이프라인(106) 내부에서 취급되는지에 관계없이, 손상 모듈(516)은 정전이 검출된 후에 임의의 데이터가 기록 데이터 파이프라인(106)에 들어오는 것을 방지할 수 있다.The corruption module 516 may be further responsible for stopping the flow of data to the write data pipeline 106 after a power failure has been detected. Thus, irrespective of whether the corrupted data is handled outside of the write data pipeline 106 or within the write data pipeline 106, the corruption module 516 may be configured so that after the power failure is detected, (106).

완성 모듈(518)은 또한 손상되지 않으며 통지되지 않은 데이터가 기록 데이터 파이프라인(106)을 통해 이동되며 비휘발성 메모리(110)에 저장되는 것을 보장하기 위해 기록 데이터 파이프라인(106)과 함께 작용할 수 있다. 기록 데이터 파이프라인(106)에 있는 모듈들/스테이지들은 이들의 작동들을 서포팅하기 위해 버퍼들을 사용할 수 있다. 특정 실시예들에서, (모듈들(302-314)과 같은) 모듈들은 일단 관련된 버퍼가 채워지면 단지 작동들만을 실행한다. 예를 들면, ECC 발생기(304)는 버퍼가 채워질 때까지 기다릴 수 있으며 그런 다음에 전체 버퍼에 대한 ECC 값을 발생시킬 수 있다. 일 실시예에서, 버퍼 컨트롤러(208)는 기록 데이터 파이프라인(106)에 있는 버퍼들을 통해 데이터의 흐름을 관리한다. 이와 마찬가지로, 기록 데이터 파이프라인(106)은 도 3과 관련하여 위에 설명된 것과 같이 기록 데이터 파이프라인(106)에 있는 스테이지들에 대한 하나 이상의 제어 큐들(342)을 포함할 수 있다.Completion module 518 may also act with write data pipeline 106 to ensure that undamaged and unreported data is moved through the write data pipeline 106 and stored in non-volatile memory 110 have. The modules / stages in the write data pipeline 106 may use buffers to support their operations. In certain embodiments, modules (such as modules 302-314) perform only operations once the associated buffer is filled. For example, the ECC generator 304 may wait until the buffer is filled and then generate an ECC value for the entire buffer. In one embodiment, the buffer controller 208 manages the flow of data through the buffers in the write data pipeline 106. Likewise, the write data pipeline 106 may include one or more control queues 342 for the stages in the write data pipeline 106, as described above with respect to FIG.

통상의 작동 중에, 기록 데이터 파이프라인(106)은 버퍼들이 항상 채워질 정도로 기록 데이터 파이프라인(106)을 통해 데이터를 계속해서 스트리밍한다. 그러나, 정전의 경우에, 기록 데이터 파이프라인(106)으로 데이터 흐름은 기록 데이터 파이프라인(106)에 있는 하나 이상의 버퍼들이 단지 부분적으로 채워질 때 정지될 수 있다. 예를 들면, 위에 언급된 바와 같이, 손상 모듈(516)은 기록 데이터 파이프라인(106)으로부터 손상된 데이터를 제거할 수 있으며 새로운 데이터가 저장 장치(102)로 흐르는 것을 방지할 수 있다. 그 결과로, 기록 데이터 파이프라인(106)에 있는 하나 이상의 버퍼들은 부분적으로 채워지게 할 수 있다. 만약 데이터가 기록 데이터 파이프라인(106)을 통해 이동되지 않는다면, 데이터는 일단 제2 전력 공급부(124)가 소진되면 전력 유지 시간의 끝에서 손실될 것이다.During normal operation, the write data pipeline 106 continues to stream data through the write data pipeline 106 to such an extent that buffers are always filled. However, in the case of a power failure, the data flow to the write data pipeline 106 may be stopped when one or more buffers in the write data pipeline 106 are only partially filled. For example, as noted above, the corruption module 516 may remove corrupted data from the write data pipeline 106 and prevent new data from flowing to the storage device 102. As a result, one or more buffers in the write data pipeline 106 may be partially filled. If the data is not moved through the write data pipeline 106, the data will be lost at the end of the power hold time once the second power supply 124 is exhausted.

특정 실시예들에서, 완성 모듈(518)은 전력 손실 모드 중에 기록 데이터 파이프라인(106)에 있는 부분적으로 채워진 버퍼들을 통해 데이터를 플러싱한다. 완성 모듈(518)은, 일 실시예에서, 채우는 데이터로 부분적으로 채워진 버퍼들을 채운다. 다른 실시예들에서, 위에 설명된 바와 같이, 완성 모듈(518)은 채우는 데이터, 또는 이와 유사한 것으로 버퍼의 채워지지 않은 부분에 저장된 존재하는 값들을 사용함으로써 채우는 데이터를 추가하지 않고 데이터를 플러싱할 수 있다. 그 결과로, 데이터와 채우는 것은 버퍼에서 작동되며, 이로부터 이동되며, 기록 데이터 파이프라인(106)을 통해 이동된다. 기록 데이터 파이프라인(106)에 사용되는 버퍼들은 모두 동일한 크기가 아닐 수 있으며; 이와 같은 실시예들에서, 완성 모듈(518)은 데이터가 기록 데이터 파이프라인(106)을 통해 이동될 때 데이터를 모니터링하며 버퍼가 부분적으로 채워지는 임의의 점에서 추가적인 버퍼들을 플러싱할 수 있다.In certain embodiments, the completion module 518 flushes the data through the partially filled buffers in the write data pipeline 106 during the power loss mode. The completion module 518, in one embodiment, fills partially filled buffers with the filling data. In other embodiments, as described above, the completion module 518 may flush the data without adding the filling data by using the existing values stored in the unfilled portion of the buffer as filling data, or the like have. As a result, the data and fill are operated in the buffer, moved therefrom, and moved through the write data pipeline 106. The buffers used in the write data pipeline 106 may not all be the same size; In such embodiments, the completion module 518 may monitor data as data is moved through the write data pipeline 106 and may flush additional buffers at any point where the buffer is partially filled.

특정 실시예들에서, 완성 모듈(518)은 미래에 채우는 데이터가 실제 데이터와 틀리는 것을 방지하도록 채우는 데이터를 식별하기 위해 특정한 마커, 지시자, 또는 헤더를 사용한다. 특정 실시예들에서, 패드 시퀀스는 "1"이 비휘발성 메모리(110) 셀들이 일어난 이런 셀들의 프로그램에 앞서 있는 상태일 때 1 값으로 구성된다. 예를 들면, 플래시 메모리에서, 프로그램 작동들은 1들을 0들로 변환한다. 1들로 구성되는 패드 시퀀스를 사용함으로써, 1들을 0들로 변환하는데 필요한 전력은 보존될 수 있다. 관련된 실시예에서, 패드 데이터를 구성하는 1들은 셀들이 이미 1 상태일 때 프로그램 작동을 시작하기 전에 전송되는 것을 필요하지 않는다.In certain embodiments, the completion module 518 uses a particular marker, indicator, or header to identify data that fills in future data to prevent it from being inaccurate with the actual data. In certain embodiments, the pad sequence is configured with a value of one when "1 " is in a state prior to programming of such cells in which non-volatile memory 110 cells have occurred. For example, in a flash memory, program operations convert ones to zeros. By using a pad sequence consisting of 1s, the power required to convert 1s to 0s can be conserved. In a related embodiment, the ones that constitute the pad data do not need to be transmitted before starting program operation when the cells are already in the 1 state.

특정 실시예들에서, 데이터가 저장 I/O 버스(210)를 통해, 그리고 비휘발성 메모리(110)로 기록 데이터 파이프라인(106)으로부터 이동될 때, 지시자는 데이터가 적절하게 기록되었는지 아닌지를 가리키는 패킷으로 삽입된다. 특정 실시예들에서, 지시자는 데이터에 대한 패킷의 헤더로 삽입되며 지시자를 가지는 패킷에 우선하는 패킷에 있는 데이터가 적절하게 기록되었는지를 가리킨다. 따라서, 만약 패킷이 성공적으로 프로그래밍된다면, 연이어지는 패킷의 헤더는 프로그래밍된 마지막 패킷이 성공적으로 프로그래밍된 것을 알리는 지시자로 프로그래밍된다.In certain embodiments, when data is moved from the write data pipeline 106 through the storage I / O bus 210 and into the non-volatile memory 110, the indicator indicates whether the data has been properly written Lt; / RTI > In certain embodiments, the indicator is inserted into the header of the packet for data and indicates whether the data in the packet that precedes the packet with the indicator has been properly written. Thus, if the packet is successfully programmed, the header of the successive packet is programmed with an indicator that the last programmed packet has been successfully programmed.

다른 실시예들에서, 지시자는 풋터에 있는 패킷의 끝에 배치되며 지시자가 포함되는 패킷이 적절하게 기록되었는지를 가리킨다. 일 실시예에서, 이는 데이터가 헤더 공간으로 침입할 정도로 데이터를 1 비트 앞에 이동시킴으로써 행해진다. 따라서, 만약 헤더가 64 비트 헤더라면, 이동은 헤더 공간을 63 비트로 감소시키며 풋터에 1 비트를 추가한다. 이는 지시자로 사용될 수 있는 패킷의 끝에 1 비트를 남긴다. 이런 방법은 각각의 패킷이 이의 자신의 상태를 지시하는 것을 허용하면서 적절하게 정렬을 유지하며, 실시예들에서 이는 경계 정렬에 민감할 수 있다.In other embodiments, the indicator is placed at the end of the packet in the footer and indicates whether the packet containing the indicator is properly recorded. In one embodiment, this is done by moving the data one bit ahead of the data into the header space. Thus, if the header is a 64-bit header, the move reduces the header space to 63 bits and adds a bit to the footer. This leaves a bit at the end of the packet that can be used as an indicator. This method maintains proper alignment while allowing each packet to indicate its own state, and in embodiments it may be sensitive to border alignment.

지시자는 패킷이 채우는 것을 포함하며 데이터가 그에 따라 완성되지 않으며 시스템에 의해 사용 가능할 수 없는지를 식별하는데 사용될 수 있다. 특정 실시예들에서, 저장 장치(102)가 정전 후에 다시 전력이 공급될 때, 지시자는 비휘발성 메모리(110)에 대한 인덱스들와 타당성 맵의 재구성에 도움을 주는데 사용된다.The indicator may include a packet filling and may be used to identify if the data is not complete accordingly and can not be used by the system. In certain embodiments, when storage device 102 is powered back after a power failure, the indicator is used to help rebuild indexes and validity maps for non-volatile memory 110.

특정 실시예들에서, 하나의 지시자는 각각의 원자 데이터 유닛에 삽입된다. 위에 언급된 바와 같이, 지시자는 원자 데이터 유닛에 있는 마지막 패킷의 끝에 있는 풋터로 배치될 수 있다. 따라서 지시자는 전체 원자 데이터 유닛에 대한 데이터가 적절하게 기록되었는지를 가리킬 수 있다. 만약, 예를 들면, 정전이 원자 데이터 유닛의 일부분만이 기록되는 것을 야기하며, 마지막 패킷이 위에 설명된 바와 같이 채워졌다면, 지시자는 전체 원자 데이터 유닛이 적절하게 기록되지 않았다는 것을 지시할 것이다. 더구나, 위에 논의된 바와 같이, 특정 실시예들에서, 통지가 특정 실시예들에서, 클라이언트(114)에 전송될 것이다.In certain embodiments, one indicator is inserted into each atomic data unit. As mentioned above, the indicator may be placed into a footer at the end of the last packet in the atomic data unit. Thus, the indicator may indicate whether the data for the entire atomic data unit has been properly recorded. If, for example, a power failure causes only a portion of the atomic data unit to be written, and the last packet is filled as described above, the indicator will indicate that the entire atomic data unit was not properly written. Moreover, as discussed above, in certain embodiments, the notification will be sent to the client 114, in certain embodiments.

일 실시예에서, 손상된 데이터는 비휘발성 메모리(110)로 진행하는 통지된 양호한 데이터를 플러싱하기 위해 기록 데이터 파이프라인(106)을 통해 진행하는 것이 허용된다. 손상된 데이터는 위에 설명된 바와 같은 지시자를 설정함으로써 식별될 수 있으며, 이런 지시자는 타당하지 않은 것/손상된 것으로 데이터를 플래그한다. 관련된 실시예들에서, 특수화된 패킷들, 헤더들, 유일한 문자 스트림들, 마커들 및 본 기술분야에 숙련된 사람들에게 알려진 유사한 방법들과 같은 다른 형태의 지시자들은 비휘발성 메모리(110)에 저장된 손상된 데이터를 무효로 하기 위해 위에 설명된 지시자와 대체될 수 있다. 모든 이와 같은 경우에, 손상된 데이터는 클라이언트(114)에 결코 통지되지 않아야 한다.In one embodiment, the corrupted data is allowed to proceed through the write data pipeline 106 to flush the reported good data going to the non-volatile memory 110. The corrupted data can be identified by setting an indicator as described above, which flags the data as invalid / corrupted. In related embodiments, other types of indicators, such as specialized packets, headers, unique character streams, markers, and similar methods known to those skilled in the art, It can be replaced with the indicator described above to invalidate the data. In all such cases, the corrupted data should never be communicated to the client 114.

도 5와 관련하여 위에 설명된 바와 같이, 완성 모듈(518)은, 일 실시예에서, 유일한 헤더, 풋터, 토큰, 마커, 패턴, 또는 전력 관리 장치(122)가 기록 데이터 파이프라인(106) 또는 이와 유사한 것을 통해 기록 데이터를 성공적으로 플러싱하며 전력 유지 시간 중에 비휘발성 메모리(110)에 데이터를 성공적으로 저장하는 것과 같은 전력 손실 모드에서 필수적인 작동들을 성공적으로 완료하였는지를 식별하는 다른 지시자를 사용한다. 지시자는, 일 실시예에서, 손상된 데이터, 채우는 데이터, 또는 이와 유사한 것을 식별하는 위에 설명된 동일한 지시자이다. 다른 실시예에서, 완성 모듈(518)은 전력 손실 모드 중에 필수적인 작동들의 성공적인 실행을 식별하기 위해 개개의 지시자를 사용한다.As described above with respect to FIG. 5, the completion module 518 is configured to determine whether a unique header, footer, token, marker, pattern, or power management device 122 is present in the record data pipeline 106 or A similar indicator is used to successfully flush the write data and to indicate whether it has successfully completed essential operations in a power loss mode, such as successfully storing data in the non-volatile memory 110 during power hold time. The indicator is, in one embodiment, the same indicator described above that identifies the corrupted data, the data to fill, or the like. In another embodiment, completion module 518 uses an individual indicator to identify a successful execution of operations that are required during a power loss mode.

일 실시예에서, 원자 데이터 유닛은 복수의 인접하지 않으며/인접하지 않거나 손상된 논리 블록 어드레스들 또는 기록 데이터 파이프라인(106)이 단일 원자 데이터 유닛으로 취급하는 다른 지시사들과 연결된다. 여기에 사용되는 바와 같이, 단일 기록 작동에 인접하지 않으며/인접하지 않거나 손상된 논리 블록들을 기록하는 것은 원자 기록으로 불린다. 일 실시예에서, 하드웨어 컨트롤러는 수신된 순서로 작동을 처리하며 클라이언트(114)의 소프트웨어 드라이버는 단일 원자 기록을 위해 하드웨어 컨트롤러에 작동들을 함께 전송하며 그 결과 기록 데이터 파이프라인(106)은 통상적으로 원자 기록 작동을 프로세싱할 수 있다. 하드웨어가 순서대로 프로세싱되기 때문에, 이는 주어진 원자 기록에 대한 상이한 논리 블록 어드레스들 또는 다른 식별자들이 기록 데이터 파이프라인(106)을 통해 비휘발성 메모리(110)로 함께 진행하는 것을 보장한다. 일 실시예에서, 종료 모듈(514)이 통지된 기록 작동들을 종료하지 않기 때문에, 통지된 원자 기록들은 비휘발성 메모리(110)에 성공적으로 저장되며 만약 클라이언트(114)가 통지를 수신하지 않는다면, 클라이언트(114)는 전력 손실 또는 이와 유사한 것 때문에 원자 기록이 실패했는지를 검출할 수 있다. 클라이언트(114)는, 일 실시예에서, 일단 전력이 회복되었다면 회복 중에 실패한 원자 기록들 및/또는 다른 실패하거나 종료된 작동들을 취소하거나, 다시 처리하거나, 또는 그렇지 않으면 취급할 수 있다.In one embodiment, the atomic data unit is associated with a plurality of non-contiguous / non-contiguous or corrupted logical block addresses or other indicators that the write data pipeline 106 treats as a single atomic data unit. As used herein, writing non-contiguous / non-contiguous or damaged logical blocks to a single recording operation is referred to as atomic recording. In one embodiment, the hardware controller processes operations in a received order and the software drivers of client 114 transmit operations to the hardware controller for single atomic writes, such that the write data pipeline 106 typically includes atom The recording operation can be processed. Because the hardware is processed in order, this ensures that different logical block addresses or other identifiers for a given atomic record go through the write data pipeline 106 to the non-volatile memory 110 together. In one embodiment, because the termination module 514 does not terminate the notified write operations, the atomic writes reported are successfully stored in the non-volatile memory 110, and if the client 114 does not receive the notification, (114) may detect if atomic writing has failed due to power loss or the like. The client 114 may, in one embodiment, cancel, reprocess, or otherwise handle failed atomic records and / or other failed or terminated operations during recovery if power is once recovered.

일 실시예에서, 클라이언트(114)에 있는 소프트웨어 드라이버는 특정 블록이 원자 기록의 일부분인지를 지시하는 메타데이터 플래그를 가지는 원자 기록의 블록들을 마킹할 수 있다. 일 예의 메타데이터 마킹은 메타데이터 플래그, 또는 이와 유사한 것과 함께 비휘발성 메모리(110)의 로그 기록/첨부 전용 프로토콜에 의존하는 것이다. 데이터를 저장하기 위한 첨부 전용 로그의 사용과 임의의 인터리브된 블록들의 방지는 원자 기록 멤버쉽 메타데이터가 단일 비트인 것을 가능하게 한다. 일 실시예에서, 블록이 원자 기록의 멤버가 아니라면 플래그 비트는 0일 수 있으며, 그런 다음에 비트는 1일 수 있거나 그 반대일 수 있다. 만약 블록이 원자 기록의 멤버이며 원자 기록의 마지막 블록이라면, 일 실시예에서, 메타데이터 플래그는 블록이 원자 기록의 마지막 블록인지를 가리키기 위해 0일 수 있다. 다른 실시예에서, 상이한 하드웨어 명령이 원자 기록의 제1 블록, 원자 기록의 중간 멤버 블록들, 원자 기록의 꼬리, 또는 이와 유사한 것과 같은 원자 기록을 위한 상이한 헤더들을 마킹하기 위해 전송될 수 있다.In one embodiment, the software driver in client 114 may mark blocks of atomic writes having metadata flags indicating whether a particular block is part of atomic writes. One example of metadata marking relies on the log record / attach protocol of non-volatile memory 110, along with metadata flags, or the like. The use of an attachment-only log to store data and the prevention of arbitrary interleaved blocks enables the atomic write membership metadata to be a single bit. In one embodiment, the flag bit may be zero if the block is not a member of atomic recording, then the bit may be one or vice versa. If the block is a member of atomic recording and is the last block of atomic recording, in one embodiment, the metadata flag may be zero to indicate whether the block is the last block of atomic recording. In another embodiment, different hardware instructions may be sent to mark different headers for atomic recording, such as the first block of atomic records, intermediate member blocks of atomic recording, tail of atomic recording, or the like.

클라이언트(114) 또는 저장 장치(102)의 전력 손실 또는 다른 고장으로부터 회복 중에, 일 실시예에서, 저장 컨트롤러(104), 전력 관리 장치(122), 또는 이와 유사한 것은 결정적 방향으로 비휘발성 메모리(110)에 대한 로그를 스캐닝한다(예를 들면, 일 실시예에서 로그의 시작은 꼬리이며 로그의 끝은 헤드이며 데이터는 항상 헤드에 추가된다). 일 실시예에서, 전력 관리 장치(122)는 로그의 헤드로부터 로드의 꼬리를 향해 스캐닝한다. 다른 실시예들에서, 전력 관리 장치(122)는 로그의 꼬리로부터 로그의 헤드를 향해 스캐닝할 수 있거나, 꼬리로부터 한번 그리고 헤드로부터 꼬리까지 한번 스캐닝할 수 있거나, 또는 그렇지 않으면 회복을 위해 로그를 스캐닝할 수 있다. 원자 기록 회복을 위해, 일 실시예에서, 꼬리에서 헤드를 스캐닝할 때, 만약 메타데이터 플래그 비트가 0이라면, 그러면 블록은 단일 블록 원자 기록이거나 비원자 기록 블록이다. 일 실시예에서, 일단 메타데이터 플래그 비트가 0에서부터 1까지 변한다면, 스캐닝된 이전의 블록과 잠재적으로 스캐닝된 현재 블록은 원자 기록의 멤버들이다. 전력 관리 장치(122)는, 일 실시예에서, 메타데이터 플래그가 로그에 있는 이런 점에서 0으로 다시 변경될 때까지 로그를 계속해서 스캐닝하며, 스캐닝된 이전의 블록은 원자 기록의 마지막 멤버이며 원자 기록을 위해 저장된 제1 블록이다.In one embodiment, storage controller 104, power management device 122, or the like, in a deterministic direction, during recovery from power loss or other failure of client 114 or storage device 102, (For example, in one embodiment, the beginning of the log is the tail, the end of the log is the head, and the data is always added to the head). In one embodiment, the power management device 122 scans from the head of the log toward the tail of the load. In other embodiments, the power management device 122 may scan from the tail of the log toward the head of the log, once from the tail and from the head to the tail once, or otherwise scan the log for recovery can do. For atomic recording recovery, in one embodiment, when scanning heads in the tail, if the metadata flag bit is zero then the block is either a single block atomic record or a non-atomic write block. In one embodiment, once the metadata flag bit changes from 0 to 1, the previous scanned block and the potentially scanned current block are members of the atomic record. The power management device 122 continues to scan the log, in one embodiment, until the metadata flag changes back to zero at this point in the log, and the previous scanned block is the last member of the atomic record, Is the first block stored for recording.

일 실시예에서, 비휘발성 메모리(110)는 새로운 기록들이 로그의 전방에(즉 로그의 헤드에) 계속되는 경우에 로그 기반, 첨부 전용 기록 구조 기록 시스템을 사용한다. 다른 실시예에서, 저장 컨트롤러(104)는 불필요 데이터 수집 시스템, 그루머, 클리너 에이전트, 또는 이와 유사한 것을 사용하여 로그의 삭제되며, 무효이며/무효이거나 손상된 블록들을 다시 이용한다. 저장 컨트롤러(104)는, 다른 실시예에서, 첨부 전용 기록 구조와 불필요 데이터 수집의 사용을 용이하게 하도록 물리적 어드레스들까지 논리 블록 어드레스들을 맵핑하기 위해 포워드 맵을 사용한다.In one embodiment, the non-volatile memory 110 uses a log-based, attach-only record structure recording system where new records continue in front of the log (i.e., at the head of the log). In another embodiment, the storage controller 104 re-uses invalid, invalid, or corrupted blocks of logs using a garbage collection system, a rumor, a cleaner agent, or the like. The storage controller 104, in another embodiment, uses a forward map to map logical block addresses to physical addresses to facilitate use of attachment-only recording structures and unnecessary data collection.

저장 컨트롤러(104)는, 다른 실시예에서, 인플라이트 트리, 또는 이와 유사한 것과 같은 데이터 구조를 사용하여 저장 장치(102)의 통상의 작동 중에 프로세스 내의 기록 작동들을 추적한다. 인플라이트 트리는, 일 실시예에서, 저장 장치(102)에 의해 수신되었지만 아직 완성되지 않은 (특정 기록 요청들에서) 블록 저장 요청들의 기록을 유지하는 데이터 구조이다. 전력 관리 장치(122)는, 일 실시예에서, 단일 블록 기록에 대해, 심지어 전력이 상실되더라도 기록이 완성되도록 보증된다는 것을 보장한다.The storage controller 104, in another embodiment, uses a data structure such as an inflate tree, or the like, to track write operations within the process during normal operation of the storage device 102. [ The inflate tree is, in one embodiment, a data structure that maintains a record of block storage requests received by storage device 102 but not yet completed (in particular write requests). The power management device 122, in one embodiment, ensures that for a single block write, the write is guaranteed to be complete even if power is lost.

도시된 실시예(700)에서, 패킷화장치(302)는 미완성 패킷(702) 및 완성 패킷(704)을 포함한다. 일 실시예에서, 만약 미완성의 패킷(702)이 원자 데이터 유닛의 끝에 있다면, 손상 모듈(516)은 미완성 패킷(702)과 완성 패킷(704)의 데이터에 대한 통지를 클라이언트(114)에 전송할 수 있다. 전력 손실 모드 중에, 일 실시예에서, 완성 모듈(518)은 패킷화장치(302)로부터 미완성 패킷(702)을 플러싱한다. 위에 설명된 바와 같이, 특정 실시예들에서, 완성 모듈(518)은 미완성 패킷(702)에서 타당한 데이터의 끝을 지시하는 마커를 추가할 수 있으며, 패킷(702)에 채우는 데이터를 추가할 수 있으며/ 추가할 수 있거나, 그렇지 않으면 패킷화장치(302)로부터 미완성 패킷(702)을 플러싱할 수 있다.In the illustrated embodiment 700, the packetization device 302 includes an incomplete packet 702 and a completion packet 704. In one embodiment, if the incomplete packet 702 is at the end of the atomic data unit, the corruption module 516 may send a notification to the client 114 about the data in the incomplete packet 702 and the completion packet 704 have. During a power loss mode, in one embodiment, completion module 518 flushes incomplete packet 702 from packetizer 302. As described above, in certain embodiments, completion module 518 may add a marker indicating the end of valid data in unfinished packet 702, add data to fill packet 702, / Else, or otherwise flush incomplete packets 702 from the packetization device 302.

다른 실시예에서, 만약 완성 패킷(704)이 원자 데이터 유닛의 끝에 있으며 미완성 패킷(702)이 미완성의 상이한 원자 데이터 유닛으로부터 나왔다면, 손상 모듈(516)은 완성 패킷(704)의 데이터에 대해 클라이언트(114)에 통지를 전송하지만, 미완성 패킷(702)의 데이터를 클라이언트(114)에 통지하지 않는다. 전력 손실 모드 중에, 일 실시예에서, 종료 모듈(514)은 통지되지 않은 데이터로 미완성 패킷(702)을 버릴 수 있으며, 필수적이지 않은 작동들, 또는 이와 유사한 것으로서 미완성 패킷(702)과 관련된 하나 이상의 작동들을 건너뛸 수 있다.In another embodiment, if the incomplete packet 704 is at the end of the atomic data unit and the incomplete packet 702 is from an incomplete atomic data unit, the corruption module 516 sends the data of the completion packet 704 to the client But does not notify client 114 of the data in incomplete packet 702. [ During the power loss mode, in one embodiment, the termination module 514 may discard the incomplete packet 702 with the unacknowledged data, and may send one or more (e.g., one or more) packets 702 associated with the incomplete packet 702 Operations can be skipped.

도시된 실시예에서, 기록 버퍼(320)는 하나의 미완성 페이지(708)와 두 개의 완성 페이지(710, 712)를 포함한다. 일 실시예에서, 페이지들(708, 710, 712)은 위에 설명된 바와 같은 논리 페이지들을 포함한다. 완성 모듈(518)은, 일 실시예에서, ECC 발생기(304)를 통해 그리고 전력 손실 모드 중에 기록 버퍼(320)로 패킷들(702, 704) 중의 하나 또는 양쪽 모두를 플러싱한다.In the illustrated embodiment, the write buffer 320 includes one incomplete page 708 and two complete pages 710,712. In one embodiment, pages 708, 710, 712 include logical pages as described above. The completion module 518 flushes one or both of the packets 702 and 704, in one embodiment, through the ECC generator 304 and into the write buffer 320 during the power loss mode.

일 실시예에서, 기록 버퍼(320)는 대체로 통상적으로, 심지어 전력 손실 모드 중에 비휘발성 메모리(110)에 완성 페이지들(710, 712)를 기록한다. 다른 실시예에서, 종료 모듈(514)은 비휘발성 메모리(110)에 대한 하나 이상의 필수적이지 않은 작동들을 종료할 수 있으며/종료할 수 있거나 리셋할 수 있으며 그 결과 기록 버퍼(320)는 비휘발성 메모리(110)에 완성 페이지들(710, 712)을 기록할 수 있다. 완성 모듈(518)은, 일 실시예에서, 기록 버퍼(320)로부터 비휘발성 메모리(110)까지 미완성 페이지(708)를 플러싱하며 그 결과 비휘발성 메모리(110)는 전력 유지 시간 내에 미완성 페이지(708)를 저장한다. 위에 설명된 바와 같이, 다양한 실시예들에서, 완성 모듈(518)은 미완성 페이지(708)에서 타당한 데이터의 끝을 지시하는 마커를 추가할 수 있으며, 미완성 페이지(708)에 채우는 데이터를 추가할 수 있으며/추가할 수 있거나, 그렇지 않으면 기록 버퍼(320)로부터 미완성 페이지(708)를 플러싱할 수 있다.In one embodiment, the write buffer 320 generally writes completed pages 710 and 712 to the non-volatile memory 110 during a power loss mode. In another embodiment, the termination module 514 may terminate / terminate or reset one or more non-essential operations for the non-volatile memory 110 such that the write buffer 320 may be a non-volatile memory 710 < / RTI > The completion module 518 flushes the incomplete page 708 from the write buffer 320 to the non-volatile memory 110 in one embodiment so that the non-volatile memory 110 is in an incomplete page 708 ). As described above, in various embodiments, the completion module 518 may add a marker indicating the end of valid data in the incomplete page 708, and may add data to fill the incomplete page 708 And may otherwise flush the incomplete page 708 from the write buffer 320, if not.

도 8은 저장 장치(102)의 전력 손실 관리를 위한 방법(800)의 일 실시예를 도시한다. 방법(800)은 시작하며, 모니터 모듈(510)은 제1 전력 연결부(130)로부터 나온 전력이 미리 결정된 한계치보다 낮은지를 판별한다(802). 도시된 실시예에서, 만약 모니터 모듈(510)이 제1 전력 연결부(130)로부터 나온 전력이 미리 결정된 한계치보다 낮지 않다고 결정하면(802), 모니터 모듈(510)은 제1 전력 연결부(130)로부터 나온 전력의 양을 계속해서 모니터링을 한다(802).FIG. 8 illustrates an embodiment of a method 800 for power loss management of storage device 102. FIG. The method 800 begins and the monitor module 510 determines 802 if the power from the first power connection 130 is below a predetermined threshold. In the illustrated embodiment, if the monitor module 510 determines 802 that the power from the first power connection 130 is not lower than the predetermined threshold 802, then the monitor module 510 receives the power from the first power connection 130 Continuous monitoring of the amount of power drawn (802).

도시된 실시예에서, 만약 모니터 모듈(510)이 제1 전력 연결부(130)로부터 나온 전력이 미리 결정된 한계치보다 낮다고 결정하면(802), 모니터 모듈(510)은 저장 장치(102)에서 전력 손실 모드를 시작한다(804). 저장 장치(102)는 전력 손실 모드 중에 적어도 전력 유지 시간 동안 제2 전원(124)으로부터 나온 전력을 받아들인다(806). 전력 손실 모듈(520)은, 도시된 실시예에서, 전력 손실 모드 중에 저장 장치(102)에 대한 프로세스 내의 작동들의 실행을 조절하며(808) 그 결과 필수적인 프로세스 내의 작동들이 전력 유지 시간 내에 실행되며, 방법(800)은 종료된다.In the depicted embodiment, if the monitor module 510 determines 802 that the power from the first power connection 130 is below a predetermined threshold 802, then the monitor module 510 may determine that the power loss mode (804). The storage device 102 receives 806 power from the second power supply 124 during at least the power hold time during the power loss mode. The power loss module 520, in the illustrated embodiment, controls (808) the execution of operations within the process for the storage device 102 during the power loss mode so that operations within the essential processes are performed within the power maintenance time, The method 800 ends.

도 9는 정전 중에 개선된 저장 장치 작동을 위한 방법(900)의 일 실시예를 도시한다. 방법(900)은 저장 장치(102)에 대한 전력을 모니터링하는 것(902)으로 시작한다. 일 실시예에서, 모니터 모듈(510)은 저장 장치(102)에 대한 전력을 모니터링한다. 방법(900)은 또한 저장 장치(102)에 대한 전력이 차단되었는지, 미리 결정된 한계치보다 낮게 떨어지는지, 또는 이와 유사한 것을 결정하는 것(904)을 포함한다.Figure 9 illustrates one embodiment of a method 900 for improved storage operation during a power failure. The method 900 begins with monitoring 902 power to the storage device 102. In one embodiment, the monitor module 510 monitors power to the storage device 102. The method 900 also includes determining (904) whether power to the storage device 102 has been powered off, falls below a predetermined threshold, or the like.

만약 저장 장치(102)에 대한 전력이 차단되지 않았다면, 모니터 모듈(510)은 계속해서 차단에 대해 저장 장치(102)에 대한 전력을 모니터링한다. 차단의 경우에, 방법은 저장 장치(102)에 대한 미완성 작동들을 식별하는 것(906)을 포함한다. 일 실시예에서, 식별 모듈(512)은 미완성 작동들을 식별한다(906). 특정 실시예들에서, 식별 모듈(512)은 단지 소거 작동들, 판독 작동들, 및 프로그램 작동들만을 처리한다. 특정 실시예들에서, 다른 타입의 작동들이 또한 식별된다.If power to the storage device 102 has not been interrupted, the monitor module 510 continues to monitor power to the storage device 102 for interrupts. In the case of interception, the method includes identifying (906) incomplete operations for storage device (102). In one embodiment, identification module 512 identifies unfinished operations (906). In certain embodiments, the identification module 512 processes only erase operations, read operations, and program operations. In certain embodiments, other types of operations are also identified.

도시된 실시예에서, 만약 미완성 작동들이 판독 또는 소거 작동들이라면, 식별 모듈(512)은 어떤 판독 작동들과 소거 작동들이 현재 실행되는 중이며(즉, 비휘발성 메모리(110)에 대해 현재 일어나는 것들) 어떤 것이 미결된 것인지를 결정할 수 있다(908). 현재 실행 중인 이런 판독 및 소거 작동들에 대해, 일 실시예에서, 종료 모듈(514)은 영향을 받는 메모리 영역을 리셋하며(910) 관련된 작동을 취소하기 위해 리셋 명령을 전송한다. 위에 논의된 바와 같이, 종료 모듈(514)은 우선 시스템에 따른 이런 행위들을 실행할 수 있으며, 또한 그 대신으로 거의 완성인 특정 작동들이 완성되는 것을 허용하기 위해 선택될 수 있다.In the illustrated embodiment, if unfinished operations are read or erase operations, then the identification module 512 determines if any read operations and erase operations are currently being performed (i.e., those currently occurring for non-volatile memory 110) (908). ≪ / RTI > For these read and erase operations that are currently being executed, the end module 514 resets (910) the affected memory region and sends a reset command to cancel the associated operation. As discussed above, the termination module 514 may first perform these actions in accordance with the system, and may instead be selected to allow certain actions that are almost complete to be completed.

만약 미완성 판독/소거 작동들이 현재 실행되지 않는다면, 종료 모듈(514)은 작동들이 취소되거나(914) 그렇지 않으면 건너뛰게 되는 것을 간단히 야기할 수 있다. 예를 들면, 작동들은 하나 이상의 명령 큐들과 대기 실행으로 대기열을 이룰 수 있다. 종료 모듈(514)은 이들이 실행되지 않을 정도로 큐로부터 판독 및 소거 작동들을 제거할 수 있다. 또는 종료 모듈(514)은 작동들이 무시되거나 건너뛰게 되는 것을 야기할 수 있으며; 즉, 작동들은 큐에 남겨질 수 있지만 실행을 위해 선택되지 않을 수 있다. 다른 실시예에서, 종료 모듈(514)은 필수적이지 않은 작동들을 유지하는 하나 이상의 필수적이지 않은 명령 큐들을 무시할 수 있으며, 필수적인 작동들, 또는 이와 유사한 것을 유지하는 하나 이상의 필수적인 명령 큐들로부터 실행을 위해 작동들을 선택할 수 있다.If unfinished read / erase operations are not currently being performed, termination module 514 may simply cause operations to be canceled (914) or otherwise skipped. For example, operations may queue up with one or more command queues and wait execution. Termination module 514 may remove read and erase operations from the queues such that they are not executed. Or termination module 514 may cause operations to be ignored or skipped; That is, the operations may be left in the queue, but may not be selected for execution. In other embodiments, the termination module 514 may ignore one or more non-essential command queues that maintain non-essential operations and may operate for execution from one or more mandatory command queues that maintain essential operations, or the like Can be selected.

만약 미완성 작동이 프로그램 작동이라면, 식별 모듈(512)은 통지가 클라이언트(114)에 전송되었는지 아닌지를 결정할 수 있다(912). 만약 통지가 전송되었다면, 종료 모듈(514)은 위에 설명된 바와 같이 대기열을 이룬 작동을 취소하거나 영향을 받은 메모리 영역을 리셋하기 위해 선택될 수 있다. 다른 실시예들에서, 프로그램 작동들은 만약 이들이 저장 장치(102)에 있다면 통지가 전송되었는지 아닌지에 관계 없이 완성되는 것이 허용될 수 있다.If the incomplete operation is a program operation, the identification module 512 may determine 912 whether a notification has been sent to the client 114 or not. If a notification has been sent, the termination module 514 may be selected to cancel the queued operation as described above or to reset the affected memory area. In other embodiments, program operations may be allowed to be completed regardless of whether a notification has been sent or not, if they were in the storage device 102.

만약 통지가 전송되었다면, 프로그램 작동은 완성되는 것이 허용된다(916). 그 결과로, 프로그램 작동과 관련된 데이터는 클라이언트(114)에 보고되는 것으로 비휘발성 메모리(110)로 이동된다. 위에 논의된 바와 같이, 손상 모듈(516)은 방법(900)의 일부분으로서 기록 데이터 파이프라인(106)으로부터 손상된 데이터를 제거할 수 있다. 이와 마찬가지로, 완성 모듈(518)은 프로그래밍된 데이터가 기록 데이터 파이프라인(106)을 통해 이동되는 것을 보장하기 위해 부분적으로 채워진 버퍼들을 플러싱할 수 있다. 위에 논의된 바와 같이, 손상 모듈(516) 및/또는 완성 모듈(518)은 지시자가 설정되는 것을 야기할 수 있으며 이는 저장 장치(102)에 있는 손상된 데이터를 식별한다.If a notification has been sent, program operation is allowed to complete (916). As a result, the data associated with program operation is transferred to the non-volatile memory 110 as reported to the client 114. As discussed above, the corruption module 516 may remove corrupted data from the write data pipeline 106 as part of the method 900. Similarly, the completion module 518 may flush partially filled buffers to ensure that the programmed data is moved through the write data pipeline 106. As discussed above, the corruption module 516 and / or the completion module 518 may cause the indicator to be set, which identifies the corrupted data in the storage device 102.

정전 중에 비휘발성 저장 장치(102)에 의해 실행되는 작동들의 수를 감소시킴으로써, 제2 전력 공급부(124)의 크기, 비용, 및 복잡성이 감소될 수 있다. 특정 실시예들에서, 주안점은 특히 중요하지 않지만 상당한 전력을 소비하는 소거들과 같은 전력 저가/고가 작동들에 있다. 시스템(100)은 필수적인 프로그램들(통지가 클라이언트(114)에 전송된 것들)과 필수적이지 않은 프로그램들(통지가 전송되지 않은 것들) 사이를 더 구별할 수 있다.By reducing the number of operations performed by the non-volatile storage device 102 during a power outage, the size, cost, and complexity of the second power supply 124 can be reduced. In certain embodiments, the focus is on low-cost / high-power operations such as erasures that consume significant power, which is not particularly critical. The system 100 can further distinguish between essential programs (those for which notifications are sent to the client 114) and those that are not essential (those for which the notifications are not sent).

본 발명은 이의 정신 또는 필수적인 특징들로부터 벗어나지 않고 다른 특정한 형태들로 구현될 수 있다. 설명된 실시예들은 모든 점에서 단지 설명하며 제한하지 않는 것으로 고려되는 것이다. 본 발명의 범위는, 그러므로, 앞의 설명보다는 오히려 첨부된 청구항들에 의해 표시된다. 청구항들의 동등물의 의미와 범위 내에서 나오는 모든 변화는 이들의 범위 내에 포함되는 것이다.The invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes coming within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (22)

저장 장치의 전력 손실 관리를 위한 방법으로서,
상기 방법은:
비휘발성 데이터 저장 장치에 미리 결정된 한계치보다 높은 전력을 공급하지 못하는 제1 전원에 응답하여 상기 비휘발성 데이터 저장 장치에서 전력 손실 모드(power loss mode)를 시작하는 단계;
상기 전력 손실 모드 중에 적어도 전력 유지 시간(power hold-up time) 동안 제2 전원으로부터 상기 비휘발성 데이터 저장 장치를 위한 전력을 받아들이는 단계; 및
상기 전력 유지 시간 내에 필수적인 프로세스 내의 작동들(essential in-process operations)이 상기 비휘발성 데이터 저장 장치의 하나 이상의 비휘발성 메모리 소자들 상에서 실행되도록, 필수적이지 않은 프로세스 내의 작동(non-essential in-process operation)을 현재 처리하는 상기 비휘발성 데이터 저장 장치의 상기 하나 이상의 비휘발성 메모리 소자들을 리셋하여, 상기 전력 손실 모드 중에 상기 비휘발성 데이터 저장 장치 상의 프로세스 내의 작동들의 실행을 조절하는 단계를 포함하고,
상기 필수적인 프로세스 내의 작동들은 확인된 기록 작동들(acknowledged write operations)을 포함하고, 상기 필수적이지 않은 프로세스 내의 작동은 소거 작동을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
A method for power loss management of a storage device,
The method comprising:
Initiating a power loss mode in the non-volatile data storage device in response to a first power source that fails to provide power to the non-volatile data storage device above a predetermined threshold;
Receiving power for the non-volatile data storage device from a second power source during at least a power hold-up time during the power loss mode; And
Volatile data storage device so that essential in-process operations within the power maintenance time are performed on one or more non-volatile memory elements of the non-volatile data storage device. Volatile memory devices that are currently processing the non-volatile data storage device, and adjusting the execution of operations in the process on the non-volatile data storage device during the power loss mode,
Wherein the operations in the essential process include acknowledged write operations and the operations in the non-essential process include an erase operation.
제1항에 있어서,
상기 프로세스 내의 작동들의 실행을 조절하는 단계는, 하나 이상의 필수적이지 않은 작동들을 완료하는데 요구되는 에너지의 양에 기초하여, 상기 비휘발성 데이터 저장 장치 상의 상기 프로세스 내의 작동들로부터 상기 하나 이상의 필수적이지 않은 작동들을 종료하는 단계를 더 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein adjusting the performance of the operations in the process further comprises: determining, based on the amount of energy required to complete one or more non-essential operations, the one or more non-essential operations from operations in the process on the non-volatile data storage device And terminating the power management of the storage device.
제2항에 있어서,
상기 하나 이상의 필수적이지 않은 작동들은 상기 비휘발성 데이터 저장 장치의 하나 이상의 클라이언트들에 확인되지 않은 기록 작동들, 소거 작동들, 및 판독 작동들을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
3. The method of claim 2,
Wherein the one or more non-essential operations include unrecognized write operations, erase operations, and read operations to one or more clients of the non-volatile data storage device.
제2항에 있어서,
상기 하나 이상의 필수적이지 않은 작동들을 실행하지 않고 상기 비휘발성 데이터 저장 장치의 전력을 차단하는 단계를 더 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
3. The method of claim 2,
And disconnecting power to the non-volatile data storage device without performing the one or more non-essential operations.
제1항에 있어서,
상기 프로세스 내의 작동들의 실행을 조절하는 단계는, 하나 이상의 필수적이지 않은 작동들이 상기 비휘발성 데이터 저장 장치에서 실행되지 않도록 하나 이상의 명령 큐들에서 상기 하나 이상의 필수적이지 않은 작동들을 건너뛰는 단계를 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein adjusting the execution of operations in the process comprises skipping the one or more non-essential operations in one or more instruction queues such that one or more non-essential operations are not performed in the non-volatile data storage device. A method for power loss management of a device.
제1항에 있어서,
상기 필수적인 프로세스 내의 작동들은 상기 비휘발성 데이터 저장 장치의 하나 이상의 클라이언트들에 확인된 기록 작동들을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein the operations in the essential process include verified write operations to one or more clients of the non-volatile data storage device.
삭제delete 제1항에 있어서,
상기 프로세스 내의 작동들의 실행을 조절하는 단계는, 상기 하나 이상의 비휘발성 메모리 소자들을 리셋하는 것에 응답하여 상기 하나 이상의 비휘발성 메모리 소자들 상의 상기 필수적인 프로세스 내의 작동들을 실행하는 단계를 더 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein adjusting the performance of operations within the process further comprises executing operations within the essential process on the one or more non-volatile memory devices in response to resetting the one or more non-volatile memory devices. A method for managing power loss in a wireless network.
제1항에 있어서,
상기 하나 이상의 비휘발성 메모리 소자들은 상기 비휘발성 데이터 저장 장치의 실질적으로 모든 비휘발성 메모리 소자들을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein the one or more non-volatile memory elements comprise substantially all non-volatile memory elements of the non-volatile data storage device.
제1항에 있어서,
상기 하나 이상의 비휘발성 메모리 소자들은 상기 프로세스 내의 작동들로부터 필수적이지 않은 작동을 현재 처리하는 비휘발성 메모리 소자들의 하나 이상의 뱅크들을 포함하며,
각각의 뱅크는 복수의 비휘발성 메모리 다이들을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein the one or more non-volatile memory elements comprise one or more banks of non-volatile memory elements currently processing non-essential operations from operations within the process,
Each bank including a plurality of non-volatile memory dies.
제10항에 있어서,
상기 필수적이지 않은 작동은 소거 작동을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
11. The method of claim 10,
Wherein the non-essential operation includes an erase operation.
제1항에 있어서,
상기 프로세스 내의 작동들의 실행을 조절하는 단계는, 상기 전력 유지 시간 내에 상기 필수적인 프로세스 내의 작동들을 실행하기 위해 프로세스 내의 작동들의 선택을 재정렬하는 단계를 더 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein adjusting the performance of operations within the process further comprises reordering the selection of operations within the process to perform operations within the essential process within the power maintenance time.
제1항에 있어서,
상기 전력 손실 모드를 시작하는 단계에 응답하여 상기 비휘발성 데이터 저장 장치의 하나 이상의 하위 소자들의 작동을 정지하는 단계를 더 포함하며,
상기 하나 이상의 하위 소자들의 작동을 정지시키는 단계는 상기 전력 유지 시간을 제공하기 위해 상기 제2 전원의 에너지를 보존하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Further comprising stopping operation of one or more sub-elements of the non-volatile data storage device in response to initiating the power loss mode,
Wherein stopping the operation of the one or more child elements conserves energy of the second power source to provide the power hold time.
제1항에 있어서,
상기 프로세스 내의 작동들의 실행을 조절하는 단계는, 비휘발성 메모리가 상기 전력 유지 시간 내에 버퍼링된 미완성 데이터를 저장하도록 상기 비휘발성 데이터 저장 장치의 상기 비휘발성 메모리에 필수적인 프로세스 내의 작동들과 관련된 상기 버퍼링된 미완성 데이터를 플러싱하는 단계를 더 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Volatile memory associated with operations within a process essential to the non-volatile memory of the non-volatile data storage device to store incomplete data buffered within the power-hold time, Further comprising flushing the unfinished data. ≪ Desc / Clms Page number 19 >
제1항에 있어서,
상기 비휘발성 데이터 저장 장치가 상기 전력 손실 모드를 시작하는 식별자를, 상기 비휘발성 데이터 저장 장치에 저장하는 단계를 더 포함하며,
상기 식별자는 상기 비휘발성 데이터 저장 장치에 대한 전력의 회복에 응답하여 상기 비휘발성 데이터 저장 장치로부터 검색을 위해 저장되는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Further comprising storing, in the non-volatile data storage device, an identifier from which the non-volatile data storage device starts the power loss mode,
Wherein the identifier is stored for retrieval from the non-volatile data storage device in response to a recovery of power to the non-volatile data storage device.
제1항에 있어서,
상기 필수적인 프로세스 내의 작동들이 상기 전력 유지 시간 내에 실행을 완료하였는지를 식별하는 식별자를, 상기 비휘발성 데이터 저장 장치에 저장하는 단계를 더 포함하며,
상기 식별자는 상기 비휘발성 데이터 저장 장치에 대한 전력의 회복에 응답하여 상기 비휘발성 데이터 저장 장치로부터 검색을 위해 저장되는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Further comprising storing in the non-volatile data storage device an identifier that identifies whether operations in the essential process have completed execution within the power hold time,
Wherein the identifier is stored for retrieval from the non-volatile data storage device in response to a recovery of power to the non-volatile data storage device.
제1항에 있어서,
상기 제2 전원은 상기 필수적인 프로세스 내의 작동들을 실행하도록 상기 전력 유지 시간을 제공하기 위해 충분한 에너지를 저장할 수 있는 하나 이상의 캐패시터들을 포함하는, 저장 장치의 전력 손실 관리를 위한 방법.
The method according to claim 1,
Wherein the second power supply comprises one or more capacitors capable of storing sufficient energy to provide the power hold time to perform operations within the essential process.
저장 장치의 전력 손실 관리를 위한 장치로서,
상기 장치는:
비휘발성 데이터 저장 장치에 대해 미리 결정된 한계치보다 높은 전력을 공급하지 못하는 제1 전원에 응답하여 상기 비휘발성 데이터 저장 장치에서 전력 손실 모드를 시작하는 모니터 모듈;
상기 전력 손실 모드 중에 적어도 전력 유지 시간 동안 상기 비휘발성 데이터 저장 장치에 전력을 공급하는 제2 전원; 및
필수적인 프로세스 내의 작동들이 상기 전력 유지 시간 내에 실행되도록 상기 전력 손실 모드 중에 상기 비휘발성 데이터 저장 장치 상의 프로세스 내의 작동들의 실행을 조절하는 전력 손실 모듈을 포함하고,
상기 전력 손실 모듈은 필수적이지 않은 작동을 종료하기 위해 상기 프로세스 내의 작동들로부터 상기 필수적이지 않은 작동을 현재 처리하는 상기 비휘발성 데이터 저장 장치의 하나 이상의 비휘발성 메모리 소자들을 리셋함으로써 상기 프로세스 내의 작동들의 실행을 조절하고,
상기 필수적인 프로세스 내의 작동들은, 데이터 손상(data corruption), 데이터 손실 및 상기 비휘발성 데이터 저장 장치 상의 일관성이 없는 통신들(inconsistent communications)을 회피하기 위해 실행되어야 하는 작동들이고,
상기 필수적이지 않은 작동은, 상기 비휘발성 데이터 저장 장치 상의 데이터 손상 또는 데이터 손실을 야기하지 않고 종료될 수 있거나, 정지될 수 있거나, 또는 중지될 수 있는(terminated, stopped, or paused) 작동인, 저장 장치의 전력 손실 관리를 위한 장치.
An apparatus for power loss management of a storage device,
The apparatus comprises:
A monitor module for initiating a power loss mode in the non-volatile data storage device in response to a first power source that fails to provide power higher than a predetermined threshold for the non-volatile data storage device;
A second power supply for supplying power to the nonvolatile data storage device during at least the power holding time during the power loss mode; And
And a power loss module that regulates the execution of operations in the process on the non-volatile data storage device during the power loss mode such that operations within an essential process are performed within the power hold time,
Wherein the power loss module is operable to execute operations in the process by resetting one or more non-volatile memory elements of the non-volatile data storage device that currently processes the non-essential operations from operations within the process to terminate non- Lt; / RTI >
Operations within the essential process are operations that must be performed to avoid data corruption, data loss, and inconsistent communications on the non-volatile data storage device,
The non-essential operation may be a terminated, stopped, or paused operation that can be terminated, stopped, or paused without causing data corruption or data loss on the non-volatile data storage device. Device for power loss management.
삭제delete 저장 장치의 전력 손실 관리를 위한 시스템으로서,
상기 시스템은:
둘 이상의 비휘발성 데이터 저장 장치들을 받아들이도록 구성되는 어댑터;
상기 둘 이상의 비휘발성 데이터 저장 장치들에 전력을 공급하기 위해 상기 어댑터에 전기적으로 결합되는 제1 전원;
미리 결정된 한계치보다 높은 전력을 공급하지 못하는 상기 제1 전원에 응답하여 상기 비휘발성 데이터 저장 장치들에서 전력 손실 모드를 시작하는 적어도 하나의 모니터 모듈;
상기 어댑터에 전기적으로 결합되는 적어도 하나의 제2 전원으로서, 각각의 제2 전원은 상기 전력 손실 모드 중에 적어도 전력 유지 시간 동안 상기 비휘발성 데이터 저장 장치들 중의 적어도 하나에 전력을 공급하도록 구성되는 상기 적어도 하나의 제2 전원; 및
상기 전력 유지 시간 내에 필수적인 프로세스 내의 작동들이 상기 비휘발성 데이터 저장 장치들의 하나 이상의 비휘발성 메모리 소자들 상에서 실행되도록, 필수적이지 않은 프로세스 내의 작동을 현재 처리하는 상기 비휘발성 데이터 저장 장치들의 상기 하나 이상의 비휘발성 메모리 소자들을 리셋하여, 상기 전력 손실 모드 중에 상기 비휘발성 데이터 저장 장치들 상의 프로세스 내의 작동들의 실행을 조절하는 하나 이상의 전력 손실 모듈들을 포함하고,
상기 필수적인 프로세스 내의 작동들은 확인된 기록 작동들을 포함하고, 상기 필수적이지 않은 프로세스 내의 작동은 소거 작동을 포함하는, 저장 장치의 전력 손실 관리를 위한 시스템.
A system for power loss management of a storage device,
The system comprises:
An adapter configured to accept two or more non-volatile data storage devices;
A first power source electrically coupled to the adapter to supply power to the at least two non-volatile data storage devices;
At least one monitor module for initiating a power loss mode in the non-volatile data storage devices in response to the first power source failing to supply power above a predetermined threshold;
At least one second power source electrically coupled to the adapter, each second power source configured to supply power to at least one of the non-volatile data storage devices during at least a power hold time during the power loss mode, One second power supply; And
Volatile data storage devices, wherein operations within the non-volatile data storage devices that are currently in operation are not necessarily required to be performed on one or more non-volatile memory elements of the non-volatile data storage devices, And one or more power loss modules for resetting memory elements to regulate the execution of operations within the process on the non-volatile data storage devices during the power loss mode,
Wherein the operations in the essential process include identified write operations and the operations in the non-essential process include an erase operation.
제20항에 있어서,
상기 하나 이상의 전력 손실 모듈들은 각각의 비휘발성 저장 장치를 위한 별도의 전력 손실 모듈을 포함하며,
각각의 상기 별도의 전력 손실 모듈은 관련된 상기 비휘발성 데이터 저장 장치 상의 프로세스 내의 작동들의 실행을 조절하도록 구성되는, 저장 장치의 전력 손실 관리를 위한 시스템.
21. The method of claim 20,
Wherein the one or more power loss modules include a separate power loss module for each non-volatile storage device,
Each separate power loss module being configured to regulate the execution of operations within a process on the associated non-volatile data storage device.
제20항에 있어서,
상기 하나 이상의 전력 손실 모듈들은 상기 둘 이상의 비휘발성 데이터 저장 장치들 상의 프로세스 내의 작동들의 실행을 조절하도록 구성되는 단일 시스템 전력 손실 모듈을 포함하는, 저장 장치의 전력 손실 관리를 위한 시스템.
21. The method of claim 20,
Wherein the one or more power loss modules comprise a single system power loss module configured to regulate the execution of operations within a process on the at least two non-volatile data storage devices.
KR1020127009151A 2009-09-09 2010-09-09 Apparatus, system, and method for power reduction management in a storage device KR101689420B1 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US24099109P 2009-09-09 2009-09-09
US61/240,991 2009-09-09
US24562209P 2009-09-24 2009-09-24
US61/245,622 2009-09-24
US36856410P 2010-07-28 2010-07-28
US61/368,564 2010-07-28
PCT/US2010/048321 WO2011031900A2 (en) 2009-09-09 2010-09-09 Apparatus, system, and method for power reduction management in a storage device

Publications (2)

Publication Number Publication Date
KR20120093869A KR20120093869A (en) 2012-08-23
KR101689420B1 true KR101689420B1 (en) 2016-12-23

Family

ID=43647685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009151A KR101689420B1 (en) 2009-09-09 2010-09-09 Apparatus, system, and method for power reduction management in a storage device

Country Status (5)

Country Link
US (3) US8429436B2 (en)
EP (1) EP2476039B1 (en)
KR (1) KR101689420B1 (en)
CN (1) CN102597910B (en)
WO (2) WO2011031900A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190001303A (en) * 2017-06-27 2019-01-04 주식회사 케이티 Remote back-up device

Families Citing this family (425)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090087498A (en) 2006-12-06 2009-08-17 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) Apparatus, system and method for solid-state storage as cache for high-capacity, non-volatile storage
US8341300B1 (en) * 2007-08-30 2012-12-25 Virident Systems, Inc. Systems for sustained read and write performance with non-volatile memory
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US8077297B2 (en) * 2008-06-30 2011-12-13 Nellcor Puritan Bennett Ireland Methods and systems for discriminating bands in scalograms
US9727473B2 (en) 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
KR101474315B1 (en) * 2009-04-14 2014-12-18 시게이트 테크놀로지 엘엘씨 Hard Disk Drive for preventing spin-up fail
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
WO2011031900A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US9021158B2 (en) 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
US9146601B2 (en) * 2009-11-20 2015-09-29 Lenovo (Singapore) Pte. Ltd. Systems and methods for electronic device power management
US8489894B2 (en) * 2010-05-26 2013-07-16 Paymetric, Inc. Reference token service
US8744367B2 (en) * 2010-08-31 2014-06-03 At&T Intellectual Property I, L.P. Tail optimization protocol for cellular radio resource allocation
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8527748B2 (en) * 2010-10-01 2013-09-03 Schneider Electric USA, Inc. System and method for hosting encrypted monitoring data
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US8527627B2 (en) 2010-12-14 2013-09-03 At&T Intellectual Property I, L.P. Intelligent mobility application profiling with respect to identified communication bursts
US20120158677A1 (en) * 2010-12-20 2012-06-21 Apple Inc. Systems and methods for streaming compressed files via a non-volatile memory
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
WO2012109677A2 (en) 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
CN102810075B (en) * 2011-06-01 2014-11-19 英业达股份有限公司 Transaction type system processing method
US8792273B2 (en) * 2011-06-13 2014-07-29 SMART Storage Systems, Inc. Data storage system with power cycle management and method of operation thereof
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US9264872B2 (en) 2011-06-20 2016-02-16 At&T Intellectual Property I, L.P. Controlling traffic transmissions to manage cellular radio resource utilization
US9220066B2 (en) 2011-06-20 2015-12-22 At&T Intellectual Property I, L.P. Bundling data transfers and employing tail optimization protocol to manage cellular radio resource utilization
US8930330B1 (en) 2011-06-27 2015-01-06 Amazon Technologies, Inc. Validation of log formats
US8639958B2 (en) * 2011-07-07 2014-01-28 International Business Machines Corporation On-demand storage system energy savings
US20130019052A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Effective utilization of flash interface
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US20130080679A1 (en) * 2011-09-26 2013-03-28 Lsi Corporation System and method for optimizing thermal management for a storage controller cache
JP2013080175A (en) * 2011-10-05 2013-05-02 Ricoh Co Ltd Power supply control device, image forming apparatus, and power supply control method
CN102385897B (en) * 2011-11-02 2014-11-19 华为数字技术(成都)有限公司 Storage device and power supply method for storage device
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US8972072B2 (en) 2011-12-14 2015-03-03 International Business Machines Corporation Optimizing power consumption in planned projects
US8693276B2 (en) * 2011-12-28 2014-04-08 Monolithic Power Systems, Inc. Power supply, associated management unit and method
KR101878200B1 (en) * 2012-01-09 2018-07-16 삼성전자 주식회사 Method for controlling memory system when sudden power off occurs
US9652182B2 (en) 2012-01-31 2017-05-16 Pavilion Data Systems, Inc. Shareable virtual non-volatile storage device for a server
US9086862B2 (en) * 2012-02-03 2015-07-21 Getac Technology Corporation Apparatus and method of protecting electronic apparatus using a temperature-power table for an electronic component under different system and environmental temperatures
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8521692B1 (en) * 2012-02-28 2013-08-27 Hitachi, Ltd. Storage system and method for controlling storage system
US20130262942A1 (en) * 2012-03-27 2013-10-03 Yung-Chiang Chu Flash memory lifetime evaluation method
US8862923B1 (en) 2012-03-30 2014-10-14 Emc Corporation Method and apparatus to determine an idle state of a device set based on availability requirements corresponding to the device set
US9021275B1 (en) 2012-03-30 2015-04-28 Emc Corporation Method and apparatus to exercise and manage a related set of power managed storage devices
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8995157B2 (en) 2012-04-18 2015-03-31 Strategic Patent Management, Llc Sensing and control for improving switched power supplies
US20130282624A1 (en) * 2012-04-20 2013-10-24 Glenn Schackmuth Restaurant Equipment Monitoring and Control System and Method
KR101961324B1 (en) * 2012-05-09 2019-03-22 삼성전자주식회사 Memory device and power managing method of the same
US9183910B2 (en) 2012-05-31 2015-11-10 Samsung Electronics Co., Ltd. Semiconductor memory devices for alternately selecting bit lines
US9411637B2 (en) * 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9348391B1 (en) * 2012-06-28 2016-05-24 Amazon Technologies, Inc. Managing resource power states in shared environments
US9292060B1 (en) * 2012-06-28 2016-03-22 Amazon Technologies, Inc. Allowing clients to limited control on power consumed by the cloud while executing the client's tasks
KR20140013507A (en) * 2012-07-24 2014-02-05 삼성전자주식회사 Electronic apparatus and method for drive control thereof
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US8788880B1 (en) * 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US20140059271A1 (en) * 2012-08-27 2014-02-27 Apple Inc. Fast execution of flush commands using adaptive compaction ratio
US9419735B2 (en) * 2012-09-07 2016-08-16 Comcast Cable Communcations, LLC Data usage monitoring
US9711196B2 (en) 2012-09-10 2017-07-18 Texas Instruments Incorporated Configuration bit sequencing control of nonvolatile domain and array wakeup and backup
US20140082406A1 (en) * 2012-09-18 2014-03-20 Sandisk Technologies Inc. Data protection through power loss prediction
US9547353B1 (en) 2012-09-19 2017-01-17 Amazon Technologies, Inc. Processor energy monitoring and dynamic adjustment
TWI475361B (en) * 2012-10-09 2015-03-01 Wistron Corp Current distribution system, current distribution method, and computer system thereof
US9134779B2 (en) * 2012-11-21 2015-09-15 International Business Machines Corporation Power distribution management in a system on a chip
US9134778B2 (en) * 2012-11-21 2015-09-15 International Business Machines Corporation Power distribution management in a system on a chip
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US9672237B2 (en) 2013-03-15 2017-06-06 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9335809B2 (en) * 2013-03-15 2016-05-10 Seagate Technology Llc Volatile memory storing system data during low power mode operation and monitoring the voltage supplied to the memory during low power mode
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9501501B2 (en) 2013-03-15 2016-11-22 Amazon Technologies, Inc. Log record management
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9710863B2 (en) * 2013-04-19 2017-07-18 Strategic Patent Management, Llc Method and apparatus for optimizing self-power consumption of a controller-based device
US9672919B2 (en) * 2013-04-22 2017-06-06 Apple Inc. Techniques for reducing power-down time in non-volatile memory devices
US10747746B2 (en) 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas
US9317213B1 (en) 2013-05-10 2016-04-19 Amazon Technologies, Inc. Efficient storage of variably-sized data objects in a data store
US9760596B2 (en) 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
US9208032B1 (en) 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US10303564B1 (en) 2013-05-23 2019-05-28 Amazon Technologies, Inc. Reduced transaction I/O for log-structured storage systems
US9305056B1 (en) 2013-05-24 2016-04-05 Amazon Technologies, Inc. Results cache invalidation
US9047189B1 (en) 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9274865B2 (en) 2013-08-01 2016-03-01 HGST Netherlands B.V. Implementing enhanced buffer management for data storage devices
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448896B2 (en) * 2013-08-07 2016-09-20 Seagate Technology Llc Torn write mitigation
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9374106B2 (en) * 2013-08-28 2016-06-21 International Business Machines Corporation Efficient context save/restore during hardware decompression of DEFLATE encoded data
US9465426B2 (en) 2013-09-18 2016-10-11 Huawei Technologies Co., Ltd. Method for backing up data in a case of power failure of storage system, and storage system controller
US9519664B1 (en) 2013-09-20 2016-12-13 Amazon Technologies, Inc. Index structure navigation using page versions for read-only nodes
US9507843B1 (en) 2013-09-20 2016-11-29 Amazon Technologies, Inc. Efficient replication of distributed storage changes for read-only nodes of a distributed database
US9280591B1 (en) 2013-09-20 2016-03-08 Amazon Technologies, Inc. Efficient replication of system transactions for read-only nodes of a distributed database
US10216949B1 (en) 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US9460008B1 (en) 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US9699017B1 (en) 2013-09-25 2017-07-04 Amazon Technologies, Inc. Dynamic utilization of bandwidth for a quorum-based distributed storage system
US10223184B1 (en) 2013-09-25 2019-03-05 Amazon Technologies, Inc. Individual write quorums for a log-structured distributed storage system
EP3049938B1 (en) * 2013-09-27 2019-03-13 Hewlett-Packard Enterprise Development LP Data management on memory modules
US9800640B2 (en) 2013-10-02 2017-10-24 International Business Machines Corporation Differential encoder with look-ahead synchronization
US9619330B2 (en) * 2013-10-08 2017-04-11 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US10387399B1 (en) 2013-11-01 2019-08-20 Amazon Technologies, Inc. Efficient database journaling using non-volatile system memory
US9760480B1 (en) 2013-11-01 2017-09-12 Amazon Technologies, Inc. Enhanced logging using non-volatile system memory
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9880933B1 (en) 2013-11-20 2018-01-30 Amazon Technologies, Inc. Distributed in-memory buffer cache system using buffer cache nodes
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) * 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
CN103777537B (en) * 2014-01-28 2018-03-13 无锡云动科技发展有限公司 A kind of low power consumpting controling circuit and storage device
US9286208B2 (en) * 2014-02-07 2016-03-15 Kabushiki Kaisha Toshiba Controller controlling an interleave operation, solid-state drive including the controller, and control method controlling an interleave operation
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10007441B2 (en) 2014-04-30 2018-06-26 Hewlett Packard Enterprise Development Lp Storage system bandwidth adjustment
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US12137140B2 (en) 2014-06-04 2024-11-05 Pure Storage, Inc. Scale out storage platform having active failover
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US10303663B1 (en) 2014-06-12 2019-05-28 Amazon Technologies, Inc. Remote durable logging for journaling file systems
CN104035892B (en) * 2014-06-17 2017-05-03 英业达科技有限公司 Server system
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9703346B2 (en) * 2014-06-23 2017-07-11 Intel Corporation Firmware interface with backup non-volatile memory storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9798469B2 (en) 2014-07-31 2017-10-24 Samsung Electronics Co., Ltd. Storage device and controlling method thereof
US9658789B2 (en) * 2014-08-05 2017-05-23 Sandisk Technologies Llc Storage module and method for optimized power utilization
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10254814B2 (en) 2014-09-04 2019-04-09 Hewlett Packard Enterprise Development Lp Storage system bandwidth determination
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9836108B2 (en) 2014-09-10 2017-12-05 Toshiba Memory Corporation Memory system and controller
US10146293B2 (en) * 2014-09-22 2018-12-04 Western Digital Technologies, Inc. Performance-aware power capping control of data storage devices
US9541988B2 (en) * 2014-09-22 2017-01-10 Western Digital Technologies, Inc. Data storage devices with performance-aware power capping
US20160109926A1 (en) * 2014-10-20 2016-04-21 Sandisk Technologies Inc. Modified write process based on a power characteristic for a data storage device
US9645769B2 (en) * 2014-10-24 2017-05-09 Western Digital Technologies, Inc. Performance acceleration during shutdown of a data storage device
WO2016068978A1 (en) 2014-10-31 2016-05-06 Hewlett-Packard Development Company, L.P. Power-loss protection
US9712619B2 (en) 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9565269B2 (en) 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9417961B2 (en) 2014-11-18 2016-08-16 HGST Netherlands B.V. Resource allocation and deallocation for power management in devices
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US10698459B2 (en) * 2015-02-17 2020-06-30 Apple Inc. Electronic devices and method of controlling an electronic device
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US9495000B1 (en) * 2015-04-30 2016-11-15 Qualcomm Technologies International, Ltd. Power management of a wireless device
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10073659B2 (en) * 2015-06-26 2018-09-11 Intel Corporation Power management circuit with per activity weighting and multiple throttle down thresholds
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US9846612B2 (en) 2015-08-11 2017-12-19 Qualcomm Incorporated Systems and methods of memory bit flip identification for debugging and power management
US10387314B2 (en) * 2015-08-25 2019-08-20 Oracle International Corporation Reducing cache coherence directory bandwidth by aggregating victimization requests
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
KR102445390B1 (en) * 2015-09-02 2022-09-21 에스케이하이닉스 주식회사 Memory controller and memory system having the same
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10127398B2 (en) * 2015-09-18 2018-11-13 Rovi Guides, Inc. Methods and systems for implementing parental controls
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9965206B2 (en) 2015-10-23 2018-05-08 Western Digital Technologies, Inc. Enhanced queue management for power control of data storage device
US9672928B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Method and apparatus for estimating read levels of nonvolatile memory and for programming pilot signals used for such estimation
US10234927B2 (en) 2015-11-12 2019-03-19 International Business Machines Corporation Storage system power usage
KR20170056782A (en) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 Memory system and operating method for the same
CN105530405B (en) * 2015-12-01 2019-02-19 上海兆芯集成电路有限公司 The method and device of image procossing
US9857859B2 (en) * 2015-12-21 2018-01-02 Intel Corporation Techniques to power down output power rails for a storage device
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10331203B2 (en) * 2015-12-29 2019-06-25 Texas Instruments Incorporated Compute through power loss hardware approach for processing device having nonvolatile logic memory
KR101758558B1 (en) * 2016-03-29 2017-07-26 엘에스산전 주식회사 Energy managemnet server and energy managemnet system having thereof
US9852025B2 (en) 2016-03-29 2017-12-26 Alibaba Group Holding Limited Protecting data stored on a solid state drive
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10331352B2 (en) 2016-06-06 2019-06-25 Toshiba Memory Corporation Dynamic processing of storage command based on internal operations of storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US9996291B1 (en) * 2016-07-29 2018-06-12 EMC IP Holding Company LLC Storage system with solid-state storage device having enhanced write bandwidth operating mode
CN106294222A (en) * 2016-08-03 2017-01-04 浪潮电子信息产业股份有限公司 A kind of method and device determining PCIE device and slot corresponding relation
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10359933B2 (en) * 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
KR20180038793A (en) * 2016-10-07 2018-04-17 삼성전자주식회사 Method and apparatus for processing image data
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10445263B2 (en) 2016-10-26 2019-10-15 Seagate Technology Llc Carrier board with removable memory module power fail protection
US10452115B2 (en) 2016-10-26 2019-10-22 Seagate Technology Llc Removable power loss protection module
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US9921898B1 (en) * 2016-12-27 2018-03-20 Micron Technology, Inc. Identifying asynchronous power loss
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US11288017B2 (en) * 2017-02-23 2022-03-29 Smart IOPS, Inc. Devices, systems, and methods for storing data using distributed control
US20200073579A1 (en) * 2017-03-02 2020-03-05 Signify Holding B.V. Monitoring and adjusting memory usage in connected device systems
US10817191B2 (en) * 2017-03-13 2020-10-27 Western Digital Technologies, Inc. Storage system and method for thermal throttling via command arbitration
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
TWI748081B (en) * 2017-04-14 2021-12-01 仁寶電腦工業股份有限公司 Computer device and data protection method therefore
KR101876675B1 (en) * 2017-04-20 2018-07-09 엘에스산전 주식회사 Digital power testers for distribution and distribution board
US10360045B2 (en) 2017-04-25 2019-07-23 Sandisk Technologies Llc Event-driven schemes for determining suspend/resume periods
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10635339B2 (en) 2017-05-02 2020-04-28 Smart Ipos, Inc. Devices, systems, and methods for reducing storage utilization with data deduplication
US10684794B2 (en) * 2017-05-18 2020-06-16 Sandisk Technologies Llc Distributed power management for non-volatile memory controllers
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
KR102277728B1 (en) * 2017-07-31 2021-07-14 삼성전자주식회사 A system and method for data storage, and a method of manufacturing a ssd using this
US11029859B2 (en) * 2017-08-23 2021-06-08 Toshiba Memory Corporation Credit based command scheduling
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
KR102430209B1 (en) * 2017-09-07 2022-08-05 삼성전자주식회사 Storage device and controllers included in the storage device
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
JP6977473B2 (en) * 2017-10-20 2021-12-08 富士通株式会社 Storage device and backup program
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10394474B2 (en) 2017-11-10 2019-08-27 Smart IOPS, Inc. Devices, systems, and methods for reconfiguring storage devices with applications
US11354247B2 (en) 2017-11-10 2022-06-07 Smart IOPS, Inc. Devices, systems, and methods for configuring a storage device with cache
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US11914571B1 (en) 2017-11-22 2024-02-27 Amazon Technologies, Inc. Optimistic concurrency for a multi-writer database
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10726879B2 (en) 2017-12-08 2020-07-28 Samsung Electronics Co., Ltd. Low-power data transfer from buffer to flash memory
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
JP7023103B2 (en) * 2017-12-22 2022-02-21 キオクシア株式会社 Memory system and control method
US10506734B2 (en) 2018-01-10 2019-12-10 Dell Products, Lp Information handling system having synchronized power loss detection armed state
KR102603245B1 (en) * 2018-01-11 2023-11-16 에스케이하이닉스 주식회사 Memory system and operating method thereof
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
KR20190109872A (en) * 2018-03-19 2019-09-27 에스케이하이닉스 주식회사 Data storage device and operating method thereof
US10496457B2 (en) * 2018-04-02 2019-12-03 Micron Technology, Inc. Grouping requests to reduce inter-process communication in memory systems
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11275512B2 (en) * 2018-05-08 2022-03-15 Micron Technology, Inc. Asynchronous power loss impacted data structure
US11595456B2 (en) * 2018-05-31 2023-02-28 Microsoft Technology Licensing, Llc Modifying content streaming based on device parameters
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10922014B1 (en) * 2018-06-05 2021-02-16 Seagate Technology Llc Die access order variation
CN108833300B (en) * 2018-06-21 2020-11-27 厦门大学 Single-antenna-based large data packet remote transmission method
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US10649927B2 (en) 2018-08-20 2020-05-12 Intel Corporation Dual in-line memory module (DIMM) programmable accelerator card
TWI677879B (en) * 2018-09-03 2019-11-21 慧榮科技股份有限公司 A data storage device and a data processing method
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
DE102019114808A1 (en) * 2018-09-21 2020-03-26 Samsung Electronics Co., Ltd. Data processing device and data processing method communicating with a storage device
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
WO2020091799A1 (en) * 2018-11-01 2020-05-07 Hewlett-Packard Development Company, L.P. Power allocation
US10725912B2 (en) * 2018-12-19 2020-07-28 Micron Technology, Inc. Power loss protection in memory sub-systems
US11442635B2 (en) * 2019-01-10 2022-09-13 Western Digital Technologies, Inc. Data storage systems and methods for optimized scheduling of background management operations
JP2020115250A (en) 2019-01-17 2020-07-30 キオクシア株式会社 Storage apparatus and command processing method
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
CN111625180B (en) * 2019-02-27 2021-05-28 英韧科技(上海)有限公司 Data writing method and device and storage medium
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11093135B1 (en) 2019-04-11 2021-08-17 Seagate Technology Llc Drive performance, power, and temperature management
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11157439B2 (en) 2019-07-25 2021-10-26 Western Digital Technologies, Inc. Method for delaying fundamental reset in power loss protection (PLP) enabled devices
US11580030B2 (en) 2019-08-18 2023-02-14 Smart IOPS, Inc. Devices, systems, and methods of logical-to-physical address mapping
US11907114B2 (en) 2019-08-18 2024-02-20 Smart IOPS, Inc. Devices, systems, and methods for dynamically remapping memory addresses
CN110806794A (en) * 2019-10-10 2020-02-18 浙江大华技术股份有限公司 Power-down protection method, system, computer device and medium for storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11314315B2 (en) * 2020-01-17 2022-04-26 Samsung Electronics Co., Ltd. Performance control of a device with a power metering unit (PMU)
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
DE102020108101A1 (en) * 2020-03-24 2021-09-30 Pilz Gmbh & Co. Kg Device for storing data in a non-volatile memory
US11487444B2 (en) * 2020-03-25 2022-11-01 Micron Technology, Inc. Centralized power management in memory devices
US11341163B1 (en) 2020-03-30 2022-05-24 Amazon Technologies, Inc. Multi-level replication filtering for a distributed database
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11256591B2 (en) 2020-06-03 2022-02-22 Western Digital Technologies, Inc. Die memory operation scheduling plan for power control in an integrated memory assembly
US11226772B1 (en) 2020-06-25 2022-01-18 Sandisk Technologies Llc Peak power reduction management in non-volatile storage by delaying start times operations
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US20220100549A1 (en) * 2020-09-25 2022-03-31 Raytheon Company Concurrent kernel and user space debugging of guest software on a virtual machine in the presence of page table isolation
US12019898B2 (en) 2020-09-30 2024-06-25 Seagate Technology Llc Data storage system with workload-based dynamic power consumption
US11709538B2 (en) * 2020-11-19 2023-07-25 Micron Technology, Inc. Minimizing power loss and reset time with media controller suspend
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
CN112860594B (en) * 2021-01-21 2022-11-01 华中科技大学 Solid-state disk address remapping method and device and solid-state disk
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11726911B2 (en) 2021-01-25 2023-08-15 Western Digital Technologies, Inc. NVMe persistent memory region quick copy
US11373710B1 (en) 2021-02-02 2022-06-28 Sandisk Technologies Llc Time division peak power management for non-volatile storage
US11507319B2 (en) * 2021-02-04 2022-11-22 Silicon Motion, Inc. Memory controller having a plurality of control modules and associated server
US11361835B1 (en) 2021-03-01 2022-06-14 Sandisk Technologies Llc Countermeasure for reducing peak current during programming by optimizing timing of latch scan operations
US20220283738A1 (en) * 2021-03-04 2022-09-08 Macronix International Co., Ltd. Flash memory and writing method thereof
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11592894B2 (en) * 2021-04-12 2023-02-28 Dell Products L.P. Increasing power efficiency for an information handling system
US11675664B2 (en) * 2021-08-07 2023-06-13 Dell Products, L.P. Maintaining data integrity through power loss with operating system control
US20230071312A1 (en) * 2021-09-08 2023-03-09 PassiveLogic, Inc. External Activation of Quiescent Device
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
CN113972664B (en) * 2021-10-29 2024-02-20 国网上海市电力公司 Electric power data complement method and system
US12086428B2 (en) * 2021-11-15 2024-09-10 Samsung Electronics Co., Ltd. Memory controller adjusting power, memory system including same, and operating method for memory system
US11797445B2 (en) 2021-12-06 2023-10-24 Western Digital Technologies, Inc. Data storage device and method for preventing data loss during an ungraceful shutdown
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US20230236729A1 (en) * 2022-01-27 2023-07-27 Micron Technology, Inc. Performance throttling module
CN114706529B (en) * 2022-04-08 2024-08-27 合肥兆芯电子有限公司 Self-adaptive temperature control method for memory, memory device and control circuit unit
US11789819B1 (en) * 2022-04-29 2023-10-17 Micron Technology, Inc. Seamless recovery of a hardware-based I/O path in a multi-function NVMe SSD

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030210601A1 (en) * 2002-05-07 2003-11-13 Yu-Chuan Lin Back up power embodied non-volatile memory device
US20050210323A1 (en) 2004-03-05 2005-09-22 Batchelor Gary W Scanning modified data during power loss
US20080104344A1 (en) 2006-10-25 2008-05-01 Norio Shimozono Storage system comprising volatile cache memory and nonvolatile memory

Family Cites Families (349)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1534061A (en) 1967-06-09 1968-07-26 Comp Generale Electricite Interconnection resistor for high voltage switchgear
US4980861A (en) 1987-01-16 1990-12-25 Microchip Technology Incorporated NAND stack ROM
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
JP2856621B2 (en) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション Batch erase nonvolatile memory and semiconductor disk device using the same
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (en) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション Data page transfer control method
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
JPH07110784A (en) 1993-10-14 1995-04-25 Fujitsu Ltd Method and device for storing additional form record
JP3378874B2 (en) * 1994-03-18 2003-02-17 富士通株式会社 Information processing device and memory board
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5742787A (en) 1995-04-10 1998-04-21 Intel Corporation Hardware reset of a write state machine for flash memory
US5799140A (en) 1995-04-21 1998-08-25 International Business Machines Corporation Disk array system and method for storing data
DE69615278T2 (en) 1995-06-06 2002-06-27 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto SDRAM data allocation arrangement and method
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
JP3732869B2 (en) 1995-06-07 2006-01-11 株式会社日立製作所 External storage device
US5721874A (en) 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US5799200A (en) 1995-09-28 1998-08-25 Emc Corporation Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5805501A (en) 1996-05-22 1998-09-08 Macronix International Co., Ltd. Flash memory device with multiple checkpoint erase suspend logic
US6201739B1 (en) 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
JPH10320270A (en) 1997-05-15 1998-12-04 Matsushita Electric Ind Co Ltd Memory module
JP3459868B2 (en) 1997-05-16 2003-10-27 日本電気株式会社 Group replacement method in case of memory failure
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6205521B1 (en) 1997-11-03 2001-03-20 Compaq Computer Corporation Inclusion map for accelerated cache flush
US6470238B1 (en) 1997-11-26 2002-10-22 Intel Corporation Method and apparatus to control device temperature
US6295581B1 (en) 1998-02-20 2001-09-25 Ati Technologies, Inc. Method and apparatus for assuring cache coherency
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6125072A (en) 1998-07-21 2000-09-26 Seagate Technology, Inc. Method and apparatus for contiguously addressing a memory system having vertically expanded multiple memory arrays
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
KR100285967B1 (en) 1998-10-20 2001-04-16 윤덕용 Data storage device and method using flash memory
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) * 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US6295571B1 (en) 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
KR100330164B1 (en) 1999-04-27 2002-03-28 윤종용 A method for simultaneously programming plural flash memories having invalid blocks
US6849480B1 (en) 1999-05-07 2005-02-01 Seagate Technology Llc Surface mount IC stacking method and device
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
JP4106811B2 (en) 1999-06-10 2008-06-25 富士通株式会社 Semiconductor memory device and electronic device
DE19929751A1 (en) 1999-06-30 2001-01-18 Siemens Ag System and method for the transmission of data, in particular between a user program and a server program in the field of automation technology with distributed objects
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (en) 1999-09-29 2006-05-09 삼성전자주식회사 A flash-memory and a it's controling method
WO2001031512A2 (en) 1999-10-25 2001-05-03 Infolibria, Inc. Fast indexing of web objects
US6278633B1 (en) * 1999-11-05 2001-08-21 Multi Level Memory Technology High bandwidth flash memory that selects programming parameters according to measurements of previous programming operations
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
JP2001297316A (en) 2000-04-14 2001-10-26 Mitsubishi Electric Corp Memory card and control method therefor
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
KR100399034B1 (en) * 2000-05-02 2003-09-22 한국과학기술원 The Efficient Management of Memory Cell Array
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US7167944B1 (en) * 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6892298B2 (en) 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6404647B1 (en) * 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US7185162B1 (en) 2000-10-26 2007-02-27 Cypress Semiconductor Corporation Method and apparatus for programming a flash memory
US6694453B1 (en) * 2000-11-14 2004-02-17 Hewlett-Packard Development Company, L.P. Apparatus and method to handle power supply failures for a peripheral device
US7340558B2 (en) * 2000-11-22 2008-03-04 Silicon Image, Inc. Multisection memory bank system
US6564288B2 (en) * 2000-11-30 2003-05-13 Hewlett-Packard Company Memory controller with temperature sensors
JP4216457B2 (en) 2000-11-30 2009-01-28 富士通マイクロエレクトロニクス株式会社 Semiconductor memory device and semiconductor device
US20020069318A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew Real time application accelerator and method of operating the same
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7107480B1 (en) * 2000-12-22 2006-09-12 Simpletech, Inc. System and method for preventing data corruption in solid-state memory devices after a power failure
KR100365725B1 (en) 2000-12-27 2002-12-26 한국전자통신연구원 Ranked Cleaning Policy and Error Recovery Method for File Systems Using Flash Memory
US6553472B2 (en) 2001-01-12 2003-04-22 Sun Microsystems, Inc. Method for programming clock delays, command delays, read command parameter delays, and write command parameter delays of a memory controller in a high performance microprocessor
US6990547B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6802023B2 (en) 2001-03-15 2004-10-05 Hewlett-Packard Development Company, L.P. Redundant controller data storage system having hot insertion system and method
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP2003006041A (en) 2001-06-20 2003-01-10 Hitachi Ltd Semiconductor device
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6996668B2 (en) 2001-08-06 2006-02-07 Seagate Technology Llc Synchronized mirrored data in a data storage device
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US6735546B2 (en) * 2001-08-31 2004-05-11 Matrix Semiconductor, Inc. Memory device and method for temperature-based control over write and/or read operations
US7177197B2 (en) 2001-09-17 2007-02-13 Sandisk Corporation Latched programming of memory and method
KR100437610B1 (en) * 2001-09-20 2004-06-30 주식회사 하이닉스반도체 A low power semiconductor memory device with normal mode and partial array self refresh mode
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6515909B1 (en) 2001-10-05 2003-02-04 Micron Technology Inc. Flash memory device with a variable erase pulse
US6643181B2 (en) 2001-10-24 2003-11-04 Saifun Semiconductors Ltd. Method for erasing a memory cell
US6552955B1 (en) * 2001-10-30 2003-04-22 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device with reduced power consumption
US6977847B2 (en) 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US6925573B2 (en) * 2002-01-02 2005-08-02 Intel Corporation Method and apparatus to manage use of system power within a given specification
WO2003060722A1 (en) 2002-01-09 2003-07-24 Renesas Technology Corp. Memory system and memory card
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP2003281071A (en) 2002-03-20 2003-10-03 Seiko Epson Corp Data transfer controller, electronic equipment and data transfer control method
JP4050548B2 (en) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ Semiconductor memory device
US6751129B1 (en) 2002-05-21 2004-06-15 Sandisk Corporation Efficient read, write methods for multi-state memory
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US6894931B2 (en) * 2002-06-20 2005-05-17 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US6845053B2 (en) * 2002-11-15 2005-01-18 Micron Technology, Inc. Power throughput adjustment in flash memory
US7082512B2 (en) 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6836434B2 (en) 2002-11-21 2004-12-28 Micron Technology, Inc. Mode selection in a flash memory device
US7003620B2 (en) 2002-11-26 2006-02-21 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US20050213761A1 (en) 2002-12-02 2005-09-29 Walmsley Simon R Storing number and a result of a function on an integrated circuit
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
US6973551B1 (en) 2002-12-30 2005-12-06 Emc Corporation Data storage system having atomic memory operation
EP1435576B1 (en) * 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
WO2004077219A2 (en) 2003-01-30 2004-09-10 Vaman Technologies (R & D) Limited System and method of mapping patterns of data, optimising disk read and write, verifying data integrity across clients and servers of different functionality having shared resources
US7526598B2 (en) 2003-03-03 2009-04-28 Sandisk Il, Ltd. Efficient flash memory device driver
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
JP2004278439A (en) * 2003-03-17 2004-10-07 Toshiba Kyaria Kk Fluid machine
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (en) 2003-05-20 2004-12-09 Sharp Corp Method and system for controlling writing in semiconductor memory device, and portable electronic device
US7380081B2 (en) 2003-06-06 2008-05-27 Hewlett-Packard Development Company, L.P. Asynchronous data redundancy technique
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
GB0320142D0 (en) 2003-08-28 2003-10-01 Ibm Data storage systems
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
GB2425199B (en) 2003-11-13 2007-08-15 Commvault Systems Inc System and method for combining data streams in pipelined storage operations in a storage network
JP4287433B2 (en) 2003-11-18 2009-07-01 パナソニック株式会社 File recording device
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8250295B2 (en) 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
US7188229B2 (en) 2004-01-17 2007-03-06 Sun Microsystems, Inc. Method and apparatus for memory management in a multi-processor computer system
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7042664B2 (en) 2004-01-26 2006-05-09 Seagate Technology Llc Method and system for host programmable data storage device self-testing
US7064994B1 (en) * 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
DE602005015435D1 (en) 2004-04-26 2009-08-27 Storewiz Inc METHOD AND SYSTEM FOR COMPRESSING FILES FOR STORING AND OPERATING ON COMPRESSED FILES
US7412614B2 (en) * 2004-04-29 2008-08-12 Hewlett-Packard Development Company, L.P. Power management using a pre-determined thermal characteristic of a memory module
US7430571B2 (en) 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7773521B2 (en) 2004-04-30 2010-08-10 Emc Corporation Storage switch traffic bandwidth control
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
EP1769395A2 (en) 2004-05-21 2007-04-04 Computer Associates Think, Inc. Object-based storage
US7009889B2 (en) 2004-05-28 2006-03-07 Sandisk Corporation Comprehensive erase verification for non-volatile memory
US7904181B2 (en) 2004-06-01 2011-03-08 Ils Technology Llc Model for communication between manufacturing and enterprise levels
JP2005346321A (en) * 2004-06-02 2005-12-15 Hitachi Ltd Disk array apparatus and method for controlling battery output of disk array apparatus
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
TWI300186B (en) 2004-07-30 2008-08-21 Mediatek Inc Method and apparatus for data recording with pseudo-merge
US7477570B2 (en) 2004-08-20 2009-01-13 Micron Technology, Inc. Sequential access memory with system and method
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US7241655B2 (en) 2004-08-30 2007-07-10 Micron Technology, Inc. Method of fabricating a vertical wrap-around-gate field-effect-transistor for high density, low voltage logic and memory array
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4113170B2 (en) 2004-09-08 2008-07-09 株式会社東芝 Semiconductor device
US7395452B2 (en) * 2004-09-24 2008-07-01 Microsoft Corporation Method and system for improved reliability in storage devices
US8655853B2 (en) 2004-10-01 2014-02-18 Sap Ag System and method for optimizing database transaction termination
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US7257690B1 (en) 2004-10-15 2007-08-14 Veritas Operating Corporation Log-structured temporal shadow store
US7310711B2 (en) 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US7337277B2 (en) 2004-11-18 2008-02-26 International Business Machines Corporation Apparatus, system, and method for flushing cache data
US7610307B2 (en) 2004-11-30 2009-10-27 Microsoft Corporation Method and system of detecting file system namespace changes and restoring consistency
EP1839154A4 (en) 2004-12-06 2008-07-09 Teac Aerospace Technologies In System and method of erasing non-volatile recording media
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US7739290B2 (en) 2004-12-17 2010-06-15 Sap (Ag) System and method for object persistence
KR100662256B1 (en) 2004-12-20 2006-12-28 한국전자통신연구원 Object-based Storage Device and its control method for having low process load
KR100684887B1 (en) 2005-02-04 2007-02-20 삼성전자주식회사 Data storing device including flash memory and merge method of thereof
US7392429B2 (en) 2004-12-22 2008-06-24 Microsoft Corporation System and method for maintaining persistent state data
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7426649B2 (en) * 2005-02-09 2008-09-16 International Business Machines Corporation Power management via DIMM read operation limiter
US20060184736A1 (en) * 2005-02-17 2006-08-17 Benhase Michael T Apparatus, system, and method for storing modified data
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US20060212644A1 (en) 2005-03-21 2006-09-21 Acton John D Non-volatile backup for data cache
US7457166B2 (en) 2005-03-31 2008-11-25 Sandisk Corporation Erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7486564B2 (en) 2005-03-31 2009-02-03 Sandisk Corporation Soft programming non-volatile memory utilizing individual verification and additional soft programming of subsets of memory cells
US7522457B2 (en) 2005-03-31 2009-04-21 Sandisk Corporation Systems for erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7463521B2 (en) 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7451344B1 (en) 2005-04-08 2008-11-11 Western Digital Technologies, Inc. Optimizing order of error recovery steps in a disk drive
US7702928B2 (en) * 2005-04-08 2010-04-20 Hewlett-Packard Development Company, L.P. Memory module with on-board power-consumption monitoring
KR101077992B1 (en) 2005-04-11 2011-10-31 엘지전자 주식회사 Home Network Control System and Data Flow Control Method of Above the Home Network Control System
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7130960B1 (en) 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US7743210B1 (en) 2005-04-29 2010-06-22 Netapp, Inc. System and method for implementing atomic cross-stripe write operations in a striped volume set
JP2006324754A (en) 2005-05-17 2006-11-30 Fujitsu Ltd Maximum a posteriori probability decoding method and decoder thereof
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
KR101268984B1 (en) 2005-05-26 2013-05-29 삼성전자주식회사 Storage medium including application for providing meta data, apparatus for providing meta data and method therefor
US7536529B1 (en) 2005-06-10 2009-05-19 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for provisioning space in a data storage system
US7444526B2 (en) * 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
US20060294300A1 (en) 2005-06-22 2006-12-28 Seagate Technology Llc Atomic cache transactions in a distributed storage system
US20080082763A1 (en) * 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
KR100739722B1 (en) 2005-08-20 2007-07-13 삼성전자주식회사 A method for managing a flash memory and a flash memory system
JP5008845B2 (en) 2005-09-01 2012-08-22 株式会社日立製作所 Storage system, storage apparatus and control method thereof
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US8078588B2 (en) 2005-10-10 2011-12-13 Oracle International Corporation Recoverable execution
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7457928B2 (en) 2005-10-28 2008-11-25 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7440455B2 (en) 2005-12-22 2008-10-21 Level 3 Communications, Llc Registration of multiple VoIP devices
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
TWM298188U (en) 2006-01-23 2006-09-21 Genesys Logic Inc Control device for accessing Non-Volatile memory
KR20070089460A (en) 2006-02-28 2007-08-31 삼성전자주식회사 Apparatus and method for operating non-volatile memory according to priority
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US7562180B2 (en) 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US7551492B2 (en) * 2006-03-29 2009-06-23 Mosaid Technologies, Inc. Non-volatile semiconductor memory with page erase
US7640249B2 (en) 2006-03-29 2009-12-29 Sap (Ag) System and method for transactional session management
US7831778B2 (en) * 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
TWI340982B (en) * 2006-03-30 2011-04-21 Silicon Image Inc Multi-port memory device having variable port speeds
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
TW200739349A (en) * 2006-04-12 2007-10-16 Giga Byte Tech Co Ltd Volatile storage device and serial connection type mixed storage device having the same
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7509460B2 (en) 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US7464240B2 (en) 2006-05-23 2008-12-09 Data Ram, Inc. Hybrid solid state disk drive with controller
US7424587B2 (en) 2006-05-23 2008-09-09 Dataram, Inc. Methods for managing data writes and reads to a hybrid solid-state disk drive
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
EP2211271A3 (en) 2006-07-31 2011-04-27 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
KR101128234B1 (en) 2006-08-23 2012-03-23 엘지전자 주식회사 Apparatus and method for controlling access of memory
US7500078B2 (en) * 2006-08-25 2009-03-03 Dell Products L.P. Thermal control of memory modules using proximity information
US7788513B2 (en) 2006-08-29 2010-08-31 Hewlett-Packard Development Company, L.P. Method of reducing power consumption of a computing system by evacuating selective platform memory components thereof
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
US7761625B2 (en) 2006-09-28 2010-07-20 Virident Systems, Inc. Methods for main memory with non-volatile type memory modules, and related technologies
US7573744B2 (en) 2006-09-29 2009-08-11 Kabushiki Kaisha Toshiba Semiconductor memory device having different capacity areas
US7495954B2 (en) 2006-10-13 2009-02-24 Sandisk Corporation Method for partitioned erase and erase verification to compensate for capacitive coupling effects in non-volatile memory
US7499338B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation Partitioned soft programming in non-volatile memory
US7499317B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
US7535766B2 (en) 2006-10-13 2009-05-19 Sandisk Corporation Systems for partitioned soft programming in non-volatile memory
US7567462B2 (en) 2006-11-16 2009-07-28 Micron Technology, Inc. Method and system for selectively limiting peak power consumption during programming or erase of non-volatile memory devices
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
KR20090087498A (en) 2006-12-06 2009-08-17 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) Apparatus, system and method for solid-state storage as cache for high-capacity, non-volatile storage
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
TW200825696A (en) * 2006-12-15 2008-06-16 Inventec Corp Power management system
KR100811274B1 (en) 2006-12-28 2008-03-07 주식회사 하이닉스반도체 Method for erasing data of nand type flash memory device
CN101211209B (en) * 2006-12-29 2010-09-22 佛山市顺德区顺达电脑厂有限公司 Power management system and method
US8880480B2 (en) 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US7564722B2 (en) 2007-01-22 2009-07-21 Micron Technology, Inc. Memory system and method having volatile and non-volatile memory devices at same hierarchical level
WO2008106686A1 (en) 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
US7599967B2 (en) 2007-03-20 2009-10-06 Oracle International Corporation No data loss system with reduced commit latency
US7908501B2 (en) 2007-03-23 2011-03-15 Silicon Image, Inc. Progressive power control of a multi-port memory device
WO2008117520A1 (en) 2007-03-28 2008-10-02 Panasonic Corporation Memory controller, nonvolatile memory system and host device
JP2008250961A (en) 2007-03-30 2008-10-16 Nec Corp Storage medium control device, data storage device, data storage system, method and control program
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8427891B2 (en) 2007-04-17 2013-04-23 Rambus Inc. Hybrid volatile and non-volatile memory device with a shared interface circuit
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US7606079B2 (en) * 2007-04-25 2009-10-20 Sandisk Corporation Reducing power consumption during read operations in non-volatile storage
US7752360B2 (en) 2007-05-16 2010-07-06 Nuova Systems, Inc. Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8074034B2 (en) * 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
US8046546B2 (en) * 2007-07-25 2011-10-25 AGIGA Tech Variable partitioning in a hybrid memory subsystem
US8028198B2 (en) * 2007-07-30 2011-09-27 Micron Technology, Inc. Devices, methods, and apparatuses for detection, sensing, and reporting functionality for semiconductor memory
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8621605B2 (en) 2007-10-09 2013-12-31 International Business Machines Corporation Method for reducing the time to diagnose the cause of unexpected changes to system files
TWI578330B (en) * 2007-10-09 2017-04-11 A-Data Technology Co Ltd Solid state semiconductor storage device with temperature control function and control method thereof
WO2009052527A1 (en) 2007-10-19 2009-04-23 Virident Systems, Inc. Managing memory systems containing components with asymmetric characteristics
US8548953B2 (en) 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
US8001334B2 (en) * 2007-12-06 2011-08-16 Silicon Image, Inc. Bank sharing and refresh in a shared multi-port memory device
US9727452B2 (en) 2007-12-14 2017-08-08 Virident Systems, Llc Distributing metadata across multiple different disruption regions within an asymmetric memory system
US7917689B2 (en) 2007-12-28 2011-03-29 Intel Corporation Methods and apparatuses for nonvolatile memory wear leveling
US8175528B2 (en) 2008-03-18 2012-05-08 Spansion Llc Wireless mass storage flash memory
US8001434B1 (en) 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
US8266114B2 (en) 2008-09-22 2012-09-11 Riverbed Technology, Inc. Log structured content addressable deduplicating storage
JP5159421B2 (en) 2008-05-14 2013-03-06 株式会社日立製作所 Storage system and storage system management method using management device
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8010738B1 (en) 2008-06-27 2011-08-30 Emc Corporation Techniques for obtaining a specified lifetime for a data storage device
JP5242264B2 (en) 2008-07-07 2013-07-24 株式会社東芝 Data control apparatus, storage system, and program
US8046551B1 (en) 2008-08-14 2011-10-25 Emc Corporation Techniques for processing I/O requests
US8209439B2 (en) 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
US7777652B2 (en) 2008-10-29 2010-08-17 Silicon Image, Inc. Coding system for memory systems employing high-speed serial links
US8407427B2 (en) 2008-10-29 2013-03-26 Silicon Image, Inc. Method and system for improving serial port memory communication latency and reliability
US8990573B2 (en) 2008-11-10 2015-03-24 Citrix Systems, Inc. System and method for using variable security tag location in network communications
US20100146187A1 (en) 2008-12-05 2010-06-10 Grimsrud Knut S Endurance management technique
US8645641B2 (en) * 2008-12-17 2014-02-04 Seagate Technology Llc Intelligent storage device controller
US20100199020A1 (en) 2009-02-04 2010-08-05 Silicon Storage Technology, Inc. Non-volatile memory subsystem and a memory controller therefor
US8375195B2 (en) 2009-03-05 2013-02-12 Oracle America, Inc. Accessing memory locations for paged memory objects in an object-addressed memory system
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
US8364923B2 (en) 2009-03-30 2013-01-29 Oracle America, Inc. Data storage system manager and method for managing a data storage system
US8566507B2 (en) * 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US8595572B2 (en) * 2009-04-08 2013-11-26 Google Inc. Data storage device with metadata command
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8214663B2 (en) * 2009-04-15 2012-07-03 International Business Machines Corporation Using power proxies combined with on-chip actuators to meet a defined power target
US8095770B2 (en) 2009-05-08 2012-01-10 Oracle America Inc. Method and system for mapping data to a process
US8230257B2 (en) * 2009-06-26 2012-07-24 Seagate Technology Llc Systems, methods and devices for controlling backup power provided to memory devices and used for storing of sensitive data
US20100332871A1 (en) * 2009-06-30 2010-12-30 International Buisness Machines Corporation Capping power consumption in a data storage system
US8291131B2 (en) 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US8332673B2 (en) * 2009-08-04 2012-12-11 Hitachi, Ltd. System and method to manage power consumption
US20110035562A1 (en) 2009-08-10 2011-02-10 Hewlett-Packard Development Company, L.P. Providing mirroring write data
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
WO2011031900A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US8130551B2 (en) 2010-03-31 2012-03-06 Sandisk Technologies Inc. Extra dummy erase pulses after shallow erase-verify to avoid sensing deep erased threshold voltage
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US8688899B2 (en) 2010-09-28 2014-04-01 Fusion-Io, Inc. Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol
US8738846B2 (en) 2010-10-15 2014-05-27 Arkologic Limited File system-aware solid-state storage management system
EP2652623B1 (en) 2010-12-13 2018-08-01 SanDisk Technologies LLC Apparatus, system, and method for auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030210601A1 (en) * 2002-05-07 2003-11-13 Yu-Chuan Lin Back up power embodied non-volatile memory device
US20050210323A1 (en) 2004-03-05 2005-09-22 Batchelor Gary W Scanning modified data during power loss
US20080104344A1 (en) 2006-10-25 2008-05-01 Norio Shimozono Storage system comprising volatile cache memory and nonvolatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190001303A (en) * 2017-06-27 2019-01-04 주식회사 케이티 Remote back-up device
KR102077283B1 (en) * 2017-06-27 2020-02-14 주식회사 케이티 Remote back-up device

Also Published As

Publication number Publication date
WO2011031900A3 (en) 2011-06-16
US8429436B2 (en) 2013-04-23
WO2011031900A2 (en) 2011-03-17
US20110058440A1 (en) 2011-03-10
US8289801B2 (en) 2012-10-16
EP2476039B1 (en) 2016-10-26
KR20120093869A (en) 2012-08-23
EP2476039A4 (en) 2014-03-05
WO2011031899A3 (en) 2011-06-16
CN102597910A (en) 2012-07-18
US20110060927A1 (en) 2011-03-10
WO2011031899A2 (en) 2011-03-17
US20130039141A1 (en) 2013-02-14
CN102597910B (en) 2015-03-25
US9305610B2 (en) 2016-04-05
EP2476039A2 (en) 2012-07-18

Similar Documents

Publication Publication Date Title
KR101689420B1 (en) Apparatus, system, and method for power reduction management in a storage device
US11960412B2 (en) Systems and methods for identifying storage resources that are not in use
US9223662B2 (en) Preserving data of a volatile memory
US8074011B2 (en) Apparatus, system, and method for storage space recovery after reaching a read count limit

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191008

Year of fee payment: 4