×

Systems and methods for storing data in page stripes of a flash drive

  • US 9,176,812 B1
  • Filed: 05/22/2012
  • Issued: 11/03/2015
  • Est. Priority Date: 05/22/2012
  • Status: Active Grant
First Claim
Patent Images

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; and

    a 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; and

    storing 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.

View all claims
  • 5 Assignments
Timeline View
Assignment View
    ×
    ×