Patent Document ID: 7620784
Application ID: 11450015
Patent Status: 1

Claim One:
1. In a computing environment, a method for writing data to a non-volatile memory device, wherein the memory device comprises a plurality of interfaces to a plurality of non-volatile storage devices, the method comprising: determining if a second non-volatile memory device is available; when a second non-volatile memory device is available, communicating with the second non-volatile memory device and coordinating data reading and writing with a controller of the second non-volatile memory device; determining a number of available interfaces from the plurality of interfaces; determining an amount of storage at each of the plurality of non-volatile storage devices which are accessible through the available interfaces; receiving a data transfer request for writing data to a nonvolatile storage device, in which the data to be transferred is not required to match data format requirements of the nonvolatile storage device; receiving data corresponding to the request via a data transfer mechanism; buffering the data as it is received in a high-speed buffer working memory; when the high-speed buffer working memory is full, outputting a busy indication; selecting at least a first of the plurality of interfaces and a second of the plurality of interfaces; performing wear leveling for each of the plurality of non-volatile storage devices; interleaving the data such that blocks of data are written in parallel to a plurality of the non-volatile storage devices; translating the data for writing to the plurality of interfaces, including simultaneously writing one part of the data via one interface and writing another part of the data via at least one other interface; maintaining information in association with the data that tracks to which nonvolatile storage device interface each part of the data was written; upon writing the data to the plurality of storage device interfaces being successful, committing the information in association with the data to an index; persisting the index; and upon successful completion of each of the above acts, returning an indication of success.