发明名称 Systems and methods for storing data in page stripes of a flash drive
摘要 Apparatus and methods provide relatively low uncorrectable bit error rates, low write amplification, long life, fast and efficient retrieval, and efficient storage density such that a solid-state drive (SSD) can be implemented using relatively inexpensive MLC Flash for an enterprise storage application. Data is stored in page stripes. The page stripes can have varying amounts of payload capacity based on selected error correction code strength. Allocation blocks can be divided into journaling cells, correspond to minimum units of data for which a journaling engine or flash translation layer has a logical-to-physical mapping.
申请公布号 US9176812(B1) 申请公布日期 2015.11.03
申请号 US201213477568 申请日期 2012.05.22
申请人 PMC-Sierra, Inc. 发明人 Northcott Philip L.;Geiger Peter Dau;Sadowsky Jonathan
分类号 G06F11/00;G06F11/10 主分类号 G06F11/00
代理机构 Knobbe Martens Olson & Bear LLP 代理人 Knobbe Martens Olson & Bear LLP
主权项 1. A method of storing data to an array of flash memory devices, the method comprising: maintaining one or more lists of page stripes indicating at least which page stripes are available to be programmed, the one or more lists of page stripes associating, for an available page stripe, the following: one or more physical addresses of pages or integer fractions of pages for the page stripe, wherein each page stripe comprises a fixed number of the pages or the integer fractions of the pages; anda gear setting for the page stripe, the gear setting indicating an error correction scheme and corresponding payload size assigned to the page stripe, wherein the gear setting that is assigned to the page stripe is selected from one of a plurality of gear settings, wherein different gear settings of the plurality of gear settings vary in error correction code strength and in payload size, wherein the gear setting is selected to compensate for degradation in the performance of underlying memory cells of the page stripe; maintaining one or more lists associating at least virtual addresses with physical addresses for data stored within the array of flash memory devices, wherein a virtual address is associated with at least one physical address; receiving an allocation block, a virtual address identifying the allocation block, and a request for storage of the allocation block into the array of flash memory devices; determining, based at least partly on the gear assigned to a current page stripe and an amount of data, if any, already assigned to the current page stripe, an extent to which the allocation block can be stored within an available payload of the current page stripe, wherein the current page stripe corresponds to a page stripe selected from the one or more lists of page stripes that are available to be programmed; assigning at least a first subset of the allocation block to the payload of the selected page stripe; storing an association of the virtual address with (a) the physical address of the current page stripe, and with (b) a starting location of the allocation block within the current page stripe; when enough data has been collected to consider the payload of the current page stripe as full: performing or having error correction encoding performed for the data of the payload in accordance with the gear setting associated with the current page stripe;programming the current page stripe to the array;associating the current page stripe with programmed page stripes;selecting a next page stripe from the one or more lists of available page stripes for subsequent programming;if the allocation block had not been fully assigned to the payload of the current page stripe: assigning a remainder of the allocation block to a payload of the next page stripe; andstoring an additional association of the virtual address with the physical address of the next page stripe; wherein the method is performed by an integrated circuit.
地址 Sunnyvale CA US