-
公开(公告)号:US10437670B1
公开(公告)日:2019-10-08
申请号:US15988889
申请日:2018-05-24
发明人: Ioannis Koltsidas , Charles J. Camp , Nikolas Ioannou , Roman A. Pletka , Antonios K. Kourtis , Sasa Tomic , Radu I. Stoica , Christopher Dennett , Andrew D. Walls
摘要: A computer-implemented method, according to one embodiment, includes: receiving a write command to write data, the write command being received from a log structure array at a host location. The computer-implemented method also includes: extracting metadata information from the received write command; sequentially adding the extracted metadata information to a metadata buffer; extracting parity information from the received write command; adding the extracted parity information to a parity buffer; sending the data corresponding to the received write command to memory; determining whether an open segment in the memory which corresponds to the write command has been filled; updating the parity buffer with the metadata information included in the metadata buffer in response to determining that the open segment has been filled; and destaging the metadata information from the metadata buffer and parity information from the parity buffer to a physical storage location in the memory.
-
公开(公告)号:US10339048B2
公开(公告)日:2019-07-02
申请号:US14581976
申请日:2014-12-23
发明人: Charles J. Camp , Timothy J. Fisher , Aaron D. Fry , Nikolas Ioannou , Ioannis Koltsidas , Roman Pletka , Sasa Tomic
摘要: An apparatus, according to one embodiment, includes non-volatile memory configured to store data, and a controller and logic integrated with and/or executable by the controller, the logic being configured to: determine, by the controller, that at least one block of the non-volatile memory and/or portion of a block of the non-volatile memory meets a retirement condition, re-evaluate, by the controller, the at least one block and/or the portion of a block to determine whether to retire the at least one block and/or the portion of a block, indicate, by the controller, that the at least one block and/or the portion of a block remains usable when a result of the re-evaluation is not to retire the block, and indicate, by the controller, that the at least one block and/or the portion of a block is retired when the result of the re-evaluation is to retire the block.
-
公开(公告)号:US10235396B2
公开(公告)日:2019-03-19
申请号:US15250276
申请日:2016-08-29
发明人: Nikolas Ioannou , Roman A. Pletka , Cheng-Chung Song , Radu Stoica , Sasa Tomic , Andrew D. Walls
摘要: A controller of a data storage system generates fingerprints of data blocks written to the data storage system. The controller maintains, in a data structure, respective state information for each of a plurality of data blocks. The state information for each data block can be independently set to indicate any of a plurality of states, including at least one deduplication state and at least one non-deduplication state. At allocation of a data block, the controller initializes the state information for the data block to a non-deduplication state and, thereafter, in response to detection of a write of duplicate of the data block to the data storage system, transitions the state information for the data block to a deduplication state. The controller selectively performs data deduplication for data blocks written to the data storage system based on the state information in the data structure and by reference to the fingerprints.
-
174.
公开(公告)号:US20190065058A1
公开(公告)日:2019-02-28
申请号:US16174068
申请日:2018-10-29
发明人: Charles J. Camp , Timothy J. Fisher , Aaron D. Fry , Nikolas Ioannou , Ioannis Koltsidas , Roman A. Pletka , Sasa Tomic
CPC分类号: G06F3/061 , G06F3/0616 , G06F3/0631 , G06F3/064 , G06F3/0643 , G06F3/0659 , G06F3/067 , G06F3/0679 , G06F12/0246 , G06F12/0253 , G06F2212/1036 , G06F2212/2022 , G06F2212/7205 , G06F2212/7211
摘要: A computer program product, according to one embodiment, includes a computer readable storage medium having program instructions embodied therewith. The computer readable storage medium is not a transitory signal per se. Moreover, the program instructions are readable and/or executable by a processor to cause the processor to perform a method which includes: maintaining a first open logical erase block for user writes, and a second open logical erase block for relocate writes. A first data stream having the user writes is received, and transferred to the first open logical erase block. A second data stream having the relocate writes is also received, and transferred to the second open logical erase block. Furthermore, a third data stream is received, and is mixed with the first, second, and/or another data stream in response to determining that an open logical erase block is not available for assignment to the third data stream.
-
175.
公开(公告)号:US10162533B2
公开(公告)日:2018-12-25
申请号:US15458883
申请日:2017-03-14
发明人: Charles J. Camp , Timothy J. Fisher , Aaron D. Fry , Nikolas Ioannou , Ioannis Koltsidas , Roman Pletka , Sasa Tomic
摘要: A computer-implemented method, according to one embodiment, includes: maintaining, by a processor, a first open logical erase block for user writes; maintaining, by the processor, a second open logical erase block for relocate writes; receiving, by the processor, a first data stream having the user writes; transferring, by the processor, the first data stream to the first open logical erase block; receiving, by the processor, a second data stream having the relocate writes; and transferring, by the processor, the second data stream to the second open logical erase block. Moreover, the first and second open logical erase blocks are different logical erase blocks. Other systems, methods, and computer program products are described in additional embodiments.
-
公开(公告)号:US10082962B2
公开(公告)日:2018-09-25
申请号:US15821877
申请日:2017-11-24
发明人: Timothy J. Fisher , Aaron D. Fry , Nikolas Ioannou , Ioannis Koltsidas , Jason Ma , Roman A. Pletka , Lincoln T. Simmons , Sasa Tomic
摘要: In at least one embodiment, a controller of a non-volatile memory array including a plurality of subdivisions stores write data within the non-volatile memory array utilizing a plurality of block stripes of differing numbers of blocks, where all of the blocks within each block stripe are drawn from different ones of the plurality of subdivisions. The controller builds new block stripes for storing write data from blocks selected based on estimated remaining endurances of blocks in each of the plurality of subdivisions.
-
公开(公告)号:US09858289B2
公开(公告)日:2018-01-02
申请号:US14933770
申请日:2015-11-05
发明人: Nikolas Ioannou
IPC分类号: G06F12/10 , G06F17/30 , G06F12/1009 , G06F12/02
CPC分类号: G06F17/30174 , G06F9/30087 , G06F12/0238 , G06F12/0246 , G06F12/1009 , G06F17/30218 , G06F2212/1024 , G06F2212/214 , G06F2212/7201 , G06F2212/7205
摘要: A storage controller for managing a solid-state memory is suggested. The solid-state memory includes a plurality of physical addresses. The storage controller comprises a mapping table for mapping a plurality of logical addresses to the plurality of physical addresses, the mapping table including mapping values, each mapping value defining the mapping of one logical address to one physical address, a processing unit for performing linearizable operations on the mapping values, the processing unit configured to concurrently execute some of the linearizable operations, a synchronization unit for mediating the concurrently executed linearizable operations, the synchronization unit configured to examine a mapping value of the mapping table, compare the examined mapping value with a known mapping value, the known mapping value being the last known value for the examined mapping value, and, if the examined mapping value and the known mapping value are identical, update the examined mapping value with a new mapping value.
-
公开(公告)号:US09857986B2
公开(公告)日:2018-01-02
申请号:US14788022
申请日:2015-06-30
发明人: Timothy J. Fisher , Aaron D. Fry , Nikolas Ioannou , Ioannis Koltsidas , Jason Ma , Roman A. Pletka , Lincoln T. Simmons , Sasa Tomic
CPC分类号: G06F3/061 , G06F3/0655 , G06F3/0688 , G06F12/0246 , G06F2212/7211
摘要: In at least one embodiment, a controller of a non-volatile memory array including a plurality of subdivisions stores write data within the non-volatile memory array utilizing a plurality of block stripes of differing numbers of blocks, where all of the blocks within each block stripe are drawn from different ones of the plurality of subdivisions. The controller builds new block stripes for storing write data from blocks selected based on estimated remaining endurances of blocks in each of the plurality of subdivisions.
-
公开(公告)号:US09760309B2
公开(公告)日:2017-09-12
申请号:US14497887
申请日:2014-09-26
CPC分类号: G06F3/0656 , G06F3/0616 , G06F3/0679 , G06F12/0246 , G06F2212/1016 , G06F2212/1036 , G06F2212/7205
摘要: A method for managing a memory is disclosed, the memory including a set of units and a unit comprising a set of pages, wherein a unit of the set of units is erasable as a whole by a unit reclaiming process resulting in a free unit available for writing data to. The method includes maintaining a first pool of units available for reclamation by the unit reclaiming process; maintaining a second pool of units not available for reclamation by the unit reclaiming process; moving a first unit from the first pool to the second pool in response to invalidating a first one of the pages contained in the first unit; returning the first unit from the second pool to the first pool after a defined number of units of the set have been written; and selecting a unit out of the first pool for reclamation by the unit reclaiming process.
-
公开(公告)号:US09740609B1
公开(公告)日:2017-08-22
申请号:US15047942
申请日:2016-02-19
发明人: Razik S. Ahmed , Timothy J. Fisher , Aaron D. Fry , Nikolas Ioannou , Jason Ma , Matthew R. Orr , Roman A. Pletka , Lincoln T. Simmons , Sasa Tomic
CPC分类号: G06F12/0246 , G06F3/0614 , G06F3/0628 , G06F3/0685 , G06F12/0238 , G06F2212/7205
摘要: A technique for garbage collection in a data storage system includes determining a dirty physical byte count for each of a plurality of candidate garbage collection units. The dirty physical byte count provides a total amount of dirty bytes. At least one of a dirty physical codeword container count and a dirty physical page count is determined for each of the candidate garbage collection units. The dirty physical codeword container count provides an amount of physical codeword containers that are completely dirty and the dirty physical page count provides an amount of physical pages that are completely dirty. A garbage collection unit, included in the candidate garbage collection units, is selected for garbage collection based on the dirty physical byte count and at least one of the dirty physical codeword container count and the dirty physical page count.
-
-
-
-
-
-
-
-
-