Patents by Inventor Aaron K. Olbrich

Aaron K. Olbrich has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 9946483
    Abstract: Systems and methods disclosed herein allow for efficiently managing unmapped blocks to extend life of solid-state drives. In one aspect, a method includes: measuring a level of over-provisioning (“OP”) in a storage device and operating it in a first mode of operation while the OP satisfies a first threshold. The method also includes: changing to a second mode of operation if the OP does not satisfy the first threshold. While operating in the second mode of operation, the method includes: (i) determining an unmapped portion of a declared storage capacity of the storage device; and (ii) determining whether processing a write command would reduce the unmapped portion to less than a second threshold. If processing the write command wouldn't reduce the unmapped portion to less than the second threshold, the method includes: accepting and processing the write command. Else, the method includes: forgoing acceptance and processing of the write command.
    Type: Grant
    Filed: May 17, 2016
    Date of Patent: April 17, 2018
    Assignee: SanDisk Technologies LLC
    Inventors: Senthil M. Thangaraj, Divya Reddy, Aaron K. Olbrich
  • Patent number: 9946473
    Abstract: Systems and methods disclosed herein allow for efficiently managing unmapped blocks to extend life of solid-state drives. In one aspect, a method includes: determining a quantity of unmapped storage units in the storage device and operating the storage device in a first mode of operation while the quantity satisfies a first threshold. The method also includes: changing to a second mode of operation if the quantity of unmapped storage units doesn't satisfy the first threshold. While operating in the second mode of operation, the method includes: determining whether processing a write command would reduce the quantity of unmapped storage units to a quantity less than a second threshold. If processing the write command wouldn't reduce the quantity of unmapped storage units to a quantity less than the second threshold, the method includes: accepting and processing the write command. Else, the method includes: forgoing acceptance and processing of the write command.
    Type: Grant
    Filed: May 17, 2016
    Date of Patent: April 17, 2018
    Assignee: SanDisk Technologies LLC
    Inventors: Senthil M. Thangaraj, Divya Reddy, Aaron K. Olbrich
  • Patent number: 9898364
    Abstract: A memory controller configures a plurality of word lines associated with a respective block of a 3D memory device in a first configuration, where the first configuration includes a set of configuration parameters for each word line of the plurality of word lines determined at least in part on the vertical positions of each word line relative to a substrate of the 3D memory device and, while the plurality of word lines are configured in the first configuration, writes data to and reads data from the respective block. For the respective block, the memory controller: adjusts a first parameter in the respective set of configuration parameters corresponding to a respective word line of the plurality of word lines in response to detecting a first trigger condition as to the respective word line and, after adjusting the first parameter, writes data to and reads data from the respective word line.
    Type: Grant
    Filed: November 17, 2014
    Date of Patent: February 20, 2018
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: James M. Higgins, Robert W. Ellis, Neil R. Darragh, Aaron K. Olbrich, Navneeth Kankani, Steven Sprouse
  • Patent number: 9768808
    Abstract: The various implementations described herein include systems, methods and/or devices for modifying an error correction format of a respective memory portion of non-volatile memory in a storage device. In one aspect, the method includes, for respective memory portions of the non-volatile memory, obtaining a performance metric of the respective memory portion, and modifying a current error correction format in accordance with the measured performance metric, the current error correction format corresponding to a code rate, codeword structure, and error correction type. Furthermore, data is stored, and errors are detected and corrected, in the respective memory portion in accordance with the modified error correction format. The current and modified error correction formats are distinct, and comprise two of a sequence of predefined error correction formats, wherein a plurality of the sequence of predefined error correction formats have a same number of error correction bits and different numbers of data bits.
    Type: Grant
    Filed: October 16, 2015
    Date of Patent: September 19, 2017
    Assignee: SanDisk Technologies LLC
    Inventors: Steven T. Sprouse, Aaron K. Olbrich, James Fitzpatrick, Neil R. Darragh
  • Patent number: 9753649
    Abstract: Systems, methods and/or devices are used to enable tracking intermix of writes and un-map commands across power cycles. In one aspect, the method includes (1) receiving, at a storage device, a plurality of commands from a host, the storage device including non-volatile memory, (2) maintaining a log corresponding to write commands and un-map commands from the host, (3) maintaining a mapping table in volatile memory, the mapping table used to translate logical addresses to physical addresses, (4) saving the mapping table, on a scheduled basis that is independent of the un-map commands, to the non-volatile memory of the storage device, (5) saving the log to the non-volatile memory, and (6) upon power up of the storage device, rebuilding the mapping table from the saved mapping table in the non-volatile memory of the storage device and from the saved log in the non-volatile memory of the storage device.
    Type: Grant
    Filed: March 16, 2015
    Date of Patent: September 5, 2017
    Assignee: SanDisk Technologies LLC
    Inventors: Douglas A. Prins, Aaron K. Olbrich, Huapeng Guan, Graeme Weston-Lewis, Anand Kulkarni, Yipei Yu
  • Publication number: 20170160976
    Abstract: Systems and methods disclosed herein allow for efficiently managing unmapped blocks to extend life of solid-state drives. In one aspect, a method includes: measuring a level of over-provisioning (“OP”) in a storage device and operating it in a first mode of operation while the OP satisfies a first threshold. The method also includes: changing to a second mode of operation if the OP does not satisfy the first threshold. While operating in the second mode of operation, the method includes: (i) determining an unmapped portion of a declared storage capacity of the storage device; and (ii) determining whether processing a write command would reduce the unmapped portion to less than a second threshold. If processing the write command wouldn't reduce the unmapped portion to less than the second threshold, the method includes: accepting and processing the write command. Else, the method includes: forgoing acceptance and processing of the write command.
    Type: Application
    Filed: May 17, 2016
    Publication date: June 8, 2017
    Inventors: Senthil M. Thangaraj, Divya Reddy, Aaron K. Olbrich
  • Publication number: 20170160957
    Abstract: Systems and methods disclosed herein allow for efficiently managing unmapped blocks to extend life of solid-state drives. In one aspect, a method includes: determining a quantity of unmapped storage units in the storage device and operating the storage device in a first mode of operation while the quantity satisfies a first threshold. The method also includes: changing to a second mode of operation if the quantity of unmapped storage units doesn't satisfy the first threshold. While operating in the second mode of operation, the method includes: determining whether processing a write command would reduce the quantity of unmapped storage units to a quantity less than a second threshold. If processing the write command wouldn't reduce the quantity of unmapped storage units to a quantity less than the second threshold, the method includes: accepting and processing the write command. Else, the method includes: forgoing acceptance and processing of the write command.
    Type: Application
    Filed: May 17, 2016
    Publication date: June 8, 2017
    Inventors: Senthil M. Thangaraj, Divya Reddy, Aaron K. Olbrich
  • Patent number: 9652175
    Abstract: A memory controller receives a command to perform a memory operation, the command including a data packet comprising a plurality of data divisions. In response to receiving the command, for each individual memory device, the memory controller assigns to the individual memory device a respective data division, the respective data division including a plurality of data segments, and determines a single relative memory address associated with an address specified by the received command. The memory controller assembles a sub-request comprising a single contiguous instruction portion, which includes the single relative memory address and one or more instructions to perform the memory operation, and the respective data division, the respective data division following the single contiguous instruction portion, and transmits the sub-request to every memory portion of the number of memory portions of the individual memory device.
    Type: Grant
    Filed: June 2, 2015
    Date of Patent: May 16, 2017
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Anantharaj Thalaimalai Vanaraj, Sainath Viswasarai, Aaron K. Olbrich
  • Patent number: 9483210
    Abstract: A storage controller is provided that contains multiple processors. In some embodiments, the storage controller is coupled to a flash memory module having multiple flash memory groups, each flash memory group corresponding to a distinct flash port in the storage controller, each flash port comprising an associated processor. Each processor handles a portion of one or more host commands, including reads and writes, allowing multiple parallel pipelines to handle one or more host commands simultaneously.
    Type: Grant
    Filed: October 7, 2015
    Date of Patent: November 1, 2016
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Aaron K. Olbrich, Douglas A. Prins
  • Publication number: 20160299844
    Abstract: The various implementations described herein include systems, methods and/or devices method for reading data stored in a non-volatile storage device having a plurality of physical memory portions having a predefined sequence of physical locations in one or more non-volatile memory devices. In one aspect, the method includes, executing a command for reading a requested logical group of data having a specified logical address, including mapping the logical address to physical locations in the storage device. If the physical locations correspond to two physical memory portions at sequential physical locations, a single sequential read operation is used to read data from the two physical memory portions. If the physical locations correspond to two physical memory portions at non-sequential physical locations, two read operations are used to read data from the two non-sequential physical memory portions.
    Type: Application
    Filed: October 14, 2015
    Publication date: October 13, 2016
    Inventors: Steven T. Sprouse, Aaron K. Olbrich
  • Publication number: 20160301427
    Abstract: The various implementations described herein include systems, methods and/or devices for modifying an error correction format of a respective memory portion of non-volatile memory in a storage device. In one aspect, the method includes, for respective memory portions of the non-volatile memory, obtaining a performance metric of the respective memory portion, and modifying a current error correction format in accordance with the measured performance metric, the current error correction format corresponding to a code rate, codeword structure, and error correction type. Furthermore, data is stored, and errors are detected and corrected, in the respective memory portion in accordance with the modified error correction format. The current and modified error correction formats are distinct, and comprise two of a sequence of predefined error correction formats, wherein a plurality of the sequence of predefined error correction formats have a same number of error correction bits and different numbers of data bits.
    Type: Application
    Filed: October 16, 2015
    Publication date: October 13, 2016
    Inventors: Steven T. Sprouse, Aaron K. Olbrich, James Fitzpatrick, Neil R. Darragh
  • Publication number: 20160299812
    Abstract: The various implementations described herein include systems, methods and/or devices for encoding and decoding data for memory portions of non-volatile memory in a storage device. In one aspect, the method includes, for respective memory portions of the non-volatile memory, in accordance with an error correction format of the respective memory portion: encoding data to produce codewords; storing the codewords in the respective memory portion; and decoding the codewords to produce decoded data. Furthermore, each memory portion of the non-volatile memory has a corresponding error correction format corresponding to a code rate, a codeword structure, and an error correction type, and comprising one of a sequence of predefined error correction formats. A plurality of the predefined error correction formats have a same number of error correction bits and different numbers of data bits, where at least two memory portions have distinct error correction formats.
    Type: Application
    Filed: October 30, 2015
    Publication date: October 13, 2016
    Inventors: Aaron K. Olbrich, Steven T. Sprouse, James Fitzpatrick, Neil R. Darragh
  • Publication number: 20160299699
    Abstract: A memory controller receives a command to perform a memory operation, the command including a data packet comprising a plurality of data divisions. In response to receiving the command, for each individual memory device, the memory controller assigns to the individual memory device a respective data division, the respective data division including a plurality of data segments, and determines a single relative memory address associated with an address specified by the received command. The memory controller assembles a sub-request comprising a single contiguous instruction portion, which includes the single relative memory address and one or more instructions to perform the memory operation, and the respective data division, the respective data division following the single contiguous instruction portion, and transmits the sub-request to every memory portion of the number of memory portions of the individual memory device.
    Type: Application
    Filed: June 2, 2015
    Publication date: October 13, 2016
    Inventors: Anantharaj Thalaimalai Vanaraj, Sainath Viswasarai, Aaron K. Olbrich
  • Patent number: 9448743
    Abstract: A storage controller is provided that contains multiple processors. In some embodiments, the storage controller is coupled to a flash memory module having multiple flash memory groups, each flash memory group corresponding to a distinct flash port in the storage controller, each flash port comprising an associated processor. Each processor handles a portion of one or more host commands, including reads and writes, allowing multiple parallel pipelines to handle one or more host commands simultaneously.
    Type: Grant
    Filed: April 25, 2014
    Date of Patent: September 20, 2016
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Douglas A. Prins, Aaron K. Olbrich
  • Patent number: 9367246
    Abstract: A single command initiates a first read operation and sequence of one or more additional read operations from the same portion of memory. The one or more additional read operations are terminable after the first read operation provides a first plurality of data values that is made available to a requesting device and/or module. In some implementations, the first plurality of data values includes hard information values. Subsequent pluralities of data values are generated from the same portion of memory until a terminating event occurs. In some implementations, until a terminating event occurs, a respective hybrid plurality of data values is generated by combining the latest read plurality of data values with one of a previously generated hybrid plurality of data values and the first plurality of data values. Each hybrid plurality of data values is representative of a corresponding plurality of soft information values.
    Type: Grant
    Filed: August 9, 2013
    Date of Patent: June 14, 2016
    Assignee: SANDISK TECHNOLOGIES INC.
    Inventors: Jack Edward Frayer, Aaron K. Olbrich
  • Publication number: 20160117099
    Abstract: Systems, methods and/or devices are used to enable tracking intermix of writes and un-map commands across power cycles. In one aspect, the method includes (1) receiving, at a storage device, a plurality of commands from a host, the storage device including non-volatile memory, (2) maintaining a log corresponding to write commands and un-map commands from the host, (3) maintaining a mapping table in volatile memory, the mapping table used to translate logical addresses to physical addresses, (4) saving the mapping table, on a scheduled basis that is independent of the un-map commands, to the non-volatile memory of the storage device, (5) saving the log to the non-volatile memory, and (6) upon power up of the storage device, rebuilding the mapping table from the saved mapping table in the non-volatile memory of the storage device and from the saved log in the non-volatile memory of the storage device.
    Type: Application
    Filed: March 16, 2015
    Publication date: April 28, 2016
    Inventors: Douglas A. Prins, Aaron K. Olbrich, Huapeng Guan, Graeme Weston-Lewis, Anand Kulkarni, Yipei Yu
  • Publication number: 20160034227
    Abstract: A storage controller is provided that contains multiple processors. In some embodiments, the storage controller is coupled to a flash memory module having multiple flash memory groups, each flash memory group corresponding to a distinct flash port in the storage controller, each flash port comprising an associated processor. Each processor handles a portion of one or more host commands, including reads and writes, allowing multiple parallel pipelines to handle one or more host commands simultaneously.
    Type: Application
    Filed: October 7, 2015
    Publication date: February 4, 2016
    Inventors: Aaron K. Olbrich, Douglas A. Prins
  • Patent number: 9239783
    Abstract: A storage controller has multiple processors, divided into groups, each of which handles a different stage of a pipelined process of performing host reads and writes. In some embodiments, the storage controller operates with a flash memory module, and includes a first processor group, a second processor group and a third processor group, each having one or more processors for handling a different stage of a pipelined execution of host storage commands. With respect to a first host command, a first processor of the first processor group, a first processor of the second processor group, and a first processor of the third processor group comprise a first pipeline, and with respect to a second host command, a second processor of the first processor group, a second processor of the second processor group, and a second processor of the third processor group comprise a second pipeline.
    Type: Grant
    Filed: May 14, 2013
    Date of Patent: January 19, 2016
    Assignee: SANDISK ENTERPRISE IP LLC
    Inventors: Douglas A. Prins, Aaron K. Olbrich
  • Publication number: 20150347229
    Abstract: A memory controller configures a plurality of word lines associated with a respective block of a 3D memory device in a first configuration, where the first configuration includes a set of configuration parameters for each word line of the plurality of word lines determined at least in part on the vertical positions of each word line relative to a substrate of the 3D memory device and, while the plurality of word lines are configured in the first configuration, writes data to and reads data from the respective block. For the respective block, the memory controller: adjusts a first parameter in the respective set of configuration parameters corresponding to a respective word line of the plurality of word lines in response to detecting a first trigger condition as to the respective word line and, after adjusting the first parameter, writes data to and reads data from the respective word line.
    Type: Application
    Filed: November 17, 2014
    Publication date: December 3, 2015
    Inventors: James M. Higgins, Robert W. Ellis, Neil R. Darragh, Aaron K. Olbrich, Navneeth Kankani, Steven Sprouse
  • Patent number: 9158677
    Abstract: A storage controller is provided that contains multiple processors. In some embodiments, the storage controller is coupled to a flash memory module having multiple flash memory groups, each flash memory group corresponding to a distinct flash port in the storage controller, each flash port comprising an associated processor. Each processor handles a portion of one or more host commands, including reads and writes, allowing multiple parallel pipelines to handle one or more host commands simultaneously.
    Type: Grant
    Filed: May 3, 2013
    Date of Patent: October 13, 2015
    Assignee: SANDISK ENTERPRISE IP LLC
    Inventors: Aaron K. Olbrich, Douglas A. Prins