Abstract:
A storage device includes storage circuitry and multiple memory blocks. The multiple memory blocks are arranged in an array, and each of the memory blocks includes multiple memory cells. A maximal number of programming cycles that a memory block of the multiple memory blocks sustains depends on a distance of the memory block from an edge of the array. The storage circuitry is configured to apply to the memory blocks programming cycles so that a number of programming cycles that can be applied to a respective memory block is based on a respective distance of the respective memory block from the edge of the array.
Abstract:
Disclosed are techniques for managing parity information for data stored on a storage device. A method can be implemented at a computing device communicably coupled to the storage device, and include (1) receiving a request to write data into a data band of the storage device, (2) writing the data into stripes of the data band, comprising, for each stripe of the data band: (i) calculating first parity information for the data written into the stripe, (ii) writing the first parity information into a volatile memory, and (iii) in response to determining that a threshold number of stripes have been written: converting the first parity information into smaller second parity information, and (3) in response to determining that the data band is read-verified: (i) converting the second parity information into smaller third parity information, and (ii) storing the smaller third parity information into a parity band of the storage device.
Abstract:
Methods, systems, apparatus, and computer program products that include, on a first device executing a first instance of a location application, receiving an indication to begin sharing data describing a path traveled by the first device, receiving location data describing the path traveled by the first device, the location data received from a location system of the first device, and the location data including a plurality of locations of the first device, and transmitting the location data in a form usable to enable a user interface of a second instance of a location application executing on a second device to indicate the path traveled by the first device.
Abstract:
A controller includes an interface and a processor. The interface is configured to communicate with a nonvolatile memory including multiple memory cells organized in multiple memory blocks that each includes multiple Word Lines (WLs). The processor is configured to store first data in one or more WLs of a memory block, the first data occupies less than a maximal number of WLs available in the memory block, to calculate redundancy data over the first data and store the redundancy data in a dedicated memory, to program second data to a selected WL of the memory block that was not programmed with the first data, to check a programming status resulting from the programming of the selected WL, and in response to identifying that programming the second data to the selected WL has corrupted at least part of the first data, to recover the first data using the redundancy data.
Abstract:
Methods, systems, apparatus, and computer program products that include, on a first device executing a first instance of a location application, receiving an indication to begin sharing data describing a path traveled by the first device, receiving location data describing the path traveled by the first device, the location data received from a location system of the first device, and the location data including a plurality of locations of the first device, and transmitting the location data in a form usable to enable a user interface of a second instance of a location application executing on a second device to indicate the path traveled by the first device.
Abstract:
A method includes, in a storage device that includes a non-volatile memory and a volatile memory, maintaining at least one data structure that stores management information used for managing data storage in the non-volatile memory, such that at least a portion of the data structure is stored in the volatile memory. A sequence of journaling chunks is created during operation of the storage device, each journaling chunk including a respective slice of the data structure and one or more changes that occurred in the data structure since a previous journaling chunk in the sequence. The sequence of the journaling chunks is stored in the non-volatile memory. Upon recovering from an electrical power interruption in the storage device, the data structure is reconstructed using the stored journaling chunks.
Abstract:
Systems and methods for handling sudden power failures in non-volatile memory devices such as solid state drives are provided by having the non-volatile memory device boot up in a low power write mode, which limits substantially all programming operations to a single level cell (SLC) mode, as opposed to a normal mode in which the programming operations can be performed in a multi-level cell (MLC) mode. Thus, if the system experiences a sudden power failure when it is being powered solely by AC derived power and the battery is below a level sufficient for powering the device while it is programming in the SLC mode, data integrity will be preserved because the programming operation was being performed in SLC mode. The non-volatile memory device may be permitted to exit out the low power write mode into the normal mode when the charge level of the battery is sufficient for powering the system.
Abstract:
Methods, systems, apparatus, and computer program products that include, on a first device executing a first instance of a location application, receiving an indication to begin sharing data describing a path traveled by the first device, receiving location data describing the path traveled by the first device, the location data received from a location system of the first device, and the location data including a plurality of locations of the first device, and transmitting the location data in a form usable to enable a user interface of a second instance of a location application executing on a second device to indicate the path traveled by the first device.
Abstract:
Methods, systems, apparatus, and computer program products that include, on a first device executing a first instance of a location application, receiving an indication to begin sharing data describing a path traveled by the first device, receiving location data describing the path traveled by the first device, the location data received from a location system of the first device, and the location data including a plurality of locations of the first device, and transmitting the location data in a form usable to enable a user interface of a second instance of a location application executing on a second device to indicate the path traveled by the first device.
Abstract:
Methods, systems, apparatus, and computer program products that include, on a first device executing a first instance of a location application, receiving an indication to begin sharing data describing a path traveled by the first device, receiving location data describing the path traveled by the first device, the location data received from a location system of the first device, and the location data including a plurality of locations of the first device, and transmitting the location data in a form usable to enable a user interface of a second instance of a location application executing on a second device to indicate the path traveled by the first device.