Source data verification component
A source data verification component using CRC and ECC validation addresses data corruption in memory systems, ensuring reliable data transfer and storage by validating data integrity in high-interference environments.
Patent Information
- Application Number
- PCT/CN2024/108705
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-07-31
- Publication Date
- 2026-02-05
AI Technical Summary
Existing memory systems face challenges in verifying the integrity of source data during transfer in environments with high levels of interference, leading to potential corruption and inaccurate error correction coding.
Implementing a source data verification component that performs a cyclic redundancy check (CRC) on data before and after transfer, generating a CRC bit value to validate data integrity, and replacing it with an error correction code (ECC) only when verified, ensuring accurate data storage and retrieval.
Ensures reliable data transfer and storage by preventing corrupted data from being stored with ECC, enhancing data integrity in interference-prone environments.
Smart Images

Figure CN2024108705_05022026_PF_FP_ABST
Abstract
Description
SOURCE DATA VERIFICATION COMPONENTTECHNICAL FIELD
[0001] The present disclosure relates generally to semiconductor memory and methods, and more particularly, to apparatuses, systems, and methods for source data verification.BACKGROUND
[0002] Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic systems. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data (e.g., host data, error data, etc. ) and includes random access memory (RAM) , dynamic random-access memory (DRAM) , static random-access memory (SRAM) , synchronous dynamic random-access memory (SDRAM) , and thyristor random access memory (TRAM) , among others. Non-volatile memory can provide persistent data by retaining stored data when not powered and can include NAND flash memory, NOR flash memory, and resistance variable memory such as phase change random access memory (PCRAM) , resistive random-access memory (RRAM) , and magnetoresistive random access memory (MRAM) , such as spin torque transfer random access memory (STT RAM) , among others.
[0003] Flash memory devices can include a charge storage structure, such as is included in floating gate flash devices and charge trap flash (CTF) devices, which may be utilized as non-volatile memory for a wide range of electronic applications. Flash memory devices may use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption.
[0004] Memory cells in an array architecture can be programmed to a target state. For example, electric charge can be placed on or removed from the floating gate of a memory cell to put the cell into one of a number of data states. For example, a single level cell (SLC) can be programmed to one of two data states representing one of two units of data (e.g., 1 or 0) . Multilevel memory cells (MLCs) can be programmed to one of more than two data states. For example, an MLC capable of storing two units of data can be programmed to one of four data states, an MLC capable of storing three units of data can be programmed to one of eight data states, and an MLC capable of storing four units of data can be programmed to one of sixteen data states. MLCs can allow the manufacture of higher density memories without increasing the number of memory cells since each cell can represent more than one unit of data (e.g., more than one bit) . However, MLCs can present difficulties with respect to sensing operations as the ability to distinguish between adjacent data states may deteriorate over time and / or operation.
[0005] In many instances, the processing resources (e.g., processor and / or associated functional unit circuitry) may be external to the memory array, and data is accessed via a bus between the processing resources and the memory array to execute a set of instructions. Processing performance may be improved in a processor-in-memory (PIM) device, in which a processor may be implemented internally and / or near to a memory (e.g., directly on a same chip as the memory array) . A PIM device may save time by reducing and / or eliminating external communications and may also conserve power.BRIEF DESCRIPTION OF THE DRAWINGS
[0006] The present disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the disclosure.
[0007] FIG. 1 illustrates an example electronic system that includes a host, a controller, and a device in accordance with various embodiments of the present disclosure.
[0008] FIG. 2 is a block diagram of an example of a memory status register in accordance with some embodiments of the present disclosure.
[0009] FIG. 3 illustrates an example of a system including a system on chip (SoC) and a memory resource in accordance with some embodiments of the present disclosure.
[0010] FIG. 4 illustrates an example of a system including a system on chip (SoC) and a memory resource in accordance with some embodiments of the present disclosure.
[0011] FIG. 5 illustrates an example method for verifying source data in accordance with some embodiments of the present disclosure.
[0012] FIG. 6 is a flow diagram of another example method for verifying source data in accordance with some embodiments of the present disclosure.
[0013] FIG. 7 is a block diagram of an example computer system in which embodiments of the present disclosure may operate.DETAILED DESCRIPTION
[0014] Aspects of the present disclosure are directed to a source data verification component. The source data verification component can be utilized to verify source data by verifying a cyclic redundancy check (CRC) bit value associated with received source data. When the CRC bit value is verified, an error correction code (ECC) can be generated for the source data. In these embodiments, the ECC can be attached or appended to the source data and / or replace the CRC bit value prior to storing the source data with the ECC. In some embodiments, the source data verification component can add a CRC status bit value to a status register of a memory resource to allow a host, such as a system on chip (SoC) , to verify that the source data was accurately received by the memory resource.
[0015] In previous embodiments, it can be difficult to provide a reliable ECC interface for particular applications with relatively high levels of interference that can cause data to be altered during a data transfer. For example, electrical interference can disrupt or alter the source data during a data transfer between the host and the memory resource. In a specific example, automobiles can have internal interference that can make it difficult for a SoC to transfer data accurately to a memory resource (e.g., flash memory, NAND, etc. ) . In a particular example, the SoC can perform a write operation to the memory resource during a time when there is interference caused by the automobile. The interference can alter the source data during the write operation. In these previous examples, the memory resource can add or program ECC to the source data even when the source data has been corrupted or altered by the interference. In these previous embodiments, the SoC may not be able to verify that the source data was transferred correctly or accurately to the memory resource. In a similar way, the SoC can perform a read operation on stored source data with programmed ECC from the memory resource. The data can be corrupted or altered by the interference and the SoC will read back the corrupted or altered data without confirming that the stored source data is valid.
[0016] In order to address these and other deficiencies of current approaches, embodiments of the present disclosure allow the source data verification component to verify that the source data has not been corrupted by the interference prior to adding the ECC to the source data. The source data verification component can also verify that the source data has not been corrupted by the interference when received at the host. In some embodiments, the source data verification component performs a CRC on the source data to generate a CRC bit value for the source data. The CRC bit value can be utilized to validate the source data after a data transfer between the host (e.g., SoC) and the memory resource. In these embodiments, the CRC bit value can be validated by the memory resource during a write operation and the memory resource can replace the CRC bit value with an ECC when the source data is validated utilizing the CRC bit value. In other embodiments, the memory resource can perform a CRC on stored source data to generate the CRC bit value for the stored source data during a read operation. In these embodiments, the host can validate the CRC bit value prior to reading the received stored data from the memory resource. In this way, the source data can be validated within environments that include relatively high levels of interference, such as, but not limited to automotive environments.
[0017] Although some non-limiting examples herein are generally described in terms of applicability to memory systems and / or to memory devices, embodiments are not so limited, and aspects of the present disclosure can be applied as well to a system-on-a-chip, computing sub-system, data collection and processing, storage, networking, communication, power, artificial intelligence, control, telemetry, sensing and monitoring, digital entertainment and other types of systems / sub-systems and / or devices. Accordingly, aspects of the present disclosure can be applied to these components in order to monitor a device path, as described herein. As used herein, a device path can be a path along which the device receives data and / or provides data. For example, the device path can include an input path and / or an output path.
[0018] FIG. 1 illustrates an example electronic system 100 that includes a host 102, a controller 104, and a device 106 in accordance with various embodiments of the present disclosure.
[0019] The electronic system 100 can be, or can be part of, for example, a desktop computer, laptop computer, televisions, home theater system, gaming console, digital camera, network router and / or switch, printer, scanner, medical device, GPS navigation device, home device (e.g., thermostat, doorbell camera, security camera, smart lock, etc. ) , wearable device, industrial control system (e.g., automated industrial and / or control device) mobile computing device, a vehicle (e.g., airplane, drone, train, automobile, or other conveyance) , Internet of Things (IoT) enabled device, embedded computer (e.g., one included in a vehicle, industrial equipment, or a networked commercial device) , SoC, chipset (e.g., a collection of integrated circuits) , tile, Field-Programmable Gate Array (FPGA) structure (e.g., segmented FPGA structure) , or other such device.
[0020] The electronic system 100 can be, or can include, a computing fabric. As used herein, the term “computing fabric” generally refers to a conveying, multiplexing, network, computing, or communication topology in which components pass data to each other through interconnecting switches, hubs, routers, multiplexers, buses, transmission lines and rings, cables, optical couplers and fibers, electromagnetic devices, or various other means. For example, a “computing fabric” can include various components (e.g., interconnects, crossbars, networks on chip, token rings, etc. ) within a computing, memory, data storage and / or processing, network and / or telecommunication, artificial intelligence, control and / or telemetry, digital entertainment and / or other system, that facilitates in-chip and / or inter-chip communication.
[0021] The electronic system 100 includes a host 102. The host 102 can include a processor chipset and a software stack executed by the processor chipset. For example, the host 102 can be, or can include, a central processing unit (CPU) or a CPU complex that can be configured to execute an operating system.
[0022] The host 102 can be coupled to the controller 104 via a physical and / or logical host interface that operates based on various communication protocols and to provide control, address, data, and other signals to the controller 104 (e.g., to further cause the controller 104 to control the device 106) . Examples of the interface between the host 102 and the controller 104 can include, but not limited to, a bus interface (e.g., a serial advanced technology attachment (SATA) interface, a Serial Attached SCSI (SAS) interface, a Serial Attached SCSI (SAS) interface, a Small Computer System Interface (SCSI) , a peripheral component interconnect express (PCIe) interface, ISA, etc. ) , a memory interface (e.g., a double data rate (DDR) interface, a dual in-line memory module (DIMM) interface, an Open NAND Flash Interface (ONFI) interface, an NVM Express (NVMe) interface) , a Fibre Channel, an UART interface, an I2C interface, a Serial Peripheral Interface (SPI) , an Universal Serial Bus (USB) interface, an ethernet interface, a general-purpose input / output (GIPO) interface, a custom interface, etc.
[0023] The controller 104 is communicatively coupled to one or more electronic devices 106 such that signaling can be exchanged therebetween. Non-limiting examples of the devices 106 can include microcontrollers, microprocessors, digital logic circuits, analog circuits, light emitting diodes (LEDs) , displays, sensors, motors, actuators, audio amplifiers, radio frequency (RF) circuits, test and measurement instruments (e.g., oscilloscopes, multimeters, etc. ) , automotive electronics, medical devices, telecommunication equipment, memory devices (e.g., volatile and / or non-volatile memory devices) , graphics processing units, processors / co-processors, logic blocks, intellectual property (IP) cores, etc. As used herein, a “core” or “IP core” generally refers to one or more blocks of data and / or logic that form constituent components of an application-specific integrated circuit or field-programmable gate array. The circuit portion areas can be designed, built, and / or otherwise configured to perform specific tasks and / or functions within the systems described herein.
[0024] As shown in FIG. 1, the controller 104 can include a processing device (e.g., processor 117) that can execute instructions stored in a local memory 119 to perform various operations described herein. The controller 104 can include various special purpose circuitry in the form of an ASIC, FPGA, state machine, and / or other logic circuitry that can perform operations described herein. As an example, the controller 104 can be a memory controller.
[0025] In various embodiments, one or more constituent components (e.g., host 102, controller 104, device 106, etc. ) of system 100 can be part of a SoC. In one example, a device 106 itself can correspond to an SoC, while the host 102 and the controller 104 are considered “external” to the SoC. In another example, the host 102 or the controller 104, or both, can be considered as a part of an SoC along with the device 106 being internal or external to the SoC. In other examples, the host 102 can correspond to the SOC.
[0026] As shown in FIG. 1, the controller 104 can include a source data verification component 113 (e.g., CRC verification component, etc. ) . The source data verification component 113 can be resident on the controller 104 or in other embodiments, the source data verification component 113 can be resident on the host 102. In specific embodiments, a first source data verification component can be resident on the controller 104 and a second source data verification component can be resident on the host 102. In other embodiments, the source data verification component 113 or a portion of the source data verification component 113 by not be resident on the controller 104. As used herein, the term “resident on” refers to something that is physically located on a particular component. For example, the source data verification component 113 being “resident on” the controller 104, for example, refers to a condition in which the hardware circuitry that comprises the source data verification component 113 is physically located on the controller 104. The term “resident on” may be used interchangeably with other terms such as “deployed on” or “located on, ” herein. In some embodiments, the source data verification component 113 is part of the host 102, an application, or an operating system. Although not shown in FIG. 1 so as to not obfuscate the drawings, the source data verification component 113 can include various circuitry to facilitate aspects of the disclosure described herein. For example, the source data verification component 113 can include various circuitry to perform a CRC on source data to generate a CRC bit value for the source data and / or validate the source data by performing a validation on the received CRC bit value and source data.
[0027] FIG. 2 is a block diagram of an example of a memory status register 220 in accordance with some embodiments of the present disclosure. The memory status register 220 can be utilized by a memory resource (e.g., flash memory, NAND, etc. ) to provide status notifications to a host. For example, the memory status register 220 can be utilized by a NAND memory resource to provide status notifications to a SoC associated with the NAND memory resource.
[0028] In some embodiments, the memory status register 220 is a NAND status register. As used herein, a status register, such as the memory status register 220, refers to a register utilized by a memory device to provide information about the status of various operations and conditions within the memory. A NAND status register can be crucial for monitoring the health and performance of the NAND flash memory, as well as for managing errors and optimizing read / write operations. The memory status register 220 can be readable by a host, such as a SoC associated with the memory resource. In this way, the memory resource can provide information to the host by programing the memory status register 220.
[0029] In some embodiments, the memory status register 220 can store a plurality of designated bits that can be programmed in a particular way to notify the host when the host reads the memory status register 220. For example, the memory status register 220 can include an ECC status (ECC_status) designated bit 222, a program status (P_status) designated bit 223, and / or a CRC status (CRC_status) designated bit 224. In some embodiments, additional or fewer designated bits can be utilized for the memory status register 220.
[0030] The ECC status designated bit 222 can be programmed to identify a status of an ECC device associated with the memory resource. In some embodiments, the ECC device can be hardware of the memory device that performs operations for detect and correct data corruption. For example, the ECC status designated bit 222 can be programmed in a particular way when the ECC device is functioning properly and programmed in a different way when the ECC device is not functioning properly. In this way, the host can read the ECC status designated bit 222 to determine a status of the ECC device of the memory resource.
[0031] The program status designated bit 223 can be programmed to identify a status of a programming device or a status of a particular program associated with the memory resource. For example, the program status designated bit 223 can be programmed in a particular way when the programming device or particular program is functioning properly and programmed in a different way when the programming device or particular program is not functioning properly. In this way, the host can read the program status designated bit 223 to determine whether the programming device or particular program is functioning properly.
[0032] In some previous embodiments, the memory status register 220 does not include the CRC status designated bit 224. These previous embodiments may not utilize a CRC bit value to be provided with the source data during a data transfer between a host and the memory resource. For example, previous embodiments may not program a CRC bit value with the source data prior to sending the source data with the CRC bit value over a data transfer. The CRC status designated bit 224 can be utilized to identify when a received CRC bit value is verified by the memory resource.
[0033] In a specific example of an SoC performing a write operation, the SoC can perform a CRC to generate a CRC bit value for source data to be transferred (e.g., written, etc. ) to a NAND memory resource. The source data with the CRC bit value can be received at the NAND memory resource. The NAND memory resource can verify the CRC bit value. In these embodiments, the NAND memory resource can program a first value to the CRC status designated bit 224 if the CRC bit value is verified and program a second value to the CRC status designated bit 242 if the CRC bit value is not verified. In this specific example, the SoC can read the CRC status designated bit 224 when the data transfer of the source data is completed to confirm the source data was not corrupted by interference during the data transfer. In this way, the SoC can repeat the write operation when the CRC bit value is not verified or refrain from repeating the write operation when the CRC bit value is verified.
[0034] FIG. 3 illustrates an example of a system 330 including SoC 331 and a memory resource 334 in accordance with some embodiments of the present disclosure. The system 330 can illustrate data transfers over a communication path 337 between the SoC 331 and the memory resource 334. In this way, the memory resource 334 is communicatively coupled to the SoC by the communication path 337. In some embodiments, the communication path 337 is a wireless communication path that can be performed by a wireless communication device of the SoC 331 and a wireless communication device of the memory resource 334. In some embodiments, the communication path 337 can be a WiFi communication path, a Bluetooth communication path, a cellular communication path, a near field communication (NFC) path, and / or other type of wireless communication that can be utilized to transfer data between the SoC 331 and the memory resource 334.
[0035] As used herein, the SoC 331 can be an integrated circuit that consolidates various components of a computer or other electronic system onto a single chip. The integration of the various components can enhance performance, reduce power consumption, and / or save space. In some embodiments, the SoC 331 can include components such as a central processing unit (CPU) , graphics processing unit (GPU) , memory, digital signal processor (DSP) , communication interfaces (e.g., Wi-Fi, Bluetooth, NFC, etc. ) , power management, embedded software, and / or other components that can allow the SoC 331 to perform functions on a single chip.
[0036] In some embodiments, the memory resource 334 can be a NAND memory resource or NAND flash memory device. In some embodiments, the memory resource 334 can include a NAND status register 320. In some embodiments, the NAND status register 320 can be the same or similar register as the memory status register 220 as referenced in FIG. 2. For example, the NAND status register 320 can include a plurality of designated status bits that can be utilized as status indicators for the SoC 331 to read and determine the status of the memory resource 334.
[0037] In some embodiments, the system 330 can illustrate a write operation of the SoC 331. As used herein, a write operation by the SoC 331 can be an operation where the SoC 331 attempts to write source data 332-1 to the array of the memory resource by transmitting the source data 332-1 over the communication path 337. In some embodiments, the SoC 331 can identify the source data 332-1 to be written to the memory resource 334. The SoC 331 can perform a CRC utilizing the source data 332-1 to generate a CRC bit value 333-1. In some embodiments, the CRC bit value 333-1 can be added to the source data 332-1 and the source data 332-1 and CRC bit value 333-1 can be sent to the memory resource 334 utilizing the communication path 337.
[0038] In some embodiments, the CRC bit value 333-1 can be generated by performing a CRC on the source data 332-1. The CRC can be performed by hardware and / or software of the SoC 331. The CRC can be performed utilizing a particular CRC method. In some embodiments, the CRC method includes choosing a CRC polynomial, append zeros to the source data 332-1, perform binary division utilizing the polynomial as the divisor and divided by the source data 332-1 with the appended zeros, computing the remainder to be utilized as the CRC checksum, and appending the CRC checksum (e.g., CRC bit value 333-1, etc. ) to the source data 332-1.
[0039] As described herein, the SoC 331 can transmit the source data 332-1 and the CRC bit value 333-1 to the memory resource 334 utilizing the communication path 337. In some embodiments, the memory resource 334 can receive and store the source data 332-2 and CRC bit value 333-2 in a cache register. As used herein, the cache register of the memory resource 334 can refer to a temporary storage area used to hold data during read and write operations. This register can act as a buffer between the memory cells (e.g., memory array, etc. ) and the memory controller.
[0040] In some embodiments, the memory resource 334 can verify the CRC bit value 333-2 utilizing a verification operation. For example, the memory resource 334 can be configured to verify a CRC bit value 333-2 associated with source data 332-2 received from the SoC 331. In some embodiments, the CRC verification operation can be performed by CRC hardware associated with (e.g., resident on the memory resource 334, etc. ) the memory resource 334. That is, the memory resource 334 can be configured to verify the CRC bit value 333-2 by comparing a CRC value 333-2 generated by the memory resource 334 from the received source data 332-2 to the CRC bit value 333-1 generated by the SoC 331.
[0041] In some embodiments, the verification operation can include obtaining the source data 332-2 and the appended CRC bit value 333-2, combining the source data 332-2 with the appended CRC bit value 333-2, treat the combined data as a single binary number, divide the combined number by the generator polynomial used to perform the CRC by the SoC 331. In this example, the source data 332-2 is indicated to be valid or error free when the remainder of the division is zero. In contrast the source data 332-2 is indicated to be invalid or including errors when the remainder is non-zero.
[0042] In some embodiments, the memory resource 334 is configured to generate an ECC 335 for the source data 332-3 when the CRC bit value 333-2 is verified. In some embodiments, the memory resource 334 ignores or remove the CRC bit value 333-2 and append or add ECC 335 to the source data 332-2 and store the source data 332-3 with the appended ECC 335 to the memory array. That is, the memory resource 334 can be configured to replace the CRC bit value 333-2 with the ECC 335 prior to writing the source data 332-3 to an array of the memory resource 334. In these embodiments, the memory resource 334 can program the CRC status designated bit of the NAND status register 320 to indicate that the CRC bit value 333-2 has been validated and / or that the source data 332-2 is error free.
[0043] In other embodiments, the memory resource 334 can identify that the source data 332-2 includes errors and / or is invalid based on the CRC validation. In these embodiments, the memory resource 334 may ignore the source data 332-2 and / or delete the source data 332-2 from the cache register without writing the source data 332-2 to the memory array. In other embodiments, the source data 332-2 is still written to the memory array and the host is notified that the data written to the memory array is data that includes errors. In these embodiments, the memory resource 334 can program the CRC status designated bit of the NAND status register 320 to indicate that the CRC bit value 333-2 is not valid and / or that the source data 332-2 includes errors. That is, the memory resource 334 can be configured to program a CRC status bit of the NAND status register 320 of the memory resource 334 based on a result of verifying the CRC bit value 333-2. For example, the memory resource 334 can be configured to add a fail bit value to the CRC status bit of the NAND status register 320 of the memory resource 334. In this way, the SoC 331 can read the CRC status designated bit from the NAND status register 320 to determine that the source data 332-1 was not transferred correctly and that the source data 332-1 is to be transmitted again (e.g., retrying the data transfer, etc. ) . That is, the CRC status bit of the NAND status register 320 is readable by the SoC 331 to indicate a validity of the source data 332-2 received by the memory resource 334.
[0044] As described herein, the system 330 can be positioned in an area with a relatively high level of possible interference that can affect the source data 332-1 being transferred over the communication path 337. In this way, the CRC bit value can be utilized to ensure that the source data 332-2 received at the memory resource 334 is the same as the source data 332-1 transmitted by the SoC 331. In addition, the system 330 can prevent the memory resource 334 from adding or appending ECC 335 to source data that has not been validated. In previous systems, the memory resource 334 can add ECC 335 to any data that is received without ECC or CRC, which can lead to invalid data being stored at the array of the memory resource 334.
[0045] FIG. 4 illustrates an example of a system 430 including a SoC 431 and a memory resource 434 in accordance with some embodiments of the present disclosure. The system 430 can include the same or similar elements as system 330 as referenced in FIG. 3. However, the system 430 can illustrate a read operation of the SoC 431 from the memory array of the memory resource 434 over the communication path 437. Similarly, the SoC 431 is communicatively coupled to the memory resource 434.
[0046] As described herein, the system 430 can illustrate data transfers over a communication path 437 between the SoC 431 and the memory resource 434. As described herein, the communication path 437 is a wireless communication path that can be performed by a wireless communication device of the SoC 431 and a wireless communication device of the memory resource 434. As described herein, the SoC 431 can be an integrated circuit that consolidates various components of a computer or other electronic system onto a single chip. In addition, the memory resource 434 can be a NAND memory resource or NAND flash memory device. In some embodiments, the memory resource 434 can include a NAND status register 420. In some embodiments, the NAND status register 420 can be the same or similar register as the NAND status register 320 as referenced in FIG. 3, and / or the memory status register 220 as referenced in FIG. 2. For example, the NAND status register 420 can include a plurality of designated status bits that can be utilized as status indicators for the SoC 431 to read and determine the status of the memory resource 434.
[0047] In some embodiments, the system 430 can illustrate a read operation of the SoC 431. As used herein, a read operation by the SoC 331 can be an operation where the SoC 431 attempts to read source data 432-3 from the array of the memory resource 434 by instructing the memory resource 434 to transmit the source data 432-3 over the communication path 437. In some embodiments, the memory resource 434 can validate the source data 432-3, to be transmitted to the SoC 431, using the corresponding ECC 435. After the source data 432-has been corrected and / or validated, the memory resource 434 can perform a CRC utilizing the source data 432-3 to generate a CRC bit value 433-2. In some embodiments, the memory resource 434 can ignore or delete the ECC 435 from the source data 432-3 when performing the CRC to generate the CRC bit value 433-2. In some embodiments, the CRC bit value 433-2 can be added to the source data 432-2 and the source data 432-2 and CRC bit value 333-2 can be sent to the SoC 431 utilizing the communication path 437.
[0048] In some embodiments, the SoC can verify the CRC bit value 433-1 utilizing a verification operation. In some embodiment, the verification operation can include obtaining the source data 432-1 and the appended CRC bit value 433-1, combining the source data 432-1 with the appended CRC bit value 433-1, treat the combined data as a single binary number, divide the combined number by the generator polynomial used to perform the CRC by the memory resource 434. In this example, the source data 432-1 is indicated to be valid or error free when the remainder of the division is zero. In contrast the source data 432-1 is indicated to be invalid or including errors when the remainder is non-zero.
[0049] In some embodiments, the SoC 431 can retry the read operation of the source data 432-3 when the source data 432-1 is indicated to be invalid. As used herein, retrying the read operation can refer to performing an additional read operation or attempting to read the source data 432-3 subsequent to a failed read operation. In other embodiments, the SoC 431 can ignore the CRC bit value 433-1 and utilize the read source data 432-1 when the source data 432-1 is indicated to be valid.
[0050] As described herein, the system 430 can be positioned in an area with a relatively high level of possible interference that can affect the source data 432-2 being transferred over the communication path 437. In this way, the CRC bit value can be utilized to ensure that the source data 432-1 received at the SoC is the same as the source data 432-3 and / or source data 432-2 transmitted by the memory resource 434.
[0051] FIG. 5 illustrates an example method 550 for verifying source data in accordance with some embodiments of the present disclosure. The method 550 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc. ) , software (e.g., instructions run or executed on a processing device) , or a combination thereof. In some embodiments, the method 550 is performed by the source data verification component 113 of FIG. 1. Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated embodiments should be understood only as examples, and the illustrated processes can be performed in a different order, and some processes can be performed in parallel. Additionally, one or more processes can be omitted in various embodiments. Thus, not all processes are required in every embodiment. Other process flows are possible.
[0052] The method 550 can be executed at step 551 to perform, by a SoC, a CRC operation on source data to be transferred to a memory resource. The CRC operation can be a method that can utilize a CRC polynomial (e.g., generator polynomial, etc. ) that is represented in binary to detect errors in source data.
[0053] The method 550 can be executed at step 552 to add, by the SoC, a CRC bit value to the source data. As described herein, the CRC operation can be utilized to generate a CRC bit value that can be appended to the source data prior to transferring the source data. As described herein, adding or appending the CRC bit value can include appending the CRC checksum from binary division performed utilizing the CRC polynomial and the source data.
[0054] The method 550 can be executed at step 553 to send, by the SoC, the source data with the CRC bit value to the memory resource. Once the CRC bit value is added or appended to the source data, the combination can be sent to the memory resource. As described herein, the CRC bit value and source data can be sent to the memory resource over a wireless connection. In these embodiments, the wireless connection can be negatively affected by different types of interference (e.g., electrical, radiation, etc. ) . This interference can disrupt or alter the source data, such that the source data is corrupted during the data transfer over the wireless connection.
[0055] The method 550 can be executed at step 554 to store, by the memory resource, the source data and the CRC bit value received from the SoC. In some embodiments, the memory resource can store the source data and the CRC bit value at a cache register of the memory resource. In this way, the source data and CRC bit value can be stored in temporary memory of the memory resource and not stored within the array of the memory resource.
[0056] The method 550 can be executed at step 555 to perform, by the memory resource, a verification operation of the CRC bit value. As described herein, the verification operation can be performed by hardware of the memory resource. In some embodiments, the verification operation includes obtaining the source data and CRC bit value appended to the source data. In these embodiments, the CRC bit value can be combined with the source data to generate a single binary number and divide the single binary number by the same CRC polynomial utilized to generate the CRC bit value. In these embodiments, if the remainder is zero the data is validated and if the remainder is not zero, the data is not validated.
[0057] The method 550 can be executed at step 556 to replace, by the memory resource, the CRC bit value with an error correction code (ECC) . As described herein, the memory resource can ignore the CRC bit value and generate an ECC for the source data in response to the source data being validated by the verification operation. In this way, the ECC can be utilized to ensure the integrity of the data is maintained when the source data is stored in the array of the memory resource.
[0058] The method 550 can be executed at step 557 to store, by the memory resource, the source data and the ECC to a memory array of the memory resource. As described herein, the source data and the ECC can be stored to the memory array of the memory resource with the ECC to ensure the integrity of the source data is maintained when stored in the memory array. As used herein, the ECC can be utilized to detect and correct errors in data. ECC ensures the integrity and reliability of data by identifying and correcting bit errors that occur during data transmission or storage. Different types of ECC can be utilized including, but not limited to Hamming Code, Reed-Solomon Code, Bose-Chaudhuri-Hocquenghem code, and / or Turbo code.
[0059] In some embodiments, the method 550 can be executed to write, by the memory resource, a CRC status bit value to a status register of the memory resource. As described herein, the memory resource can write a CRC status bit value to the status register to indicate whether the source code is valid or invalid.
[0060] In some embodiments, the method 550 can be executed to read, by the SoC, the CRC status bit value of the status register to verify an accuracy of the source data sent to the memory resource. As described herein, the SoC can have access to read the status register (e.g., NAND status register, memory status register, etc. ) of the memory resource to determine a validity of the source data transmitted by the SoC to the memory resource. In this way, the SoC can confirm that the source data was not corrupted or altered by the interference associated with the wireless communication.
[0061] In some embodiments, the method 550 can be executed to resend, by the SoC, the source data with the CRC bit value to the memory resource when the CRC status bit value is a failure value. In some embodiments, resending the source data can include executing a subsequent write operation of the source data to the memory resource. In these embodiments, the SoC is able to determine when the source data has been successfully transmitted to the memory resource over the wireless communication path and when the source data was not successfully transmitted to the memory resource.
[0062] FIG. 6 is a flow diagram of another example method 660 for verifying source data in accordance with some embodiments of the present disclosure. The method 660 can be performed by processing logic that can include hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc. ) , software (e.g., instructions run or executed on a processing device) , or a combination thereof. In some embodiments, the method 460 is performed by the source data verification component 113 of FIG. 1. Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated embodiments should be understood only as examples, and the illustrated processes can be performed in a different order, and some processes can be performed in parallel. Additionally, one or more processes can be omitted in various embodiments. Thus, not all processes are required in every embodiment. Other process flows are possible.
[0063] The method 660 can be executed at step 661 to perform, by the SoC, a read operation of stored source data associated with the memory array of the memory resource. As described herein, the SoC can execute a read operation of source data that is stored in the memory array of the memory resource. That is, the stored source data is data that has been stored by the memory array of the memory resource.
[0064] The method 660 can be executed at step 662 to perform, by the memory resource, a CRC operation on the stored source data. As described herein, the memory resource can ignore the ECC when performing the CRC operation on the stored source data. In this way, the ECC can be removed from the stored source data and the memory resource can perform the CRC operation to generate a CRC bit value.
[0065] The method 660 can be executed at step 663 to replace, by the memory resource, an ECC of the stored source data with a CRC bit value based on the CRC operation. As described herein, the CRC bit value can be appended to the stored source data prior to transmitting the source data to the SoC.
[0066] The method 660 can be executed at step 664 to receive, by the SoC, the stored source data and CRC bit value from the memory resource. As described herein, the stored source data and the appended CRC bit value can be transmitted by a wireless communication path that can have a relatively high quantity of interference, which could cause the source data to be corrupted.
[0067] The method 660 can be executed at step 665 to perform, by the SoC, a verification operation of the CRC bit value associated with the stored source data. As described herein, the verification operation can be the same or similar verification operation as preformed by the memory resource. For example, the stored source data and CRC bit value can be combined as a single binary value and the single binary value can be divided by the same CRC polynomial utilized to generate the CRC bit value from the source data.
[0068] FIG. 7 is a block diagram of an example computer system 790 in which embodiments of the present disclosure may operate. For example, FIG. 7 illustrates an example machine of a computer system 790 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed. In some embodiments, the computer system 790 can correspond to a host system (e.g., the host 102 of FIG. 1) that includes, is coupled to, or utilizes a memory system or can be used to perform the operations of a controller (e.g., to execute an operating system to perform operations corresponding to the source data verification component 113 of FIG. 1) . In alternative embodiments, the machine can be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and / or the Internet. The machine can operate in the capacity of a server or a client machine in client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.
[0069] The machine can be a personal computer (PC) , a tablet PC, a set-top box (STB) , a Personal Digital Assistant (PDA) , a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
[0070] The example computer system 790 includes a processing device 791, a main memory 793 (e.g., read-only memory (ROM) , flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM) , etc. ) , a static memory 797 (e.g., flash memory, static random access memory (SRAM) , etc. ) , and a data storage system 798, which communicate with each other via a bus 796.
[0071] The processing device 791 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device can be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets. The processing device 791 can also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC) , a field programmable gate array (FPGA) , a digital signal processor (DSP) , network processor, or the like. The processing device 791 is configured to execute instructions 792 for performing the operations and steps discussed herein. The computer system 790 can further include a network interface device 794 to communicate over the network 795.
[0072] The data storage system 798 can include a machine-readable storage medium 799 (also known as a computer-readable medium) on which is stored one or more sets of instructions 792 or software embodying any one or more of the methodologies or functions described herein. The instructions 792 can also reside, completely or at least partially, within the main memory 793 and / or within the processing device 791 during execution thereof by the computer system 790, the main memory 793 and the processing device 791 also constituting machine-readable storage media. The machine-readable storage medium 799, data storage system 798, and / or main memory 93 can correspond to the system 330 of FIG. 3 and / or system 430 of FIG. 4.
[0073] In one embodiment, the instructions 792 include instructions to implement functionality corresponding to syndrome calculation circuitry (e.g., the source data verification component 113 of FIG. 1) . While the machine-readable storage medium 799 is shown in an example embodiment to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
[0074] Some portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0075] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. The present disclosure can refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage systems.
[0076] The present disclosure also relates to an apparatus for performing the operations herein. This apparatus can be specially constructed for the intended purposes, or it can include a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program can be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs) , random access memories (RAMs) , EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
[0077] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems can be used with programs in accordance with the teachings herein, or it can prove convenient to construct a more specialized apparatus to perform the method. The structure for a variety of these systems will appear as set forth in the description below. In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages can be used to implement the teachings of the disclosure as described herein.
[0078] The present disclosure can be provided as a computer program product, or software, that can include a machine-readable medium having stored thereon instructions, which can be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer) . In some embodiments, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory ( “ROM” ) , random access memory ( “RAM” ) , magnetic disk storage media, optical storage media, flash memory devices, etc.
[0079] In the foregoing specification, embodiments of the disclosure have been described with reference to specific example embodiments thereof. It will be evident that various modifications can be made thereto without departing from the broader spirit and scope of embodiments of the disclosure as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
Claims
1.An apparatus, comprising:a memory resource communicatively coupled to a system on chip (SoC) , the memory resource configured to:verify a cyclic redundancy check (CRC) bit value associated with source data received from the SoC;generate an error correction code (ECC) for the source data when the CRC bit value is verified; andprogram a CRC status bit of a status register of the memory resource based on a result of verifying the CRC bit value.2.The apparatus of claim 1, wherein the memory resource is further configured to store the source data with the CRC bit value to a cache register of the memory resource.3.The apparatus of claim 2, wherein the memory resource is further configured to write the source data with the ECC to an array of the memory resource.4.The apparatus of claim 1, wherein the memory resource is further configured to replace the CRC bit value with the ECC prior to writing the source data to an array of the memory resource.5.The apparatus of claim 1, wherein the memory resource is further configured to verify the CRC bit value by comparing a CRC value generated by the memory resource from the received source data to the CRC bit value generated by the SoC.6.The apparatus of claim 1, wherein the memory resource is further configured to add a fail bit value to the CRC status bit of the status register of the memory resource.7.The apparatus of claim 6, wherein the CRC status bit of the status register is readable by the SoC to indicate a validity of the source data received by the memory resource.8.An apparatus, comprising:a system on chip (SoC) communicatively coupled to a memory resource, the SoC configured to:perform a cyclic redundancy check (CRC) for source data to be transferred to the memory resource;add a CRC bit value to the source data based on the performed CRC;transfer the source data with the CRC bit value to the memory resource as part of a write operation; andread a CRC status bit of a status register of the memory resource to determine a validity of the source data received at the memory resource.9.The apparatus of claim 8, wherein the SoC is further configured to repeat the write operation for the source data in response reading a fail bit at the status register of the memory resource.10.The apparatus of claim 9, wherein the write operation includes sending a subsequent write operation for the source data with an added CRC bit value based on an additional CRC.11.The apparatus of claim 8, wherein the CRC bit value is replaceable with an error correction code (ECC) at the memory resource.12.The apparatus of claim 8, wherein the SoC is further configured to read stored source data from the memory resource, wherein the stored source data includes a received CRC bit value generated by the memory resource.13.The apparatus of claim 12, wherein the SoC is further configured to perform a verification of the received CRC bit value generated by the memory resource by comparing the received CRC bit value to a CRC result of the stored source data received from the memory resource.14.The apparatus of claim 13, wherein the SoC is further configured to ignore the CRC result when the CRC bit value passes the verification.15.The apparatus of claim 13, wherein the SoC is further configured to ignore the stored source data and repeat a read operation of the stored source data when the CRC bit value fails the verification.16.A method, comprising:performing, by a system on chip (SoC) , a cyclic redundancy check (CRC) operation on source data to be transferred to a memory resource to generate a CRC bit value;adding, by the SoC, the CRC bit value to the source data;sending, by the SoC, the source data with the CRC bit value to the memory resource;storing, by the memory resource, the source data and the CRC bit value received from the SoC;performing, by the memory resource, a verification operation of the CRC bit value;replacing, by the memory resource, the CRC bit value with an error correction code (ECC) ; andstoring, by the memory resource, the source data and the ECC to a memory array of the memory resource.17.The method of claim 16, further comprising:performing, by the SoC, a read operation of stored source data associated with the memory array of the memory resource;performing, by the memory resource, a CRC operation on the stored source data;replacing, by the memory resource, an ECC of the stored source data with a CRC bit value based on the CRC operation;receiving, by the SoC, the stored source data and CRC bit value from the memory resource; andperforming, by the SoC, a verification operation of the CRC bit value associated with the stored source data.18.The method of claim 16, further comprising writing, by the memory resource, a CRC status bit value to a status register of the memory resource.19.The method of claim 18, further comprising reading, by the SoC, the CRC status bit value of the status register to verify an accuracy of the source data sent to the memory resource.20.The method of claim 18, further comprising resending, by the SoC, the source data with the CRC bit value to the memory resource when the CRC status bit value is a failure value.
Citation Information
Patent Citations
Configuration and verification by trusted provider
CN105164633A
Memory authentication
CN112309483A
Multi-protocol support on common physical layer
CN112860610A
Semiconductor memory device and memory system including same
CN115482870A
Shadow DRAM with CRC + RAID architecture for high RAS features in CXL drivers, systems, and methods
CN116486891A