×

Buffering of data transfers for direct access block devices

  • US 8,316,178 B2
  • Filed: 03/25/2010
  • Issued: 11/20/2012
  • Est. Priority Date: 09/23/2009
  • Status: Active Grant
First Claim
Patent Images

1. A method of transferring, by a media controller, data associated with a host data transfer between a host device and a storage media, the method comprising:

  • by a flash translation layer module of the media controller;

    mapping a physical address in the storage media to a logical sector address, wherein the logical sector address corresponds to mapping data comprising;

    (i) a page index, (ii) a block index, and (iii) a superblock number of the storage media;

    storing the mapping data in at least one summary page corresponding to the superblock containing the physical address;

    storing one or more page offsets of an active block in the superblock in at least one active block table corresponding to the superblock;

    storing a block index and a page index of the at least one summary page and an address of the at least one active block table, for each superblock of the storage device, in a page global directory corresponding to the storage media;

    by a host layer module of the media controller;

    receiving a data request to transfer data between a host device coupled to the media controller and one or more sectors of the storage media, wherein the data request comprises at least one of;

    (i) a starting logical sector address, (ii) a total number of sectors to be accessed, and (iii) data to be written to the sectors;

    identifying for each data transfer segment, based on the starting logical sector address, a corresponding (i) superblock number, (ii) block index and (iii) page index within the storage media; and

    locating, from the page global directory of the storage device the at least one active block table and the summary page corresponding to the superblock number;

    by a buffer layer module of the media controller;

    segmenting the host data transfer into one or more data transfer segments, wherein each data transfer segment corresponds to at least a portion of the data;

    allocating a number of physical buffers to a virtual circular buffer for buffering the one or more data transfer segments; and

    transferring, by the virtual circular buffer, each of the data transfer segments between the host device and the storage media through the allocated physical buffers, by the steps of;

    if the host data transfer is a host write operation;

    (a) identifying, by the flash translation layer module, physical addresses for each data transfer segment based on (i) the at least one active block table of the superblock, if the physical address is in an active block of the superblock, otherwise, (ii) the summary page of the superblock, based on the block index and page index;

    (b) providing, by a host layer module of the media controller, an initial number of data transfer segments to corresponding ones of the allocated physical buffers, the number of data transfer segments equivalent to the number of allocated physical buffers;

    (c) providing, by the buffer layer module, the number of data transfer segments to the storage media; and

    (d) repeating steps (a), (b) and (c) for each subsequent number of data transfer segments that remain.

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