Nothing Special   »   [go: up one dir, main page]

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 PDF

Info

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
Application number
US15/942,380
Other versions
US10410730B1 (en
Inventor
Madhu Yashwanth Boenapalli
Surendra Paravada
Sai Praneeth Sreeram
Venu Madhav Mokkapati
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Priority to US15/942,380 priority Critical patent/US10410730B1/en
Assigned to QUALCOMM INCORPORATED reassignment QUALCOMM INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BOENAPALLI, MADHU YASHWANTH, MOKKAPATI, VENU MADHAV, PARAVADA, SURENDRA, SREERAM, SAI PRANEETH
Application granted granted Critical
Publication of US10410730B1 publication Critical patent/US10410730B1/en
Publication of US20190304552A1 publication Critical patent/US20190304552A1/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online 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

An embodiment is directed to an apparatus that comprises a host controller and a flash memory. The host controller monitors a temperature in a first memory block of the flash memory (e.g., based on a reported temperature measurements from the flash memory), and selectively synchronizes 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. For example, an immediate refresh of the first memory block may be performed if there is a pending I/O request for the first memory block, an error rate associated with the first memory block exceeds an error rate threshold and/or the monitored temperature of the first memory block exceeds a temperature threshold; otherwise, a synchronized refresh of the first and second memory blocks may be executed.

Description

    TECHNICAL FIELD
  • Embodiments relate to selectively synchronizing flash memory block refreshes based in part upon memory block temperature.
  • BACKGROUND
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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 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.
  • SUMMARY
  • 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.
  • DETAILED DESCRIPTION
  • 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 a flash memory system 100 in accordance with an embodiment of the disclosure. The flash memory system 100 may be integrated in an electronics device, such as a UE or a server. Referring to FIG. 1, the flash memory system 100 includes a host system 105 including at least one processor 110. The at least one processor 110 includes a host controller 115. The host controller 115 is configured to control a flash memory 120 via a memory bus 122. In an example, the memory bus 122 may be a die-to-die bus. The flash memory 120 includes memory blocks 125, or blocks 1 . . . N. The flash memory 120 further includes an integrated controller 130. In an example, the components depicted in FIG. 1 may be integrated as part of an electronics device, such as the electronics device 1000 which is described in more detail below with respect to FIG. 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 integrated controller 130 without direct involvement by the host controller 115. In the host-driven refresh mode, refreshes are scheduled by the host 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.), 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).
  • 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 the host 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., the host controller 115 during host-driven refresh mode, or the integrated controller 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 to FIG. 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. In FIG. 2, assume that the flash memory system 100 is operating in accordance with a host-driven refresh mode.
  • Referring to FIG. 2, the host controller 115 schedules a block 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, the host controller 115 schedules a block 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 of FIG. 2 is E1+E2+R1+R2+2D1.
  • 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. Referring to FIG. 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 a block 1 refresh (R1), sub-blocks of block 2 (not shown) undergo another pre-configuration time (D2) in association with a block 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 the flash memory system 100.
  • FIG. 4 illustrates a flash memory system 400 in accordance with another embodiment of the disclosure. The flash memory system 400 of FIG. 4 is configured similarly to the flash memory system 100 of FIG. 1, except that the flash memory system 400 further includes temperature sensors 1 . . . N which are configured to monitor temperatures in blocks 1 . . . N, respectively. The flash memory system 400 may be integrated in an electronics device, such as a UE or a server. In an example, the components depicted in FIG. 4 may be integrated as part of an electronics device, such as the electronics device 1000 which is described in more detail below with respect to FIG. 10.
  • Referring to FIG. 4, in an example, the flash memory system 400 may be deployed as a memory component of a larger apparatus that incorporates the flash memory system 400 (i.e., the host controller 105, the flash 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 of FIG. 5A may be performed by the host controller 115 in the flash memory system 400 of FIG. 4.
  • Referring to FIG. 5A, at block 500, the host controller 115 monitors a temperature in a first memory block of the flash memory 120. At block 505, the host 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 the flash memory 120 based in part upon the monitored temperature. As will be described in more detail, the selective synchronization of block 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 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. In an example, the refresh execution procedure of FIG. 5B may be performed by the flash memory 120 in the flash memory system 400 of FIG. 4.
  • Referring to FIG. 5B, at block 500B, the flash memory 120 measures a temperature in a first memory block of the flash memory 120. For example, the temperature measurement of block 500B may be performed by any of temperature sensors 1 . . . N. At block 505B (e.g., as in block 500 of FIG. 5A), the flash memory 120 reports the measured temperature to the host controller 115 (e.g., via memory bus 122). At block 510B (e.g., based on the scheduling at block 505 of FIG. 5A), 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 505B.
  • FIG. 6 illustrates a memory operation sequence in accordance with another embodiment of the disclosure. Referring to FIG. 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. In FIG. 6, assume that the flash memory system 400 is operating in accordance with a host-driven refresh mode.
  • Referring to 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. Under this assumption, the host controller 115 delays a startpoint of a first pre-configuration time (D1) for block 1 so as to be aligned with a startpoint of a second pre-configuration time (D2) for block 2. This merged (or aligned) pre-configuration time is denoted in FIG. 6 as DCOMMON. After DCOMMON, the host controller 115 schedules a block 1 refresh (R1) followed directly by a block 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 of FIG. 6 is E1+E2+E3+R1+R2+D1. Hence, relative to the memory operation sequence of FIG. 2, the memory operation sequence of FIG. 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 of FIG. 4 in accordance with an embodiment of the disclosure. Referring to FIG. 7, sub-blocks 1, 2 and 3 may correspond to block 1 from FIG. 4, and sub-blocks x, y and z may correspond to block 2 from FIG. 4. Conventionally, pre-configuration times of sub-blocks 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 of 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).
  • FIG. 8 illustrates an example implementation of the processes of FIGS. 5A-5B by the flash memory system 400 of FIG. 4 in accordance with an embodiment of the disclosure. In FIG. 8, the flash memory system 400 is operating in accordance with a host-driven refresh mode.
  • Referring to FIG. 8, at block 800, 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.
  • Referring to FIG. 8, at block 805 (e.g., as in block 500 of FIG. 5A or blocks 500B-505B of FIG. 5B), the host controller 115 determines a temperature in block 1 based on feedback from temperature sensor 1. At block 810, the host controller 115 determines whether the temperature in block 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 the host controller 115 determines that the temperature in block 1 is above the temperature threshold at block 810, 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 820.
  • Referring to FIG. 8, at 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.
  • Referring to FIG. 8, at 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.
  • Referring to FIG. 8, at block 830, 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. At block 835, the host controller 115 schedules a common pre-configuration time that is shared by both blocks 1 and 2. After the common pre-configuration time, blocks 1 and 2 perform their respective refreshes at blocks 840-845 (e.g., as in block 510B of FIG. 5B). Blocks 835-845 may correspond to DCOMMON, R1 and R2 from FIG. 6, in an example. Also, blocks 810-835 generally correspond to an example implementation of block 505 of FIG. 5A.
  • FIGS. 9A-9B illustrate another example implementation of the processes of FIGS. 5A-5B in accordance with an embodiment of the disclosure. The process of FIGS. 9A-9B is performed by the host controller 115 while the flash memory system 400 is operating in accordance with a host-driven refresh mode.
  • Referring to FIGS. 9A-9B, at block 900, the host controller 115 reads commands arriving at the host controller 115 from the file system, which are referred to herein as “HC” commands. At block 905, the host controller 115 reads a first target memory block at t1. At block 910, the host controller 115 checks for valid data in a first sub-block of the first target memory block. At block 915, the host controller 115 saves the addresses of valid data in the first sub-block to address ‘a’ in a register. At block 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. At block 925, 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).
  • Referring to FIGS. 9A-9B, at block 930, the host controller 115 determines whether there are any performance votes (denoted as P=1) for the first target memory block. If so, then the host controller 115 does not delay the refresh of the first target memory block, and instead engages a normal or default refresh algorithm at block 935, with a pre-configuration time being implemented at block 940, followed by a refresh of the first target memory block at block 945. Otherwise, the process advances to block 950.
  • Referring to FIGS. 9A-9B, at block 950, the host controller 115 determines whether a temperature in the first target memory block is above a temperature threshold (denoted as T=1). If so, then the host controller 115 does not delay the refresh of the first target memory block, and instead engages a normal or default refresh algorithm at block 935, with a pre-configuration time being implemented at block 940, followed by a refresh of the first target memory block at block 945. Otherwise, the process advances to block 955.
  • Referring to FIGS. 9A-9B, at block 955, 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 t2. During this wait period between t1 and t2, 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. If 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 t2 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.
  • Referring to FIGS. 9A-9B, at block 975, the host 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. At block 980, the addresses a and b in the register are combined. At block 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 at block 990.
  • FIG. 10 illustrates an electronics device 1000 that includes structural components in accordance with an embodiment of the disclosure. In an example, the electronics device 1000 can include the flash memory system 400 of FIG. 4.
  • Referring to FIG. 10, the electronics device 1000 optionally includes transceiver circuitry configured to receive and/or transmit information 1005. In an example, if the electronics 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 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.). In another example, 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.). Thus, if the electronics device 1000 corresponds to some type of network-based server (e.g., an application server), 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. In a further example, 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). However, 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. Moreover, 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. For an example, 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. In another example, 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.
  • Referring to FIG. 10, 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. For example, 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.
  • Referring to FIG. 10, the electronics device 1000 further includes memory configured to store information 1015 (e.g., flash memory 120). In an example, the memory configured to store information 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 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). However, 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.
  • Referring to FIG. 10, the electronics device 1000 further optionally includes user interface output circuitry configured to present information 1020. In an example, the user interface output circuitry configured to present information 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 the electronics device 1000. For example, the user interface output circuitry configured to present information 1020 can include a display. In a further example, 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). However, 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. Moreover, 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. For an example, 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.
  • Referring to FIG. 10, the electronics device 1000 further optionally includes user interface input circuitry configured to receive local user input 1025. In an example, the user interface input circuitry configured to receive local 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 the electronics device 1000. For example, the user interface input circuitry configured to receive local user input 1025 can include buttons, a display (if a touchscreen), etc. In a further example, 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). However, 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. Moreover, 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. For an example, 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.
  • Referring to FIG. 10, while the configured structural components of 1005 through 1025 are shown as separate or distinct blocks in FIG. 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 store information 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 store information 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 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.
  • 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)

What is claimed is:
1. A method of operating a host controller for a flash memory, comprising:
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.
2. The method of claim 1, further comprising:
determining whether there are any pending Input/Output (I/O) requests for the first memory block, wherein the selectively synchronizing is further based upon the determining.
3. The method of claim 2, wherein the selectively synchronizing synchronizes the first refresh of the first memory block with the second refresh of the second memory block if (i) the monitored temperature is less than or equal to a temperature threshold, and (ii) the determining determines that there are no pending I/O requests for the first memory block.
4. The method of claim 3, wherein the selectively synchronizing synchronizes the first refresh of the first memory block with the second refresh of the second memory block by delaying a start point of a pre-configuration time for the first refresh of the first memory block.
5. The method of claim 2, wherein the selectively synchronizing schedules an immediate refresh of the first memory block if the determining determines there is at least one pending I/O request for the first memory block.
6. The method of claim 1, further comprising:
monitoring an error rate of data read from the first memory block,
wherein the selectively synchronizing schedules an immediate refresh of the first memory block if the monitored error rate exceeds an error rate threshold.
7. The method of claim 6, wherein the error rate threshold is based on an error correction code (ECC) protocol used for data being exchanged between the host controller and the flash memory.
8. The method of claim 1, wherein the selectively synchronizing schedules an immediate refresh of the first memory block if the monitored temperature exceeds a temperature threshold.
9. An apparatus, comprising:
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.
10. The apparatus of claim 9,
wherein the host controller is further configured to determine whether there are any pending Input/Output (I/O) requests for the first memory block, and
wherein the host controller is configured to selectively synchronize the first refresh of the first memory block with the second refresh of the second memory block further based upon the determination.
11. The apparatus of claim 10, wherein the host controller is configured to synchronize the first refresh of the first memory block with the second refresh of the second memory block further if (i) the monitored temperature is less than or equal to a temperature threshold, and (ii) the host controller determines that there are no pending I/O requests for the first memory block.
12. The apparatus of claim 11, wherein the host controller is configured to synchronize the first refresh of the first memory block with the second refresh of the second memory block by delaying a start point of a pre-configuration time for the first refresh of the first memory block.
13. The apparatus of claim 10, wherein the host controller is configured to schedule an immediate refresh of the first memory block if the determining determines there is at least one pending I/O request for the first memory block.
14. The apparatus of claim 9,
wherein the host controller is further configured to monitor an error rate of data read from the first memory block, and
wherein the host controller is configured to schedule an immediate refresh of the first memory block if the monitored error rate exceeds an error rate threshold.
15. The apparatus of claim 14, wherein the error rate threshold is based on an error correction code (ECC) protocol used for data being exchanged between the host controller and the flash memory.
16. The apparatus of claim 9, wherein the host controller is configured to schedule an immediate refresh of the first memory block if the monitored temperature exceeds a temperature threshold.
17. The apparatus of claim 9, further comprising the flash memory and the memory bus.
18. The apparatus of claim 17, wherein the apparatus corresponds to one or more of a computing device, a mobile computing device, a vehicle, an augmented reality (AR) system or a virtual reality (VR) system that incorporates the host controller, the flash memory, and the memory bus.
19. A method of operating a host controller for a flash memory, comprising:
measuring a temperature in a first memory block of the flash memory;
reporting the measured temperature of the flash memory to the 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.
20. The method of claim 19, wherein the selectively executing executes the synchronized refreshes of the first and second memory blocks
if (i) the reported temperature is less than or equal to a temperature threshold, and (ii) there are no pending I/O requests for the first memory block.
21. The method of claim 20, wherein the selectively executing executes the unsynchronized refreshes of the first and second memory blocks if there is at least one pending I/O request for the first memory block.
22. The method of claim 20, wherein the selectively executing executes the unsynchronized refreshes of the first and second memory blocks if an error rate of data read from the first memory block exceeds a threshold.
23. The method of claim 22, wherein the error rate threshold is based on an error correction code (ECC) protocol used for data being exchanged between the host controller and the flash memory.
24. The method of claim 19, wherein the selectively executing executes the unsynchronized refreshes of the first and second memory blocks if the monitored temperature exceeds a temperature threshold.
25. An apparatus, comprising:
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.
26. The apparatus of claim 25, wherein the flash memory executes the synchronized refreshes of the first and second memory blocks if (i) the reported temperature is less than or equal to a temperature threshold, and (ii) there are no pending I/O requests for the first memory block.
27. The apparatus of claim 25, wherein the flash memory executes the unsynchronized refreshes of the first and second memory blocks if there is at least one pending I/O request for the first memory block.
28. The apparatus of claim 25, wherein the flash memory executes the unsynchronized refreshes of the first and second memory blocks if an error rate of data read from the first memory block exceeds a threshold.
29. The apparatus of claim 22, wherein the error rate threshold is based on an error correction code (ECC) protocol used for data being exchanged between the host controller and the flash memory.
30. The apparatus of claim 25, wherein the flash memory executes the unsynchronized refreshes of the first and second memory blocks if the monitored temperature exceeds a temperature threshold.
US15/942,380 2018-03-30 2018-03-30 Selectively synchronizing flash memory block refreshes based in part upon memory block temperature Active 2038-05-17 US10410730B1 (en)

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)

* Cited by examiner, † Cited by third party
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 (6)

* Cited by examiner, † Cited by third party
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

Family Cites Families (7)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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
US9160585B2 (en) Data interface synchronization
US11726946B2 (en) I2C bus communication control method, device and system, and readable storage medium
US20160320451A1 (en) Simulation verification method for fpga function modules and system thereof
US20160006526A1 (en) Systems and methods of network clock comparison
TWI719933B (en) Providing memory training of dynamic random access memory (dram) systems using port-to-port loopbacks, and related methods, systems, and apparatuses
US11960350B2 (en) System and method for error reporting and handling
US20180316390A1 (en) Data transmission method and system, mobile terminal, and data device
CN111104246B (en) Method, device, computer equipment and storage medium for improving verification efficiency of error detection and correction of DRAM
CN112398567A (en) Clock synchronization method and device in encryption communication process and multi-device system
CN111338852A (en) Method, system, equipment and medium for creating storage double live volume snapshot
WO2017012460A1 (en) Method and apparatus for detecting failure of random memory, and processor
WO2019218466A1 (en) Application program testing method and apparatus, terminal device, and medium
JP2017508391A (en) Method for matching data and event gap transmitted / received in network using different communication technologies
KR102089629B1 (en) Method for processing data and an electronic device thereof
CN113160726B (en) Power-on self-detection method and power-on self-detection device
US20180034749A1 (en) System and method for distributing and replaying trigger packets via a variable latency bus interconnect
US9298468B2 (en) Monitoring processing time in a shared pipeline
TWI564905B (en) Memory self-testing device and method thereof
US11509411B2 (en) Method and system for correcting clock skew using precision time protocol
US10461804B2 (en) Elimination of crosstalk effects in non-volatile storage
US20240212783A1 (en) Method and system for detecting memory error, and device
EP4456518A1 (en) Physical layer entity and method for managing packet header fields
US20240323209A1 (en) System and method for data retention based on commonalities between data processing systems

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