US20190304552A1 - Selectively synchronizing flash memory block refreshes based in part upon memory block temperature - Google Patents
Selectively synchronizing flash memory block refreshes based in part upon memory block temperature Download PDFInfo
- Publication number
- US20190304552A1 US20190304552A1 US15/942,380 US201815942380A US2019304552A1 US 20190304552 A1 US20190304552 A1 US 20190304552A1 US 201815942380 A US201815942380 A US 201815942380A US 2019304552 A1 US2019304552 A1 US 2019304552A1
- Authority
- US
- United States
- Prior art keywords
- memory
- memory block
- refresh
- block
- host controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/04—Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3431—Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
Definitions
- Embodiments relate to selectively synchronizing flash memory block refreshes based in part upon memory block temperature.
- Flash memory is a type of non-volatile memory that retains stored data even when no power is applied to the memory. Over time, data errors may occur in flash memory due to various factors, including aging, temperature fluctuations, charge loss, and so on. Refresh operations are performed on the flash memory to correct these data errors. In flash memory, a refresh operation involves reading all the data from one particular memory block, correcting any errors in the read data, and then rewriting the corrected data (e.g., back into the same memory block or a different memory block).
- bit-flip error is an unintentional state switch (e.g., from 0 to 1, or from 1 to 0) for a particular memory bit.
- bit-flip errors may occur due to manufacturing defects during ionizations, high strain on memory cells caused by read operations, and/or charge loss.
- FIG. 1 illustrates a flash memory system in accordance with an embodiment of the disclosure.
- FIG. 3 illustrates sub-blocks from a memory block of FIG. 1 in accordance with an embodiment of the disclosure.
- FIG. 4 illustrates a flash memory system in accordance with another embodiment of the disclosure.
- FIG. 5A illustrates a refresh scheduling procedure in accordance with an embodiment of the disclosure.
- FIG. 5B illustrates a refresh execution procedure in accordance with an embodiment of the disclosure.
- FIG. 6 illustrates a memory operation sequence in accordance with another embodiment of the disclosure.
- FIG. 7 illustrates sets of sub-blocks from memory blocks of FIG. 4 in accordance with an embodiment of the disclosure.
- FIG. 8 illustrates an example implementation of the process of FIGS. 5A-5B by the flash memory system of FIG. 4 in accordance with an embodiment of the disclosure.
- FIGS. 9A-9B illustrate another example implementation of the process of FIGS. 5A-5B in accordance with an embodiment of the disclosure.
- FIG. 10 illustrates an electronics device that includes structural components in accordance with an embodiment of the disclosure.
- An embodiment is directed to a method of operating a host controller for a flash memory, including monitoring a temperature in a first memory block of the flash memory, and selectively synchronizing a first refresh of the first memory block with a second refresh of a second memory block of the flash memory based in part upon the monitored temperature.
- Another embodiment is directed to an apparatus, including a host controller configured to operate a flash memory via a memory bus, the host controller configured to monitor a temperature in a first memory block of the flash memory, and selectively synchronize a first refresh of the first memory block with a second refresh of a second memory block of the flash memory based in part upon the monitored temperature.
- Another embodiment is directed to a method of operating a host controller for a flash memory, including measuring a temperature in a first memory block of the flash memory, reporting the measured temperature of the flash memory to a host controller via a memory bus, and selectively executing synchronized refreshes of the first memory block and a second memory block of the flash memory based in part upon the reported temperature.
- Another embodiment is directed to an apparatus, including a flash memory configured to communicate with a host controller via a memory bus, the flash memory configured to measure a temperature in a first memory block of the flash memory, report the measured temperature of the flash memory to the host controller via the memory bus, and selectively execute synchronized refreshes of the first memory block and a second memory block of the flash memory based in part upon the reported temperature.
- the flash memory 120 may be configured for operation in accordance with either a self-refresh mode or a host-driven refresh mode.
- a self-refresh mode refreshes are scheduled by the integrated controller 130 without direct involvement by the host controller 115 .
- the host-driven refresh mode refreshes are scheduled by the host controller 115 .
- memory blocks are refreshed at a periodic interval.
- certain triggering events may cause the host controller 115 to perform an immediate refresh of certain memory blocks (i.e., in advance of their next scheduled periodic interval). For example, when an error rate associated with a particular memory block is too high (e.g., above the ECC error rate threshold, etc.), the host controller 115 may schedule an immediate refresh of the memory block.
- the host controller 115 may also schedule an immediate refresh of the memory block based on other factors, such as when a pending input or output (I/O) request is detected for the memory block (e.g., based on detection of performance votes).
- I/O input or output
- the pre-configuration time can be the same for all refresh operations, and may be predetermined by the host controller 115 .
- the pre-configuration time may be used by the host controller 115 to gather information related to the cells undergoing a refresh.
- the information gathered during the pre-configuration time may include parameters such as block-specific temperature feedback, performance votes (e.g., whether an I/O request is pending for a cell in a particular memory block), and so on.
- FIG. 2 illustrates a memory operation sequence in accordance with an embodiment of the disclosure.
- the memory operation sequence is shown relative to a clock signal to emphasize the number of clock cycles that elapse during the memory operation sequence.
- the flash memory system 100 is operating in accordance with a host-driven refresh mode.
- FIG. 3 illustrates sub-blocks 1 , 2 and 3 from block 1 of the memory blocks 125 of FIG. 1 in accordance with an embodiment of the disclosure.
- the pre-configuration time triggers individually for each particular memory block undergoing a refresh.
- sub-blocks 1 - 3 each undergo a pre-configuration time (D 1 ) in association with a block 1 refresh (R 1 )
- sub-blocks of block 2 (not shown) undergo another pre-configuration time (D 2 ) in association with a block 2 refresh (R 2 )
- None of the pre-configuration times for different memory blocks are synchronized, and as such the pre-configuration time for each memory block adds delay to the operation of the flash memory system 100 .
- one manner in which the selective synchronization of block 505 may synchronize the first and second refreshes of the first and second memory blocks is by delaying a startpoint of a first pre-configuration time for the first refresh so as to be aligned with a startpoint of a second pre-configuration time for the second refresh, causing the two pre-configuration times to overlap.
- the overlapped pre-configuration times may be referred to as a common pre-configuration time.
- FIG. 5B illustrates a refresh execution procedure in accordance with an embodiment of the disclosure.
- the refresh execution procedure of FIG. 5B may be performed by the flash memory 120 in the flash memory system 400 of FIG. 4 .
- the flash memory 120 selectively executes synchronized refreshes of the first memory block (e.g., block 1 ) and a second memory block (e.g., block 2 ) of the flash memory 120 based in part upon the reported temperature from block 505 B.
- the first memory block e.g., block 1
- a second memory block e.g., block 2
- FIG. 6 assume that the processes of FIGS. 5A-5B has executed, with the host controller 115 determining to synchronize refreshes of blocks 1 and 2 at block 505 .
- the host controller 115 delays a startpoint of a first pre-configuration time (D 1 ) for block 1 so as to be aligned with a startpoint of a second pre-configuration time (D 2 ) for block 2 .
- This merged (or aligned) pre-configuration time is denoted in FIG. 6 as D COMMON .
- D COMMON the host controller 115 schedules a block 1 refresh (R 1 ) followed directly by a block 2 refresh (R 2 ).
- R 1 and R 2 are performed back-to-back without an intervening pre-configuration time being required.
- an I/O operation is performed on block 1 (E 1 ).
- E 1 an I/O operation is performed on block 2 (E 2 ).
- E 2 an I/O operation is performed on block 3 (E 3 ).
- the memory operation sequence of FIG. 6 is more efficient because an additional I/O operation (E 3 ) is executed by virtue of the time savings from the synchronization of refreshes R 1 -R 2 due to the pre-configuration time overlap (D COMMON ).
- the host controller 115 determines that block 1 is the next memory block for a refresh. Instead of immediately performing the refresh on block 1 , the host controller 115 first evaluates a number of parameters to determine if synchronization of the block 1 refresh with refresh(es) of one or more other memory blocks 125 is possible.
- the host controller 115 determines a temperature in block 1 based on feedback from temperature sensor 1 .
- the host controller 115 determines whether the temperature in block 1 is above a temperature threshold.
- the temperature threshold may be established such that data corruption is expected to occur in memory blocks operating at a temperature that exceeds the temperature threshold.
- the process advances to block 815 , whereby the host controller 115 schedules an immediate refresh of block 1 without attempting to synchronize the block 1 refresh with a refresh of block 2 . Otherwise, the process advances to block 820 .
- the host controller 115 determines whether there are any pending I/O requests for block 1 . For example, the host controller 115 may check with a file system to determine if any performance votes are granted for block 1 as part of the determination of block 820 . If the host controller 115 determines that there are one or more pending I/O requests for block 1 at block 820 , then the process advances to block 815 , whereby the host controller 115 schedules an immediate refresh of block 1 without attempting to synchronize the block 1 refresh with a refresh of block 2 . Otherwise, the process advances to block 825 .
- the host controller 115 determines whether the error rate associated with block 1 is above an error rate threshold (e.g., above an error rate threshold that is established based on an ECC protocol used for data being exchanged between the host controller 115 and the flash memory 120 ). If the host controller 115 determines that the error rate associated with block 1 is above the error rate threshold at block 825 , then the process advances to block 815 , whereby the host controller 115 schedules an immediate refresh of block 1 without attempting to synchronize the block 1 refresh with a refresh of block 2 . Otherwise, the process advances to block 830 .
- an error rate threshold e.g., above an error rate threshold that is established based on an ECC protocol used for data being exchanged between the host controller 115 and the flash memory 120 .
- the host controller 115 delays the block 1 refresh to synchronize the block 1 refresh with a block 2 refresh by extending the startpoint of block 1 's pre-configuration time.
- the host controller 115 schedules a common pre-configuration time that is shared by both blocks 1 and 2 .
- blocks 1 and 2 perform their respective refreshes at blocks 840 - 845 (e.g., as in block 510 B of FIG. 5B ).
- Blocks 835 - 845 may correspond to D COMMON , R 1 and R 2 from FIG. 6 , in an example.
- blocks 810 - 835 generally correspond to an example implementation of block 505 of FIG. 5A .
- the host controller 115 reads commands arriving at the host controller 115 from the file system, which are referred to herein as “HC” commands.
- the host controller 115 reads a first target memory block at t 1 .
- the host controller 115 checks for valid data in a first sub-block of the first target memory block.
- the host controller 115 saves the addresses of valid data in the first sub-block to address ‘a’ in a register.
- the sub-block is incremented, and the process returns to block 915 until the data from each sub-block is read and stored in the register.
- a scheduler at the host controller 115 is loaded.
- the scheduler being loaded at block 925 is a transition point between implemented of a traditional or ‘normal’ refresh algorithm (e.g., an immediate or non-synced refresh of a memory block, as shown at blocks 935 - 945 ) and an ‘enhanced’ refresh algorithm (e.g., an inter-block synced refresh, as shown between blocks 955 - 990 ).
- a traditional or ‘normal’ refresh algorithm e.g., an immediate or non-synced refresh of a memory block, as shown at blocks 935 - 945
- an ‘enhanced’ refresh algorithm e.g., an inter-block synced refresh, as shown between blocks 955 - 990 .
- the host controller 115 determines to execute an ‘enhanced’ refresh algorithm for refreshing the first target memory block. In other words, the host controller 115 determines to delay the refresh of the first target memory block for synchronization with the refresh of another memory block. Accordingly, at block 960 , the host controller 115 waits for a refresh of a second target memory block to be triggered at time t 2 . During this wait period between t 1 and t 2 , the host controller 115 may periodically check with the file system to determine if there are any performance tokens (or performance votes) granted for the first target memory block at block 965 .
- the host controller 115 determines that there are no performance votes for the first target memory block at block 970 , the host controller 115 continues to wait for t 2 without performing a refresh on the first target memory block. Otherwise, if the host controller 115 determines that at least one performance vote is granted for the target first k at block 970 , the host controller 115 performs an immediate refresh on the first target memory block between blocks 935 - 945 .
- the host controller 115 reads the data from each sub-block in the second target memory block at time t 2 , and saves the addresses of valid data to an address ‘b’ in the same register.
- the addresses a and b in the register are combined.
- a common pre-configuration time, or D COMMON is triggered for the first and second target memory blocks, followed by refreshes of the first and second target memory blocks at block 990 .
- FIG. 10 illustrates an electronics device 1000 that includes structural components in accordance with an embodiment of the disclosure.
- the electronics device 1000 can include the flash memory system 400 of FIG. 4 .
- the electronics device 1000 optionally includes transceiver circuitry configured to receive and/or transmit information 1005 .
- the transceiver circuitry configured to receive and/or transmit information 1005 can include a wireless communications interface (e.g., Bluetooth, Wi-Fi, Wi-Fi Direct, Long-Term Evolution (LTE) Direct, etc.) such as a wireless transceiver and associated hardware (e.g., an RF antenna, a MODEM, a modulator and/or demodulator, etc.).
- a wireless communications interface e.g., Bluetooth, Wi-Fi, Wi-Fi Direct, Long-Term Evolution (LTE) Direct, etc.
- LTE Long-Term Evolution
- the transceiver circuitry configured to receive and/or transmit information 1005 can correspond to a wired communications interface (e.g., a serial connection, a USB or Firewire connection, an Ethernet connection through which the Internet can be accessed, etc.).
- a wired communications interface e.g., a serial connection, a USB or Firewire connection, an Ethernet connection through which the Internet can be accessed, etc.
- the transceiver circuitry configured to receive and/or transmit information 1005 can correspond to an Ethernet card, in an example, that connects the network-based server to other communication entities via an Ethernet protocol.
- the transceiver circuitry configured to receive and/or transmit information 1005 can include sensory or measurement hardware by which the electronics device 1000 can monitor its local environment (e.g., an accelerometer, a temperature sensor, a light sensor, an antenna for monitoring local RF signals, etc.).
- the transceiver circuitry configured to receive and/or transmit information 1005 can also include software that, when executed, permits the associated hardware of the transceiver circuitry configured to receive and/or transmit information 1005 to perform its reception and/or transmission function(s).
- the transceiver circuitry configured to receive and/or transmit information 1005 does not correspond to software alone, and the transceiver circuitry configured to receive and/or transmit information 1005 relies at least in part upon structural hardware to achieve its functionality.
- the transceiver circuitry configured to receive and/or transmit information 1005 may be implicated by language other than “receive” and “transmit”, so long as the underlying function corresponds to a receive or transmit function.
- functions such as obtaining, acquiring, retrieving, measuring, etc., may be performed by the transceiver circuitry configured to receive and/or transmit information 1005 in certain contexts as being specific types of receive functions.
- functions such as sending, delivering, conveying, forwarding, etc., may be performed by the transceiver circuitry configured to receive and/or transmit information 1005 in certain contexts as being specific types of transmit functions.
- Other functions that correspond to other types of receive and/or transmit functions may also be performed by the transceiver circuitry configured to receive and/or transmit information 1005 .
- the electronics device 1000 further includes at least one processor configured to process information 1010 (e.g., the host controller 115 )
- Example implementations of the type of processing that can be performed by the at least one processor configured to process information 1010 includes but is not limited to performing determinations, establishing connections, making selections between different information options, performing evaluations related to data, interacting with sensors coupled to the electronics device 1000 to perform measurement operations, converting information from one format to another (e.g., between different protocols such as .wmv to .avi, etc.), and so on.
- the at least one processor configured to process information 1010 can include a general purpose processor, a DSP, an ASIC, a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein.
- a general purpose processor may be a microprocessor, but in the alternative, the at least one processor configured to process information 1010 may be any conventional processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
- the at least one processor configured to process information 1010 can also include software that, when executed, permits the associated hardware of the at least one processor configured to process information 1010 to perform its processing function(s). However, the at least one processor configured to process information 1010 does not correspond to software alone, and the at least one processor configured to process information 1010 relies at least in part upon structural hardware to achieve its functionality. Moreover, the at least one processor configured to process information 1010 may be implicated by language other than “processing”, so long as the underlying function corresponds to a processing function. For an example, functions such as evaluating, determining, calculating, identifying, etc., may be performed by the at least one processor configured to process information 1010 in certain contexts as being specific types of processing functions. Other functions that correspond to other types of processing functions may also be performed by the at least one processor configured to process information 1010 .
- the electronics device 1000 further includes memory configured to store information 1015 (e.g., flash memory 120 ).
- the memory configured to store information 1015 can include at least a non-transitory memory and associated hardware (e.g., a memory controller, etc.).
- the non-transitory memory included in the memory configured to store information 1015 can correspond to RAM, DRAM, flash memory, ROM, erasable programmable ROM (EPROM), EEPROM, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art.
- the memory configured to store information 1015 can also include software that, when executed, permits the associated hardware of the memory configured to store information 1015 to perform its storage function(s).
- the memory configured to store information 1015 does not correspond to software alone, and the memory configured to store information 1015 relies at least in part upon structural hardware to achieve its functionality. Moreover, the memory configured to store information 1015 may be implicated by language other than “storing”, so long as the underlying function corresponds to a storing function. For an example, functions such as caching, maintaining, etc., may be performed by the memory configured to store information 1015 in certain contexts as being specific types of storing functions. Other functions that correspond to other types of storing functions may also be performed by the memory configured to store information 1015 .
- the electronics device 1000 further optionally includes user interface output circuitry configured to present information 1020 .
- the user interface output circuitry configured to present information 1020 can include at least an output device and associated hardware.
- the output device can include a video output device (e.g., a display screen, a port that can carry video information such as USB, HDMI, etc.), an audio output device (e.g., speakers, a port that can carry audio information such as a microphone jack, USB, HDMI, etc.), a vibration device and/or any other device by which information can be formatted for output or actually outputted by a user or operator of the electronics device 1000 .
- the user interface output circuitry configured to present information 1020 can include a display.
- the user interface output circuitry configured to present information 1020 can be omitted for certain communications devices, such as network communications devices that do not have a local user (e.g., network switches or routers, remote servers, etc.).
- the user interface output circuitry configured to present information 1020 can also include software that, when executed, permits the associated hardware of the user interface output circuitry configured to present information 1020 to perform its presentation function(s).
- the user interface output circuitry configured to present information 1020 does not correspond to software alone, and the user interface output circuitry configured to present information 1020 relies at least in part upon structural hardware to achieve its functionality.
- the user interface output circuitry configured to present information 1020 may be implicated by language other than “presenting”, so long as the underlying function corresponds to a presenting function.
- functions such as displaying, outputting, prompting, conveying, etc., may be performed by the user interface output circuitry configured to present information 1020 in certain contexts as being specific types of presenting functions.
- Other functions that correspond to other types of storing functions may also be performed by the user interface output circuitry configured to present information 1020 .
- the electronics device 1000 further optionally includes user interface input circuitry configured to receive local user input 1025 .
- the user interface input circuitry configured to receive local user input 1025 can include at least a user input device and associated hardware.
- the user input device can include buttons, a touchscreen display, a keyboard, a camera, an audio input device (e.g., a microphone or a port that can carry audio information such as a microphone jack, etc.), and/or any other device by which information can be received from a user or operator of the electronics device 1000 .
- the user interface input circuitry configured to receive local user input 1025 can include buttons, a display (if a touchscreen), etc.
- the user interface input circuitry configured to receive local user input 1025 can be omitted for certain communications devices, such as network communications devices that do not have a local user (e.g., network switches or routers, remote servers, etc.).
- the user interface input circuitry configured to receive local user input 1025 can also include software that, when executed, permits the associated hardware of the user interface input circuitry configured to receive local user input 1025 to perform its input reception function(s).
- the user interface input circuitry configured to receive local user input 1025 does not correspond to software alone, and the user interface input circuitry configured to receive local user input 1025 relies at least in part upon structural hardware to achieve its functionality.
- the user interface input circuitry configured to receive local user input 1025 may be implicated by language other than “receiving local user input”, so long as the underlying function corresponds to a receiving local user function.
- functions such as obtaining, receiving, collecting, etc., may be performed by the user interface input circuitry configured to receive local user input 1025 in certain contexts as being specific types of receiving local user functions.
- Other functions that correspond to other types of receiving local user input functions may also be performed by the user interface input circuitry configured to receive local user input 1025 .
- the at least one processor configured to process information 1010 can format data into an appropriate format before being transmitted by the transceiver circuitry configured to receive and/or transmit information 1005 , such that the transceiver circuitry configured to receive and/or transmit information 1005 performs its functionality (i.e., in this case, transmission of data) based in part upon the operation of structural hardware associated with the at least one processor configured to process information 1010 .
- DSP digital signal processor
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- a general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- a software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art.
- An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium.
- the storage medium may be integral to the processor.
- the processor and the storage medium may reside in an ASIC.
- the ASIC may reside in a user terminal (e.g., UE).
- the processor and the storage medium may reside as discrete components in a user terminal.
- the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium.
- Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another.
- a storage media may be any available media that can be accessed by a computer.
- such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer.
- any connection is properly termed a computer-readable medium.
- the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave
- the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium.
- Disk and disc includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
Abstract
Description
- Embodiments relate to selectively synchronizing flash memory block refreshes based in part upon memory block temperature.
- Electronic devices (e.g., cell phones, laptop computers, tablet computers, etc.) may use flash memory to store data. Flash memory is a type of non-volatile memory that retains stored data even when no power is applied to the memory. Over time, data errors may occur in flash memory due to various factors, including aging, temperature fluctuations, charge loss, and so on. Refresh operations are performed on the flash memory to correct these data errors. In flash memory, a refresh operation involves reading all the data from one particular memory block, correcting any errors in the read data, and then rewriting the corrected data (e.g., back into the same memory block or a different memory block).
- One type of data error that may occur in flash memory is a bit-flip error (shown in Table 1, below) is an unintentional state switch (e.g., from 0 to 1, or from 1 to 0) for a particular memory bit. In NAND flash memory, bit-flip errors may occur due to manufacturing defects during ionizations, high strain on memory cells caused by read operations, and/or charge loss.
-
TABLE 1 Bit-Flip Error Example Address Correct Corrupted Location Data Byte Data Byte Remarks 0x0000 0x02 0x00 2nd data bit (from right) is (binary = (binary = flipped from 1 to 0 0000 0010) 0000 0000) 0x0080 0xB4 0x80 3rd, 5th and 6th bits (from (binary = (binary = right) are flipped from 1 to 0 1011 0100) 1000 0000) - Another type of data error that may occur in flash memory is a transmission error, which is an error that occurs in association with the communication of data between the flash memory and a host controller. An error correction code (ECC) process is conventionally used to address transmission errors. The ECC process includes adding redundant data, or parity data, to a message, such that the message can be recovered by a receiver (host controller or flash memory) even when a number of errors (up to a particular error threshold that is based on a capability of the ECC being used) is introduced, either during the process of transmission or on storage.
- A more complete appreciation of embodiments of the disclosure will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, which are presented solely for illustration and not limitation of the disclosure, and in which:
-
FIG. 1 illustrates a flash memory system in accordance with an embodiment of the disclosure. -
FIG. 2 illustrates a memory operation sequence in accordance with an embodiment of the disclosure. -
FIG. 3 illustrates sub-blocks from a memory block ofFIG. 1 in accordance with an embodiment of the disclosure. -
FIG. 4 illustrates a flash memory system in accordance with another embodiment of the disclosure. -
FIG. 5A illustrates a refresh scheduling procedure in accordance with an embodiment of the disclosure. -
FIG. 5B illustrates a refresh execution procedure in accordance with an embodiment of the disclosure. -
FIG. 6 illustrates a memory operation sequence in accordance with another embodiment of the disclosure. -
FIG. 7 illustrates sets of sub-blocks from memory blocks ofFIG. 4 in accordance with an embodiment of the disclosure. -
FIG. 8 illustrates an example implementation of the process ofFIGS. 5A-5B by the flash memory system ofFIG. 4 in accordance with an embodiment of the disclosure. -
FIGS. 9A-9B illustrate another example implementation of the process ofFIGS. 5A-5B in accordance with an embodiment of the disclosure. -
FIG. 10 illustrates an electronics device that includes structural components in accordance with an embodiment of the disclosure. - An embodiment is directed to a method of operating a host controller for a flash memory, including monitoring a temperature in a first memory block of the flash memory, and selectively synchronizing a first refresh of the first memory block with a second refresh of a second memory block of the flash memory based in part upon the monitored temperature.
- Another embodiment is directed to an apparatus, including a host controller configured to operate a flash memory via a memory bus, the host controller configured to monitor a temperature in a first memory block of the flash memory, and selectively synchronize a first refresh of the first memory block with a second refresh of a second memory block of the flash memory based in part upon the monitored temperature.
- Another embodiment is directed to a method of operating a host controller for a flash memory, including measuring a temperature in a first memory block of the flash memory, reporting the measured temperature of the flash memory to a host controller via a memory bus, and selectively executing synchronized refreshes of the first memory block and a second memory block of the flash memory based in part upon the reported temperature.
- Another embodiment is directed to an apparatus, including a flash memory configured to communicate with a host controller via a memory bus, the flash memory configured to measure a temperature in a first memory block of the flash memory, report the measured temperature of the flash memory to the host controller via the memory bus, and selectively execute synchronized refreshes of the first memory block and a second memory block of the flash memory based in part upon the reported temperature.
- The detailed description set forth below, in connection with the appended drawings, is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. Nevertheless, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts. As described herein, the use of the term “and/or” is intended to represent an “inclusive OR”, and the use of the term “or” is intended to represent an “exclusive OR”.
-
FIG. 1 illustrates aflash memory system 100 in accordance with an embodiment of the disclosure. Theflash memory system 100 may be integrated in an electronics device, such as a UE or a server. Referring toFIG. 1 , theflash memory system 100 includes ahost system 105 including at least oneprocessor 110. The at least oneprocessor 110 includes ahost controller 115. Thehost controller 115 is configured to control aflash memory 120 via amemory bus 122. In an example, thememory bus 122 may be a die-to-die bus. Theflash memory 120 includesmemory blocks 125, orblocks 1 . . . N. Theflash memory 120 further includes an integratedcontroller 130. In an example, the components depicted inFIG. 1 may be integrated as part of an electronics device, such as theelectronics device 1000 which is described in more detail below with respect toFIG. 10 . - The
flash memory 120 may be configured for operation in accordance with either a self-refresh mode or a host-driven refresh mode. In the self-refresh mode, refreshes are scheduled by the integratedcontroller 130 without direct involvement by thehost controller 115. In the host-driven refresh mode, refreshes are scheduled by thehost controller 115. - During operation in accordance with the host-driven refresh mode, memory blocks are refreshed at a periodic interval. However, certain triggering events may cause the
host controller 115 to perform an immediate refresh of certain memory blocks (i.e., in advance of their next scheduled periodic interval). For example, when an error rate associated with a particular memory block is too high (e.g., above the ECC error rate threshold, etc.), thehost controller 115 may schedule an immediate refresh of the memory block. Thehost controller 115 may also schedule an immediate refresh of the memory block based on other factors, such as when a pending input or output (I/O) request is detected for the memory block (e.g., based on detection of performance votes). - Before a refresh can be performed on a memory block, a certain pre-configuration time is required for the memory block. In an example, the pre-configuration time can be the same for all refresh operations, and may be predetermined by the
host controller 115. In a further example, the pre-configuration time may be used by thehost controller 115 to gather information related to the cells undergoing a refresh. In embodiments of the disclosure to be described in more detail below, the information gathered during the pre-configuration time may include parameters such as block-specific temperature feedback, performance votes (e.g., whether an I/O request is pending for a cell in a particular memory block), and so on. As used herein, a “memory block” refers to a unit of memory that shares a common pre-configuration time at a respective scheduler (e.g., thehost controller 115 during host-driven refresh mode, or the integratedcontroller 130 during self-refresh mode). For example, in a NAND flash memory, a memory page may correspond to a NAND memory block (e.g., 64 NAND pages together may constitute a NAND memory block in certain NAND flash memory devices). In some applications, the duration of each memory block's pre-configuration time may be the same, although this is not strictly necessary. -
FIG. 2 illustrates a memory operation sequence in accordance with an embodiment of the disclosure. Referring toFIG. 2 , the memory operation sequence is shown relative to a clock signal to emphasize the number of clock cycles that elapse during the memory operation sequence. InFIG. 2 , assume that theflash memory system 100 is operating in accordance with a host-driven refresh mode. - Referring to
FIG. 2 , thehost controller 115 schedules ablock 1 refresh (R1) after a pre-configuration time for block 1 (D1). After R1, an I/O operation is performed on block 1 (E1). After E1, an I/O operation is performed on block 2 (E2). After E2, thehost controller 115 schedules ablock 2 refresh (R2) after a pre-configuration time for block 2 (D2). Assuming that D1=D2, then the total time elapsed during the memory operation sequence ofFIG. 2 is E1+E2+R1+R2+2D1. -
FIG. 3 illustrates 1, 2 and 3 fromsub-blocks block 1 of the memory blocks 125 ofFIG. 1 in accordance with an embodiment of the disclosure. Referring toFIG. 3 , the pre-configuration time triggers individually for each particular memory block undergoing a refresh. Hence, sub-blocks 1-3 each undergo a pre-configuration time (D1) in association with ablock 1 refresh (R1), sub-blocks of block 2 (not shown) undergo another pre-configuration time (D2) in association with ablock 2 refresh (R2), and so on. None of the pre-configuration times for different memory blocks are synchronized, and as such the pre-configuration time for each memory block adds delay to the operation of theflash memory system 100. -
FIG. 4 illustrates aflash memory system 400 in accordance with another embodiment of the disclosure. Theflash memory system 400 ofFIG. 4 is configured similarly to theflash memory system 100 ofFIG. 1 , except that theflash memory system 400 further includestemperature sensors 1 . . . N which are configured to monitor temperatures inblocks 1 . . . N, respectively. Theflash memory system 400 may be integrated in an electronics device, such as a UE or a server. In an example, the components depicted inFIG. 4 may be integrated as part of an electronics device, such as theelectronics device 1000 which is described in more detail below with respect toFIG. 10 . - Referring to
FIG. 4 , in an example, theflash memory system 400 may be deployed as a memory component of a larger apparatus that incorporates the flash memory system 400 (i.e., thehost controller 105, theflash memory 120 and the memory bus 122), including but not limited to a computing device, a mobile computing device, a vehicle, an augmented reality (AR) system, and/or a virtual reality (VR) system. -
FIG. 5A illustrates a refresh scheduling procedure in accordance with an embodiment of the disclosure. In an example, the refresh scheduling procedure ofFIG. 5A may be performed by thehost controller 115 in theflash memory system 400 ofFIG. 4 . - Referring to
FIG. 5A , atblock 500, thehost controller 115 monitors a temperature in a first memory block of theflash memory 120. Atblock 505, thehost controller 115 selectively synchronizes a first refresh of the first memory block (e.g., block 1) with a second refresh of a second memory block (e.g., block 2) of theflash memory 120 based in part upon the monitored temperature. As will be described in more detail, the selective synchronization ofblock 505 may be based on the monitored temperature of the first memory block as well as secondary parameters (e.g., whether there are any pending I/O requests for the first memory block, an error rate of the first memory block, etc.). - Referring to
FIG. 5A , one manner in which the selective synchronization ofblock 505 may synchronize the first and second refreshes of the first and second memory blocks is by delaying a startpoint of a first pre-configuration time for the first refresh so as to be aligned with a startpoint of a second pre-configuration time for the second refresh, causing the two pre-configuration times to overlap. The overlapped pre-configuration times may be referred to as a common pre-configuration time. -
FIG. 5B illustrates a refresh execution procedure in accordance with an embodiment of the disclosure. In an example, the refresh execution procedure ofFIG. 5B may be performed by theflash memory 120 in theflash memory system 400 ofFIG. 4 . - Referring to
FIG. 5B , atblock 500B, theflash memory 120 measures a temperature in a first memory block of theflash memory 120. For example, the temperature measurement ofblock 500B may be performed by any oftemperature sensors 1 . . . N. Atblock 505B (e.g., as inblock 500 ofFIG. 5A ), theflash memory 120 reports the measured temperature to the host controller 115 (e.g., via memory bus 122). Atblock 510B (e.g., based on the scheduling atblock 505 ofFIG. 5A ), theflash memory 120 selectively executes synchronized refreshes of the first memory block (e.g., block 1) and a second memory block (e.g., block 2) of theflash memory 120 based in part upon the reported temperature fromblock 505B. -
FIG. 6 illustrates a memory operation sequence in accordance with another embodiment of the disclosure. Referring toFIG. 6 , the memory operation sequence is shown relative to a clock signal to emphasize the number of clock cycles that elapse during the memory operation sequence. InFIG. 6 , assume that theflash memory system 400 is operating in accordance with a host-driven refresh mode. - Referring to
FIG. 6 , assume that the processes ofFIGS. 5A-5B has executed, with thehost controller 115 determining to synchronize refreshes of 1 and 2 atblocks block 505. Under this assumption, thehost controller 115 delays a startpoint of a first pre-configuration time (D1) forblock 1 so as to be aligned with a startpoint of a second pre-configuration time (D2) forblock 2. This merged (or aligned) pre-configuration time is denoted inFIG. 6 as DCOMMON. After DCOMMON, thehost controller 115 schedules ablock 1 refresh (R1) followed directly by ablock 2 refresh (R2). So, R1 and R2 are performed back-to-back without an intervening pre-configuration time being required. After R2, an I/O operation is performed on block 1 (E1). After E1, an I/O operation is performed on block 2 (E2). After E2, an I/O operation is performed on block 3 (E3). Assuming that D1=D2=DCOMMON, then the total time elapsed during the memory operation sequence ofFIG. 6 is E1+E2+E3+R1+R2+D1. Hence, relative to the memory operation sequence ofFIG. 2 , the memory operation sequence ofFIG. 6 is more efficient because an additional I/O operation (E3) is executed by virtue of the time savings from the synchronization of refreshes R1-R2 due to the pre-configuration time overlap (DCOMMON). -
FIG. 7 illustrates sets of sub-blocks from the memory blocks 125 ofFIG. 4 in accordance with an embodiment of the disclosure. Referring toFIG. 7 , 1, 2 and 3 may correspond to block 1 fromsub-blocks FIG. 4 , and sub-blocks x, y and z may correspond to block 2 fromFIG. 4 . Conventionally, pre-configuration times of 1, 2, 3 and sub-blocks x, y, z would be scheduled separately (e.g., at t1 and t2, respectively). However, in various embodiments of the disclosure, the refreshes ofsub-blocks 1, 2, 3 and sub-blocks x, y, z can be synchronized with each other by sharing a common pre-configuration time (or DCOMMON).blocks -
FIG. 8 illustrates an example implementation of the processes ofFIGS. 5A-5B by theflash memory system 400 ofFIG. 4 in accordance with an embodiment of the disclosure. InFIG. 8 , theflash memory system 400 is operating in accordance with a host-driven refresh mode. - Referring to
FIG. 8 , atblock 800, thehost controller 115 determines thatblock 1 is the next memory block for a refresh. Instead of immediately performing the refresh onblock 1, thehost controller 115 first evaluates a number of parameters to determine if synchronization of theblock 1 refresh with refresh(es) of one or more other memory blocks 125 is possible. - Referring to
FIG. 8 , at block 805 (e.g., as inblock 500 ofFIG. 5A or blocks 500B-505B ofFIG. 5B ), thehost controller 115 determines a temperature inblock 1 based on feedback fromtemperature sensor 1. Atblock 810, thehost controller 115 determines whether the temperature inblock 1 is above a temperature threshold. For example, the temperature threshold may be established such that data corruption is expected to occur in memory blocks operating at a temperature that exceeds the temperature threshold. If thehost controller 115 determines that the temperature inblock 1 is above the temperature threshold atblock 810, then the process advances to block 815, whereby thehost controller 115 schedules an immediate refresh ofblock 1 without attempting to synchronize theblock 1 refresh with a refresh ofblock 2. Otherwise, the process advances to block 820. - Referring to
FIG. 8 , atblock 820, thehost controller 115 determines whether there are any pending I/O requests forblock 1. For example, thehost controller 115 may check with a file system to determine if any performance votes are granted forblock 1 as part of the determination ofblock 820. If thehost controller 115 determines that there are one or more pending I/O requests forblock 1 atblock 820, then the process advances to block 815, whereby thehost controller 115 schedules an immediate refresh ofblock 1 without attempting to synchronize theblock 1 refresh with a refresh ofblock 2. Otherwise, the process advances to block 825. - Referring to
FIG. 8 , atblock 825, thehost controller 115 determines whether the error rate associated withblock 1 is above an error rate threshold (e.g., above an error rate threshold that is established based on an ECC protocol used for data being exchanged between thehost controller 115 and the flash memory 120). If thehost controller 115 determines that the error rate associated withblock 1 is above the error rate threshold atblock 825, then the process advances to block 815, whereby thehost controller 115 schedules an immediate refresh ofblock 1 without attempting to synchronize theblock 1 refresh with a refresh ofblock 2. Otherwise, the process advances to block 830. - Referring to
FIG. 8 , atblock 830, thehost controller 115 delays theblock 1 refresh to synchronize theblock 1 refresh with ablock 2 refresh by extending the startpoint ofblock 1's pre-configuration time. Atblock 835, thehost controller 115 schedules a common pre-configuration time that is shared by both 1 and 2. After the common pre-configuration time, blocks 1 and 2 perform their respective refreshes at blocks 840-845 (e.g., as inblocks block 510B ofFIG. 5B ). Blocks 835-845 may correspond to DCOMMON, R1 and R2 fromFIG. 6 , in an example. Also, blocks 810-835 generally correspond to an example implementation ofblock 505 ofFIG. 5A . -
FIGS. 9A-9B illustrate another example implementation of the processes ofFIGS. 5A-5B in accordance with an embodiment of the disclosure. The process ofFIGS. 9A-9B is performed by thehost controller 115 while theflash memory system 400 is operating in accordance with a host-driven refresh mode. - Referring to
FIGS. 9A-9B , atblock 900, thehost controller 115 reads commands arriving at thehost controller 115 from the file system, which are referred to herein as “HC” commands. Atblock 905, thehost controller 115 reads a first target memory block at t1. Atblock 910, thehost controller 115 checks for valid data in a first sub-block of the first target memory block. Atblock 915, thehost controller 115 saves the addresses of valid data in the first sub-block to address ‘a’ in a register. Atblock 920, the sub-block is incremented, and the process returns to block 915 until the data from each sub-block is read and stored in the register. Atblock 925, a scheduler at thehost controller 115 is loaded. The scheduler being loaded atblock 925 is a transition point between implemented of a traditional or ‘normal’ refresh algorithm (e.g., an immediate or non-synced refresh of a memory block, as shown at blocks 935-945) and an ‘enhanced’ refresh algorithm (e.g., an inter-block synced refresh, as shown between blocks 955-990). - Referring to
FIGS. 9A-9B , atblock 930, thehost controller 115 determines whether there are any performance votes (denoted as P=1) for the first target memory block. If so, then thehost controller 115 does not delay the refresh of the first target memory block, and instead engages a normal or default refresh algorithm atblock 935, with a pre-configuration time being implemented atblock 940, followed by a refresh of the first target memory block atblock 945. Otherwise, the process advances to block 950. - Referring to
FIGS. 9A-9B , atblock 950, thehost controller 115 determines whether a temperature in the first target memory block is above a temperature threshold (denoted as T=1). If so, then thehost controller 115 does not delay the refresh of the first target memory block, and instead engages a normal or default refresh algorithm atblock 935, with a pre-configuration time being implemented atblock 940, followed by a refresh of the first target memory block atblock 945. Otherwise, the process advances to block 955. - Referring to
FIGS. 9A-9B , atblock 955, thehost controller 115 determines to execute an ‘enhanced’ refresh algorithm for refreshing the first target memory block. In other words, thehost controller 115 determines to delay the refresh of the first target memory block for synchronization with the refresh of another memory block. Accordingly, atblock 960, thehost controller 115 waits for a refresh of a second target memory block to be triggered at time t2. During this wait period between t1 and t2, thehost controller 115 may periodically check with the file system to determine if there are any performance tokens (or performance votes) granted for the first target memory block atblock 965. If thehost controller 115 determines that there are no performance votes for the first target memory block atblock 970, thehost controller 115 continues to wait for t2 without performing a refresh on the first target memory block. Otherwise, if thehost controller 115 determines that at least one performance vote is granted for the target first k atblock 970, thehost controller 115 performs an immediate refresh on the first target memory block between blocks 935-945. - Referring to
FIGS. 9A-9B , atblock 975, thehost controller 115 reads the data from each sub-block in the second target memory block at time t2, and saves the addresses of valid data to an address ‘b’ in the same register. Atblock 980, the addresses a and b in the register are combined. Atblock 985, a common pre-configuration time, or DCOMMON, is triggered for the first and second target memory blocks, followed by refreshes of the first and second target memory blocks atblock 990. -
FIG. 10 illustrates anelectronics device 1000 that includes structural components in accordance with an embodiment of the disclosure. In an example, theelectronics device 1000 can include theflash memory system 400 ofFIG. 4 . - Referring to
FIG. 10 , theelectronics device 1000 optionally includes transceiver circuitry configured to receive and/or transmitinformation 1005. In an example, if theelectronics device 1000 corresponds to a wireless communications device (e.g., a user equipment such as a smart phone or tablet computer, a laptop or desktop computer, etc.), the transceiver circuitry configured to receive and/or transmitinformation 1005 can include a wireless communications interface (e.g., Bluetooth, Wi-Fi, Wi-Fi Direct, Long-Term Evolution (LTE) Direct, etc.) such as a wireless transceiver and associated hardware (e.g., an RF antenna, a MODEM, a modulator and/or demodulator, etc.). In another example, the transceiver circuitry configured to receive and/or transmitinformation 1005 can correspond to a wired communications interface (e.g., a serial connection, a USB or Firewire connection, an Ethernet connection through which the Internet can be accessed, etc.). Thus, if theelectronics device 1000 corresponds to some type of network-based server (e.g., an application server), the transceiver circuitry configured to receive and/or transmitinformation 1005 can correspond to an Ethernet card, in an example, that connects the network-based server to other communication entities via an Ethernet protocol. In a further example, the transceiver circuitry configured to receive and/or transmitinformation 1005 can include sensory or measurement hardware by which theelectronics device 1000 can monitor its local environment (e.g., an accelerometer, a temperature sensor, a light sensor, an antenna for monitoring local RF signals, etc.). The transceiver circuitry configured to receive and/or transmitinformation 1005 can also include software that, when executed, permits the associated hardware of the transceiver circuitry configured to receive and/or transmitinformation 1005 to perform its reception and/or transmission function(s). However, the transceiver circuitry configured to receive and/or transmitinformation 1005 does not correspond to software alone, and the transceiver circuitry configured to receive and/or transmitinformation 1005 relies at least in part upon structural hardware to achieve its functionality. Moreover, the transceiver circuitry configured to receive and/or transmitinformation 1005 may be implicated by language other than “receive” and “transmit”, so long as the underlying function corresponds to a receive or transmit function. For an example, functions such as obtaining, acquiring, retrieving, measuring, etc., may be performed by the transceiver circuitry configured to receive and/or transmitinformation 1005 in certain contexts as being specific types of receive functions. In another example, functions such as sending, delivering, conveying, forwarding, etc., may be performed by the transceiver circuitry configured to receive and/or transmitinformation 1005 in certain contexts as being specific types of transmit functions. Other functions that correspond to other types of receive and/or transmit functions may also be performed by the transceiver circuitry configured to receive and/or transmitinformation 1005. - Referring to
FIG. 10 , theelectronics device 1000 further includes at least one processor configured to process information 1010 (e.g., the host controller 115) Example implementations of the type of processing that can be performed by the at least one processor configured to processinformation 1010 includes but is not limited to performing determinations, establishing connections, making selections between different information options, performing evaluations related to data, interacting with sensors coupled to theelectronics device 1000 to perform measurement operations, converting information from one format to another (e.g., between different protocols such as .wmv to .avi, etc.), and so on. For example, the at least one processor configured to processinformation 1010 can include a general purpose processor, a DSP, an ASIC, a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the at least one processor configured to processinformation 1010 may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration). The at least one processor configured to processinformation 1010 can also include software that, when executed, permits the associated hardware of the at least one processor configured to processinformation 1010 to perform its processing function(s). However, the at least one processor configured to processinformation 1010 does not correspond to software alone, and the at least one processor configured to processinformation 1010 relies at least in part upon structural hardware to achieve its functionality. Moreover, the at least one processor configured to processinformation 1010 may be implicated by language other than “processing”, so long as the underlying function corresponds to a processing function. For an example, functions such as evaluating, determining, calculating, identifying, etc., may be performed by the at least one processor configured to processinformation 1010 in certain contexts as being specific types of processing functions. Other functions that correspond to other types of processing functions may also be performed by the at least one processor configured to processinformation 1010. - Referring to
FIG. 10 , theelectronics device 1000 further includes memory configured to store information 1015 (e.g., flash memory 120). In an example, the memory configured to storeinformation 1015 can include at least a non-transitory memory and associated hardware (e.g., a memory controller, etc.). For example, the non-transitory memory included in the memory configured to storeinformation 1015 can correspond to RAM, DRAM, flash memory, ROM, erasable programmable ROM (EPROM), EEPROM, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. The memory configured to storeinformation 1015 can also include software that, when executed, permits the associated hardware of the memory configured to storeinformation 1015 to perform its storage function(s). However, the memory configured to storeinformation 1015 does not correspond to software alone, and the memory configured to storeinformation 1015 relies at least in part upon structural hardware to achieve its functionality. Moreover, the memory configured to storeinformation 1015 may be implicated by language other than “storing”, so long as the underlying function corresponds to a storing function. For an example, functions such as caching, maintaining, etc., may be performed by the memory configured to storeinformation 1015 in certain contexts as being specific types of storing functions. Other functions that correspond to other types of storing functions may also be performed by the memory configured to storeinformation 1015. - Referring to
FIG. 10 , theelectronics device 1000 further optionally includes user interface output circuitry configured to presentinformation 1020. In an example, the user interface output circuitry configured to presentinformation 1020 can include at least an output device and associated hardware. For example, the output device can include a video output device (e.g., a display screen, a port that can carry video information such as USB, HDMI, etc.), an audio output device (e.g., speakers, a port that can carry audio information such as a microphone jack, USB, HDMI, etc.), a vibration device and/or any other device by which information can be formatted for output or actually outputted by a user or operator of theelectronics device 1000. For example, the user interface output circuitry configured to presentinformation 1020 can include a display. In a further example, the user interface output circuitry configured to presentinformation 1020 can be omitted for certain communications devices, such as network communications devices that do not have a local user (e.g., network switches or routers, remote servers, etc.). The user interface output circuitry configured to presentinformation 1020 can also include software that, when executed, permits the associated hardware of the user interface output circuitry configured to presentinformation 1020 to perform its presentation function(s). However, the user interface output circuitry configured to presentinformation 1020 does not correspond to software alone, and the user interface output circuitry configured to presentinformation 1020 relies at least in part upon structural hardware to achieve its functionality. Moreover, the user interface output circuitry configured to presentinformation 1020 may be implicated by language other than “presenting”, so long as the underlying function corresponds to a presenting function. For an example, functions such as displaying, outputting, prompting, conveying, etc., may be performed by the user interface output circuitry configured to presentinformation 1020 in certain contexts as being specific types of presenting functions. Other functions that correspond to other types of storing functions may also be performed by the user interface output circuitry configured to presentinformation 1020. - Referring to
FIG. 10 , theelectronics device 1000 further optionally includes user interface input circuitry configured to receivelocal user input 1025. In an example, the user interface input circuitry configured to receivelocal user input 1025 can include at least a user input device and associated hardware. For example, the user input device can include buttons, a touchscreen display, a keyboard, a camera, an audio input device (e.g., a microphone or a port that can carry audio information such as a microphone jack, etc.), and/or any other device by which information can be received from a user or operator of theelectronics device 1000. For example, the user interface input circuitry configured to receivelocal user input 1025 can include buttons, a display (if a touchscreen), etc. In a further example, the user interface input circuitry configured to receivelocal user input 1025 can be omitted for certain communications devices, such as network communications devices that do not have a local user (e.g., network switches or routers, remote servers, etc.). The user interface input circuitry configured to receivelocal user input 1025 can also include software that, when executed, permits the associated hardware of the user interface input circuitry configured to receivelocal user input 1025 to perform its input reception function(s). However, the user interface input circuitry configured to receivelocal user input 1025 does not correspond to software alone, and the user interface input circuitry configured to receivelocal user input 1025 relies at least in part upon structural hardware to achieve its functionality. Moreover, the user interface input circuitry configured to receivelocal user input 1025 may be implicated by language other than “receiving local user input”, so long as the underlying function corresponds to a receiving local user function. For an example, functions such as obtaining, receiving, collecting, etc., may be performed by the user interface input circuitry configured to receivelocal user input 1025 in certain contexts as being specific types of receiving local user functions. Other functions that correspond to other types of receiving local user input functions may also be performed by the user interface input circuitry configured to receivelocal user input 1025. - Referring to
FIG. 10 , while the configured structural components of 1005 through 1025 are shown as separate or distinct blocks inFIG. 10 that are implicitly coupled to each other via an associated communication bus (not shown expressly), it will be appreciated that the hardware and/or software by which the respective configured structural components of 1005 through 1025 performs their respective functionality can overlap in part. For example, any software used to facilitate the functionality of the configured structural components of 1005 through 1025 can be stored in the non-transitory memory associated with the memory configured to storeinformation 1015, such that the configured structural components of 1005 through 1025 each performs their respective functionality (i.e., in this case, software execution) based in part upon the operation of software stored by the memory configured to storeinformation 1015. Likewise, hardware that is directly associated with one of the configured structural components of 1005 through 1025 can be borrowed or used by other of the configured structural components of 1005 through 1025 from time to time. For example, the at least one processor configured to processinformation 1010 can format data into an appropriate format before being transmitted by the transceiver circuitry configured to receive and/or transmitinformation 1005, such that the transceiver circuitry configured to receive and/or transmitinformation 1005 performs its functionality (i.e., in this case, transmission of data) based in part upon the operation of structural hardware associated with the at least one processor configured to processinformation 1010. - Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
- Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
- The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- The methods, sequences and/or algorithms described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal (e.g., UE). In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.
- In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
- While the foregoing disclosure shows illustrative embodiments of the disclosure, it should be noted that various changes and modifications could be made herein without departing from the scope of the disclosure as defined by the appended claims. The functions, steps and/or actions of the method claims in accordance with the embodiments of the disclosure described herein need not be performed in any particular order. Furthermore, although elements of the disclosure may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated.
Claims (30)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/942,380 US10410730B1 (en) | 2018-03-30 | 2018-03-30 | Selectively synchronizing flash memory block refreshes based in part upon memory block temperature |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/942,380 US10410730B1 (en) | 2018-03-30 | 2018-03-30 | Selectively synchronizing flash memory block refreshes based in part upon memory block temperature |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US10410730B1 US10410730B1 (en) | 2019-09-10 |
| US20190304552A1 true US20190304552A1 (en) | 2019-10-03 |
Family
ID=67845338
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/942,380 Active 2038-05-17 US10410730B1 (en) | 2018-03-30 | 2018-03-30 | Selectively synchronizing flash memory block refreshes based in part upon memory block temperature |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US10410730B1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021096685A1 (en) * | 2019-11-14 | 2021-05-20 | Micron Technology, Inc. | Restoring memory cell threshold voltages |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10572377B1 (en) | 2018-09-19 | 2020-02-25 | Micron Technology, Inc. | Row hammer refresh for content addressable memory devices |
| US10783024B2 (en) * | 2018-10-12 | 2020-09-22 | International Business Machines Corporation | Reducing block calibration overhead using read error triage |
| US11049545B2 (en) | 2019-04-23 | 2021-06-29 | Micron Technology, Inc. | Methods for adjusting row hammer refresh rates and related memory devices and systems |
| US11031066B2 (en) * | 2019-06-24 | 2021-06-08 | Micron Technology, Inc. | Methods for adjusting memory device refresh operations based on memory device temperature, and related memory devices and systems |
| US11670394B2 (en) * | 2021-08-18 | 2023-06-06 | Nxp B.V. | Temperature exposure detection based on memory cell retention error rate |
| TWI773570B (en) * | 2021-10-29 | 2022-08-01 | 鯨鏈科技股份有限公司 | Computer system based on wafer-on-wafer architecture and memory test method |
| US20220254408A1 (en) * | 2022-04-26 | 2022-08-11 | Intel Corporation | Refresh performance optimizations for dram technologies with sub-channel and/or pseudo-channel configurations |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7583551B2 (en) | 2004-03-10 | 2009-09-01 | Micron Technology, Inc. | Power management control and controlling memory refresh operations |
| US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
| US9704557B2 (en) * | 2013-09-25 | 2017-07-11 | Qualcomm Incorporated | Method and apparatus for storing retention time profile information based on retention time and temperature |
| KR102372888B1 (en) | 2015-06-15 | 2022-03-10 | 삼성전자주식회사 | Method for managing data of storage device by temperature |
| KR20170045795A (en) | 2015-10-20 | 2017-04-28 | 삼성전자주식회사 | Memory device and memory system including the same |
| US9640242B1 (en) * | 2015-12-02 | 2017-05-02 | Qualcomm Incorporated | System and method for temperature compensated refresh of dynamic random access memory |
| US9996281B2 (en) | 2016-03-04 | 2018-06-12 | Western Digital Technologies, Inc. | Temperature variation compensation |
-
2018
- 2018-03-30 US US15/942,380 patent/US10410730B1/en active Active
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021096685A1 (en) * | 2019-11-14 | 2021-05-20 | Micron Technology, Inc. | Restoring memory cell threshold voltages |
| CN114651308A (en) * | 2019-11-14 | 2022-06-21 | 美光科技公司 | Restoring memory cell threshold voltages |
| US11508437B2 (en) | 2019-11-14 | 2022-11-22 | Micron Technology, Inc. | Restoring memory cell threshold voltages |
Also Published As
| Publication number | Publication date |
|---|---|
| US10410730B1 (en) | 2019-09-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10410730B1 (en) | Selectively synchronizing flash memory block refreshes based in part upon memory block temperature | |
| US10949296B2 (en) | On-die ECC with error counter and internal address generation | |
| US11726946B2 (en) | I2C bus communication control method, device and system, and readable storage medium | |
| US9160585B2 (en) | Data interface synchronization | |
| TWI719933B (en) | Providing memory training of dynamic random access memory (dram) systems using port-to-port loopbacks, and related methods, systems, and apparatuses | |
| US20160320451A1 (en) | Simulation verification method for fpga function modules and system thereof | |
| US11960350B2 (en) | System and method for error reporting and handling | |
| CN111104246B (en) | Method, device, computer equipment and storage medium for improving verification efficiency of error detection and correction of DRAM | |
| CN115237703A (en) | A baseboard management control chip debugging method, device, device and readable medium | |
| CN117149550A (en) | Solid state disk performance detection method and device and electronic equipment | |
| US20180034749A1 (en) | System and method for distributing and replaying trigger packets via a variable latency bus interconnect | |
| CN106373616B (en) | Method and device for detecting faults of random access memory and network processor | |
| CN101909310A (en) | Electronic device test method | |
| CN113160726B (en) | Power-on self-detection method and power-on self-detection device | |
| WO2019218466A1 (en) | Application program testing method and apparatus, terminal device, and medium | |
| CN115114198B (en) | Signal delay control method, device, equipment and medium | |
| US12387813B2 (en) | Method and system for detecting memory error, and device | |
| CN110764440B (en) | A kind of signal sampling method of memory | |
| US9298468B2 (en) | Monitoring processing time in a shared pipeline | |
| CN117676398A (en) | Multi-channel data alignment method, device, system and storage medium | |
| CN105989896A (en) | Memory self-testing device and method | |
| CN115103289A (en) | Earphone aging monitoring method, device, computer equipment and storage medium | |
| TW201633324A (en) | Memory self-testing device and method thereof | |
| US10461804B2 (en) | Elimination of crosstalk effects in non-volatile storage | |
| US20250004876A1 (en) | Data error correction method and apparatus |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOENAPALLI, MADHU YASHWANTH;PARAVADA, SURENDRA;SREERAM, SAI PRANEETH;AND OTHERS;REEL/FRAME:046001/0178 Effective date: 20180531 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |