US12353744B2 - Cold storage partition management in proof of space blockchain systems - Google Patents
Cold storage partition management in proof of space blockchain systems Download PDFInfo
- Publication number
- US12353744B2 US12353744B2 US17/576,634 US202217576634A US12353744B2 US 12353744 B2 US12353744 B2 US 12353744B2 US 202217576634 A US202217576634 A US 202217576634A US 12353744 B2 US12353744 B2 US 12353744B2
- Authority
- US
- United States
- Prior art keywords
- partition
- data
- memory
- memory array
- memory devices
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
Definitions
- SSDs solid-state storage devices
- NVMe non-volatile memory express
- PCIe peripheral component interconnect express
- the memory devices within SSDs that store the data have a finite number of uses before they are rendered inoperable.
- the increased demands of generating the proof of consensus data and the low demands of storing the generated data typically leads to users generating their data on SSDs and storing the data for use within the blockchain application within a second storage device.
- FIG. 1 is a schematic block diagram of a host-computing device with a storage device suitable for cold storage partition management in accordance with an embodiment of the disclosure
- FIG. 2 is a schematic block diagram of a storage device suitable for cold storage partition management in accordance with an embodiment of the disclosure
- FIG. 3 is a conceptual schematic diagram of a two-dimensional memory array in accordance with an embodiment of the disclosure.
- FIG. 4 is a flowchart depicting a process for mining cryptocurrency utilizing a proof of space consensus method in accordance with an embodiment of the disclosure
- FIG. 5 is a flowchart depicting a process for processing and storing a plot of data associated with a proof of space consensus method in accordance with an embodiment of the disclosure
- FIG. 6 is a conceptual illustration of a memory array with a dynamically managed first and second partition configured for processing proof of space consensus data in accordance with an embodiment of the disclosure
- FIG. 7 is a flowchart depicting a process for dynamically managing partitions for processing proof of space consensus data in accordance with an embodiment of the disclosure
- FIG. 8 is a flowchart depicting a process for utilizing specialized writing processes for transferring proof of space consensus data from a first partition to a second, cold-storage partition; in accordance with an embodiment of the disclosure
- FIG. 9 is a conceptual illustration of a dual memory array configuration with a dynamically managed first and second partition configured for processing proof of space consensus data in accordance with an embodiment of the disclosure.
- FIG. 10 is a flowchart depicting a process for dynamically managing a storage device with a dual memory array configuration for processing proof of space consensus data in accordance with an embodiment of the disclosure.
- devices and methods are discussed herein that allow single storage devices to be utilized with proof of space blockchain processes. More specifically, many embodiments utilize multiple partitions that are configured for the differing uses of a proof of space blockchain system. In this way, users may be able to facilitate proof of space blockchain mining within a single drive within their system and retain optimal performance. Additional embodiments may allow for unique configurations of storage devices such that increased performance and/or reduced costs may be realized through the use of specialized memory arrays.
- users may desire to utilize storage devices for a proof of space mining operation.
- One such proof of space-based blockchain network is called Chia.
- Chia cryptocurrency utilizes proof of space consensus methods to generate new blocks within its blockchain.
- This proof of space data for Chia is called a “plot.”
- Chia plots are typically generated through a “plotting” process which requires a lot of read and write cycles within the memory devices of a storage device. Once generated however, the completed plot only needs occasional access for challenge responses.
- This completed plot data can be stored in a long-term storage partition which may configured to only be written to once or a few times. This type of storage can be dubbed “cold storage” as it is not likely to be accessed very often compared to the partition that is utilized to generate the plots.
- the storage device may comprise a single memory array which is divided into the two necessary partitions (or more).
- the first partition can be configured for high-speed or fast access, while the second partition can be configured for long-term storage.
- embodiments of the current disclosure can monitor the health of the memory devices within the memory array and select end-of-life memory devices for allocation from the first partition to the second partition. In this way, the sizes of the various partitions will be dynamically changed, with the first partition being reduced in size while the second partition is increased respectively.
- This dynamic partition management can be configured to follow the overall finite lifespan of the storage device such that it becomes optimized for proof of space consensus data generation and storage.
- the storage device may be configured with multiple memory arrays.
- the first memory array may be regular NAND memory devices that allow for typical high-speed access while the second memory array comprises ROM or other similar write few, read many memory devices.
- the known lifespan of NAND memory devices and the generation of proof of space consensus data can be used to calculate the proper size of ROM memory that should be within the storage device to allow for maximum usage of the NAND memory devices before they reach end-of-life.
- a low-error method of writing data to memory devices includes writing (or programming) the memory device slowly or at least slower than is typical. This slower writing method can reduce the chances of data errors within the memory device.
- embodiments of the storage devices described herein can be configured with a specialized low-error writing process for transferring data to cold storage where it may be written to memory devices that may not be able to be re-written to again.
- aspects of the present disclosure may be embodied as an apparatus, system, method, or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, or the like) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “function,” “module,” “apparatus,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more non-transitory computer-readable storage media storing computer-readable and/or executable program code. Many of the functional units described in this specification have been labeled as functions, in order to emphasize their implementation independence more particularly.
- a function may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components.
- a function may also be implemented in programmable hardware devices such as via field programmable gate arrays, programmable array logic, programmable logic devices, or the like.
- An identified function of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions that may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified function need not be physically located together but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the function and achieve the stated purpose for the function.
- a function of executable code may include a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, across several storage devices, or the like.
- the software portions may be stored on one or more computer-readable and/or executable storage media. Any combination of one or more computer-readable storage media may be utilized.
- a computer-readable storage medium may include, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing, but would not include propagating signals.
- a computer readable and/or executable storage medium may be any tangible and/or non-transitory medium that may contain or store a program for use by or in connection with an instruction execution system, apparatus, processor, or device.
- Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object-oriented programming language such as Python, Java, Smalltalk, C++, C#, Objective C, or the like, conventional procedural programming languages, such as the “C” programming language, scripting programming languages, and/or other similar programming languages.
- the program code may execute partly or entirely on one or more of a user's computer and/or on a remote computer or server over a data network or the like.
- a circuit may include a portion of an integrated circuit, an integrated circuit, a set of integrated circuits, a set of non-integrated electrical and/or electrical components with or without integrated circuit devices, or the like.
- a circuit may include custom VLSI circuits, gate arrays, logic circuits, or other integrated circuits; off-the-shelf semiconductors such as logic chips, transistors, or other discrete devices; and/or other mechanical or electrical devices.
- a circuit may also be implemented as a synthesized circuit in a programmable hardware device such as field programmable gate array, programmable array logic, programmable logic device, or the like (e.g., as firmware, a netlist, or the like).
- the host-computing device 110 may further comprise computer-readable storage medium 114 .
- the computer-readable storage medium 114 may comprise executable instructions configured to cause the host-computing device 110 (e.g., processor 111 ) to perform steps of one or more of the methods disclosed herein.
- the buffering component 150 may be embodied as one or more computer-readable instructions stored on the computer-readable storage medium 114 .
- a logical address refers to any identifier for referencing a memory resource (e.g., data), including, but not limited to: a logical block address (LBA), cylinder/head/sector (CHS) address, a file name, an object identifier, an inode, a Universally Unique Identifier (UUID), a Globally Unique Identifier (GUID), a hash code, a signature, an index entry, a range, an extent, or the like.
- LBA logical block address
- CHS cylinder/head/sector
- UUID Universally Unique Identifier
- GUID Globally Unique Identifier
- hash code a signature
- an index entry e.g., an index entry, a range, an extent, or the like.
- the communication interface 113 may comprise one or more network interfaces configured to communicatively couple the host-computing device 110 and/or the controller 126 to a network 115 and/or to one or more remote clients 117 (which can act as another host).
- the controller 126 is part of and/or in communication with one or more storage devices 120 .
- FIG. 1 depicts a single storage device 120 , the disclosure is not limited in this regard and could be adapted to incorporate any number of storage devices 120 .
- non-volatile memory channels 122 is referred to herein as “memory media,” in various embodiments, the non-volatile memory channels 122 may more generally comprise one or more non-volatile recording media capable of recording data, which may be referred to as a non-volatile memory medium, a non-volatile memory device, or the like.
- the storage device 120 in various embodiments, may comprise a non-volatile recording device, a non-volatile memory array 129 , a plurality of interconnected storage devices in an array, or the like.
- the non-volatile memory channels 122 may comprise one or more non-volatile memory devices 123 , which may include, but are not limited to: chips, packages, planes, die, or the like.
- a controller 126 may be configured to manage data operations on the non-volatile memory channels 122 , and may comprise one or more processors, programmable processors (e.g., FPGAs), ASICs, micro-controllers, or the like. In some embodiments, the controller 126 is configured to store data on and/or read data from the non-volatile memory channels 122 , to transfer data to/from the storage device 120 , and so on.
- the controller 126 may be communicatively coupled to the non-volatile memory channels 122 by way of a bus 127 .
- the bus 127 may comprise an I/O bus for communicating data to/from the non-volatile memory devices 123 .
- the bus 127 may further comprise a control bus for communicating addressing and other command and control information to the non-volatile memory devices 123 .
- the bus 127 may communicatively couple the non-volatile memory devices 123 to the controller 126 in parallel. This parallel access may allow the non-volatile memory devices 123 to be managed as a group, forming a non-volatile memory array 129 .
- the controller 126 may organize a block of word lines within a non-volatile memory device 123 , in certain embodiments, using addresses of the word lines, such that the word lines are logically organized into a monotonically increasing sequence (e.g., decoding and/or translating addresses for word lines into a monotonically increasing sequence, or the like).
- word lines of a block within a non-volatile memory device 123 may be physically arranged in a monotonically increasing sequence of word line addresses, with consecutively addressed word lines also being physically adjacent (e.g., WL 0 , WL 1 , WL 2 , . . . WLN).
- the controller 126 may comprise and/or be in communication with a device driver executing on the host-computing device 110 .
- a device driver may provide storage services to the host clients 116 via one or more interfaces 133 .
- a device driver may further comprise a storage device interface 139 that is configured to transfer data, commands, and/or queries to the controller 126 over a bus 125 , as described above.
- the controller 126 may include a front-end module 208 that interfaces with a host via a plurality of high priority and low priority communication channels, a back-end module 210 that interfaces with the non-volatile memory devices 123 , and various other modules that perform various functions of the storage device 120 .
- each module may just be the portion of the memory that comprises instructions executable with the processor to implement the features of the corresponding module without the module including any other hardware. Because each module includes at least some hardware even when the included hardware comprises software, each module may be interchangeably referred to as a hardware module.
- the controller 126 may include a buffer management/bus control module 214 that manages buffers in random access memory (RAM) 216 and controls the internal bus arbitration for communication on an internal communications bus 217 of the controller 126 .
- a read only memory (ROM) 218 may store and/or access system boot code. Although illustrated in FIG. 2 as located separately from the controller 126 , in other embodiments one or both of the RAM 216 and the ROM 218 may be located within the controller 126 . In yet other embodiments, portions of RAM 216 and ROM 218 may be located both within the controller 126 and outside the controller 126 . Further, in some implementations, the controller 126 , the RAM 216 , and the ROM 218 may be located on separate semiconductor dies. As discussed below, in one implementation, the submission queues and the completion queues may be stored in a controller memory buffer, which may be housed in RAM 216 .
- the front-end module 208 may include a host interface 220 and a physical layer interface 222 that provides the electrical interface with the host or next level storage controller.
- the choice of the type of the host interface 220 can depend on the type of memory being used. Examples types of the host interfaces 220 may include, but are not limited to, SATA, SATA Express, SAS, Fibre Channel, USB, PCIe, and NVMe.
- the host interface 220 may typically facilitate transfer for data, control signals, and timing signals.
- the back-end module 210 may include an error correction controller (ECC) engine 224 that encodes the data bytes received from the host and decodes and error corrects the data bytes read from the non-volatile memory devices 123 .
- ECC error correction controller
- the back-end module 210 may also include a command sequencer 226 that generates command sequences, such as program, read, and erase command sequences, to be transmitted to the non-volatile memory devices 123 .
- the back-end module 210 may include a RAID (Redundant Array of Independent Drives) module 228 that manages generation of RAID parity and recovery of failed data. The RAID parity may be used as an additional level of integrity protection for the data being written into the storage device 120 .
- RAID Redundant Array of Independent Drives
- the RAID module 228 may be a part of the ECC engine 224 .
- a memory interface 230 provides the command sequences to the non-volatile memory devices 123 and receives status information from the non-volatile memory devices 123 . Along with the command sequences and status information, data to be programmed into and read from the non-volatile memory devices 123 may be communicated through the memory interface 230 .
- a flash control layer 232 may control the overall operation of back-end module 210 .
- Additional modules of the storage device 120 illustrated in FIG. 2 may include a media management layer 238 , which performs wear leveling of memory cells of the non-volatile memory devices 123 .
- the storage device 120 may also include other discrete components 240 , such as external electrical interfaces, external RAM, resistors, capacitors, or other components that may interface with controller 126 .
- one or more of the RAID modules 228 , media management layer 238 and buffer management/bus control module 214 are optional components that may not be necessary in the controller 126 .
- the controller 126 may also comprise a dynamic cold-storage partitioning logic 234 .
- the dynamic cold-storage partitioning logic 234 can be configured to monitor data usage, received host commands, and partition conditions within the storage device 120 .
- the dynamic cold-storage partitioning logic 234 can detect when a specific host command is received that indicates that a certain process related to proof of space consensus data generation is completed. This can trigger the moving of one portion of data within the memory array from a first partition to a second partition. This may also trigger an evaluation of the overall status of the memory devices within the various partitions to determine what the current lifespan may be for each memory device.
- memory devices that fall below a certain threshold of use may be deemed to be end-of-life and may be selected for reallocation from a first high-speed partition to a second, long-term storage partition within the memory array.
- FIG. 3 a conceptual schematic diagram of a two-dimensional memory array 310 in accordance with an embodiment of the invention is shown.
- Memory devices such as those depicted in FIGS. 1 and 2 , may be arranged in two or three dimensions, such as a two-dimensional memory array or a three-dimensional memory array.
- FIG. 3 is a schematic diagram of one example of a two-dimensional memory array 310 , such as a 2D or planar NAND memory array.
- the two-dimensional memory array 310 includes a set of NAND strings 350 .
- Each NAND string 350 comprises a memory cells 360 A, 360 B, 360 C, 360 D to 360 N.
- Each NAND string 350 includes a select gate drain transistor (SGD) 320 and a select gate source transistor (SGS) 330 .
- the two-dimensional memory array 310 includes multiple pages 390 .
- Page 390 is accessed by the control gates of the cells of the page connected in common to a word line 370 and each cell accessible via bit lines 380 .
- the memory cells may be arranged in other configurations.
- the sum of these groups of pages is considered a block 395 .
- the memory block 395 can also be further arranged and configured with other memory blocks to generate larger memory structures as described in more detail below.
- These memory blocks also typically have a finite lifespan, meaning that they will eventually fail over time. Specifically, each time the memory cell is written to, and erased, it may be harder to hold a proper charge such that a particular (and correct) piece of data may be retrieved from the cell. Thus, data storage manufacturer's configure various methods on storage devices to make sure wear within the storage device is spread across all blocks and memory devices somewhat equally. Eventually though, there may be a point where it is not possible to reliably store data within the memory cell. Instead of waiting until this happens, storage device manufacturers may elect to set a predetermined threshold of use based on the expected lifespan of the memory device.
- a flowchart depicting a process 400 for mining cryptocurrency utilizing a proof of space consensus method is shown.
- cryptocurrency that uses a consensus method of proof of space can be utilized as an alternative to the currently more popular proof of work method.
- a blockchain-based cryptocurrency that utilizes proof of space as a consensus method is Chia. Chia is centered on creating (i.e., “plotting”) large quantities of proof of space consensus data that is formatted into one or more “plots.” These plots are then stored on a hard drive for future accessing by the online Chia blockchain network.
- the plots comprise a series of hashed tables which may be accessed by the Chia network in response to a challenge posed by the network. This process of storing the plots and providing them to the online Chia network for challenge processing is called “farming.”
- the plotting stage can begin by generating data into plots (block 410 ).
- Chia utilizes plots, some embodiments may be able to be formatted for use within other proof of space-based blockchain-based systems.
- the generation of plot data involves the creation of a plurality of tables comprising cryptographic hashes that may be nested, self-referential, or otherwise related.
- the plots are completed and stored onto a storage device (block 420 ). This generation of plots creates a lot of input and output processes within the storage device and benefits from high-speed storage devices. This results in many users utilizing SSDs for plotting operations. However, the nature of many SSDs and their finite endurance leads to many users copying the generated plots to a secondary storage device that is more configured for long-term storage.
- a storage device will comprise a NAND array 610 composed of a plurality of memory devices.
- the NAND array 610 can be formatted into a number of partitions.
- the NAND array 610 can be partitioned into a first partition and a second partition for use with dynamically managed proof of space consensus data.
- the embodiment depicted in FIG. 6 is configured for use with the Chia blockchain network and has a first, plot partition 630 and a second, farm partition 620 .
- the partitions 620 , 630 within the NAND array 610 are separated by a dashed line to indicate the relative number of memory devices allocated to each partition.
- references to the farm partition 620 and/or plot partition 630 may be replaced by a first or second partition based on how the proof of space consensus data is processed.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
Claims (17)
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/576,634 US12353744B2 (en) | 2022-01-14 | 2022-01-14 | Cold storage partition management in proof of space blockchain systems |
| DE102022112662.5A DE102022112662A1 (en) | 2022-01-14 | 2022-05-19 | COLD STORAGE PARTITION MANAGEMENT IN PROOF-OF-SPACE BLOCKCHAIN SYSTEMS |
| KR1020220063386A KR102799144B1 (en) | 2022-01-14 | 2022-05-24 | Cold Storage Partition Management in Proof of Space Blockchain Systems |
| CN202210577300.0A CN116483254A (en) | 2022-01-14 | 2022-05-25 | Cold Storage Partition Management in Proof-of-Space Blockchain Systems |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/576,634 US12353744B2 (en) | 2022-01-14 | 2022-01-14 | Cold storage partition management in proof of space blockchain systems |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230229331A1 US20230229331A1 (en) | 2023-07-20 |
| US12353744B2 true US12353744B2 (en) | 2025-07-08 |
Family
ID=86990794
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/576,634 Active US12353744B2 (en) | 2022-01-14 | 2022-01-14 | Cold storage partition management in proof of space blockchain systems |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US12353744B2 (en) |
| KR (1) | KR102799144B1 (en) |
| CN (1) | CN116483254A (en) |
| DE (1) | DE102022112662A1 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20250202976A1 (en) * | 2023-12-19 | 2025-06-19 | Omar Syed | System and method for dynamic state sharding in a distributed ledger |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060143418A1 (en) * | 2004-08-30 | 2006-06-29 | Toru Takahashi | Storage system and data relocation control device |
| US20150205525A1 (en) * | 2014-01-18 | 2015-07-23 | International Business Machines Corporation | Fine-grained data reorganization in tiered storage architectures |
| US20190146923A1 (en) * | 2017-11-10 | 2019-05-16 | Smart IOPS, Inc. | Devices, systems, and methods for configuring a storage device with cache |
| US20190377508A1 (en) * | 2018-06-11 | 2019-12-12 | Western Digital Technologies, Inc. | Adjustment of storage device parameters based on workload characteristics |
| US20210133070A1 (en) * | 2019-10-30 | 2021-05-06 | International Business Machines Corporation | Managing blocks of memory based on block health using hybrid controllers |
| US20220326877A1 (en) * | 2021-04-05 | 2022-10-13 | Apple Inc. | TECHNIQUES FOR BALANCING WRITE COMMANDS ON SOLID STATE STORAGE DEVICES (SSDs) |
| US20230185476A1 (en) * | 2021-12-14 | 2023-06-15 | Micron Technology, Inc. | Management of Storage Space in Solid State Drives to Support Proof of Space Activities |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7457910B2 (en) * | 2005-06-29 | 2008-11-25 | Sandisk Corproation | Method and system for managing partitions in a storage device |
| US8412862B2 (en) * | 2008-12-18 | 2013-04-02 | International Business Machines Corporation | Direct memory access transfer efficiency |
| US20170068467A1 (en) | 2015-09-04 | 2017-03-09 | HGST Netherlands B.V. | Wear management for flash memory devices |
| KR102285798B1 (en) * | 2018-12-19 | 2021-08-05 | 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. | Shared secret-based blockchain storage |
-
2022
- 2022-01-14 US US17/576,634 patent/US12353744B2/en active Active
- 2022-05-19 DE DE102022112662.5A patent/DE102022112662A1/en not_active Withdrawn
- 2022-05-24 KR KR1020220063386A patent/KR102799144B1/en active Active
- 2022-05-25 CN CN202210577300.0A patent/CN116483254A/en active Pending
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060143418A1 (en) * | 2004-08-30 | 2006-06-29 | Toru Takahashi | Storage system and data relocation control device |
| US20150205525A1 (en) * | 2014-01-18 | 2015-07-23 | International Business Machines Corporation | Fine-grained data reorganization in tiered storage architectures |
| US20190146923A1 (en) * | 2017-11-10 | 2019-05-16 | Smart IOPS, Inc. | Devices, systems, and methods for configuring a storage device with cache |
| US20190377508A1 (en) * | 2018-06-11 | 2019-12-12 | Western Digital Technologies, Inc. | Adjustment of storage device parameters based on workload characteristics |
| US20210133070A1 (en) * | 2019-10-30 | 2021-05-06 | International Business Machines Corporation | Managing blocks of memory based on block health using hybrid controllers |
| US20220326877A1 (en) * | 2021-04-05 | 2022-10-13 | Apple Inc. | TECHNIQUES FOR BALANCING WRITE COMMANDS ON SOLID STATE STORAGE DEVICES (SSDs) |
| US20230185476A1 (en) * | 2021-12-14 | 2023-06-15 | Micron Technology, Inc. | Management of Storage Space in Solid State Drives to Support Proof of Space Activities |
Non-Patent Citations (1)
| Title |
|---|
| Chia Proof of Space Construction Version 1.1, Jul. 2020, Chia. (Year: 2020). * |
Also Published As
| Publication number | Publication date |
|---|---|
| DE102022112662A1 (en) | 2023-07-20 |
| KR102799144B1 (en) | 2025-04-21 |
| KR20230110148A (en) | 2023-07-21 |
| CN116483254A (en) | 2023-07-25 |
| US20230229331A1 (en) | 2023-07-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12001359B2 (en) | Identification and classification of write stream priority | |
| US11789630B2 (en) | Identified zones for optimal parity sharing zones | |
| CN112148525B (en) | Enables faster and regulated device initialization times | |
| US11543992B2 (en) | Decreasing physical secure erase times in solid state drives | |
| US12353744B2 (en) | Cold storage partition management in proof of space blockchain systems | |
| US11625189B2 (en) | Systems and methods for fragmentation management in host buffers | |
| WO2022260727A1 (en) | Managing persistent memory regions across multi protocols | |
| US11934704B1 (en) | Control table set determination in storage devices | |
| US12346583B2 (en) | Tracking data usage in storage devices | |
| US20240036729A1 (en) | Efficient Sub-Block Erasing | |
| US11816350B2 (en) | Managing overwrite data within solid state drives | |
| US11775200B2 (en) | Control block management in storage devices | |
| US11698745B2 (en) | Pre-erasure of memory in storage devices | |
| US12124288B2 (en) | Storage device throttling in proof of space blockchain systems | |
| US11907535B2 (en) | Storage device optimizations in proof of space blockchain systems | |
| US20240160561A1 (en) | Exposed Physical Partitions in Solid-State Storage Devices | |
| US20240111455A1 (en) | Control Table Set Management In Storage Devices | |
| US12001701B2 (en) | Storage biasing for solid state drive accelerators | |
| US20250298743A1 (en) | Advanced file system with dynamic block allocation | |
| US20220413698A1 (en) | Providing Priority Indicators for NVMe Data Communication Streams |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:AVRAHAM, DAVID;BAZARSKY, ALEXANDER;ZAMIR, RAN;REEL/FRAME:058663/0776 Effective date: 20220111 |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNOR'S INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:067982/0032 Effective date: 20240621 |
|
| AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS THE AGENT, ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:068762/0494 Effective date: 20240820 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: PARTIAL RELEASE OF SECURITY INTERESTS;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS AGENT;REEL/FRAME:071382/0001 Effective date: 20250424 Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, ILLINOIS Free format text: SECURITY AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:071050/0001 Effective date: 20250424 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| CC | Certificate of correction |