Method and apparatus for data protection in a memory device - Patents.com
The computing system efficiently transmits data by using an encoder with error correction schemes to generate security data within the same data size, addressing interconnect capacitance and parasitic inductance issues in integrated circuits.
Patent Information
- Application Number
- JP2023534103
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-10
- Filing Date
- 2021-10-11
- Publication Date
- 2025-05-23
- Estimated Expiration
- 2041-10-11
AI Technical Summary
In modern integrated circuits, interconnect capacitance reduces signal integrity and transfer speed, leading to voltage drops and data retention corruption due to parasitic inductance and IR voltage drops.
A computing system with a transmitter that includes an encoder with a control unit and an error correction unit, which divides data blocks into sub-blocks, compares portions of these sub-blocks, and generates security data using error correction schemes like Hamming codes to transmit data efficiently without increasing the data size.
The solution effectively transmits data with increased reliability by using error correction schemes to identify and correct errors, while reducing power consumption and maintaining the same data size, thus addressing the issues of signal integrity and data retention.
Smart Images

Figure 0007682273000001 
Figure 0007682273000002 
Figure 0007682273000003
Abstract
Description
[Background technology]
[0001] This invention was made with Government support under the PathForward Project awarded by the U.S. Department of Energy to Lawrence Livermore National Security (Prime Contract No. DE-AC52-07NA27344, Subcontract No. B620717). The Government has certain rights in this invention.
[0002] Description of Related Art To transfer information between functional blocks in a semiconductor chip, electrical signals are sent over multiple parallel metal traces. A transmitter transmits electrical signals across the parallel metal traces. A receiver receives the electrical signals. The metal traces have transmission line effects such as distributed inductance, capacitance, and resistance throughout their length. In modern integrated circuits, the interconnect capacitance reduces signal integrity and signal transfer speed more than the gate capacitance of the semiconductor device. The interconnect capacitance per unit length includes both sidewall fringing capacitance and cross-coupling capacitance. For example, the electromagnetic fields for the metal traces conducting the signals and the return currents on the ground plane generate electrical interference on adjacent metal traces and adjacent devices. As operating voltages continue to decrease to reduce power consumption and short channel effects, the signal swing used for Boolean logic decreases as does the noise margin.
[0003] Simultaneous switching of a wide bus can cause significant voltage drops if a supply pin supplies all line buffers on the bus. Parasitic inductance increases the transmission line's effects on the chip, such as ringing and reduced propagation delay. The resulting voltage drop is proportional to the formula L di / dt, where L is the parasitic inductance and di / dt is the time rate of change of current consumption. A node that currently holds a logic high value may experience a voltage drop that reduces its voltage value below a minimum threshold. In the case of memories and latches without recovery circuits, the stored value may be lost. Power supply current flowing through non-zero resistance wires also causes IR (current-resistance) voltage drops, which contribute to data retention corruption and timing failures in critical paths.
[0004] In view of the above, methods and mechanisms for efficiently transmitting data are desirable. [Brief description of the drawings]
[0005] [Figure 1] FIG. 2 is a generalized diagram of one embodiment of a communication bus. [Diagram 2] FIG. 2 is a generalized diagram of one embodiment of data for transmission. [Diagram 3] FIG. 2 is a generalized diagram of one embodiment of data for transmission. [Figure 4] FIG. 2 is a generalized diagram of one embodiment of a control unit for an encoder at a transmitter. [Diagram 5] 1 is a generalized diagram of one embodiment of a method for efficiently transmitting data. [Figure 6] 1 is a generalized diagram of one embodiment of a method for efficiently transmitting data. [Figure 7] 1 is a generalized diagram of one embodiment of a method for efficiently transmitting data. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0006] While the invention is susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the drawings and detailed description are not intended to limit the invention to the particular forms disclosed, but on the contrary, the invention is intended to cover all modifications, equivalents, and alternatives falling within the scope of the invention as defined by the appended claims.
[0007] In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, those skilled in the art should appreciate that the present invention may be practiced without these specific details. In some instances, well-known circuits, structures and techniques have not been shown in detail in order to avoid obscuring the present invention. Furthermore, it will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some elements have been exaggerated relative to other elements.
[0008] Systems and methods for efficiently transmitting data are contemplated. In various embodiments, a computing system includes a transmitter that transmits data to a receiver. The transmitter and receiver are components used on a communication bus between various functional blocks used to process various applications. In some examples, the communication bus is located between a memory controller and a memory device. In other examples, the communication bus is located between processing units located on the same die, on separate dies in a system on a chip (SoC) package, or on separate chips on a motherboard. The transmitter includes an encoder having at least a control unit and an error correction unit. The error correction unit can select between a number of error correction schemes. The error correction scheme generates security data corresponding to the data to be transmitted. The security data is used to identify and correct any errors in the received payload data, rather than simply detecting errors in the received payload data. In some embodiments, the error correction scheme is an error code correction (ECC) scheme, and the security data is an error correction code. Examples of ECC schemes are a Hamming code scheme, a binary convolutional code scheme, a Reed-Solomon code scheme, and a low-density parity-check code scheme.
[0009] An encoder at the transmitter receives a first data block to be transmitted. The first data block includes any packet headers and other metadata in addition to the payload data to be transmitted to the receiver. The encoder divides the received first data block into a number of sub-data blocks. The encoder then selects a portion of each sub-block to compare with each other. In various embodiments, the selected portion in a particular sub-block has the same offset and the same size as other portions of the other sub-blocks. If, after the comparison, the encoder determines that multiple portions of the multiple sub-blocks match each other, the encoder transmits a second data block corresponding to the first data block to the receiver. The second data block has a size the same as the size of the received first data block, and the second data block includes security data of any of a number of error correction schemes. Additionally, the second data block includes the same number of sub-blocks as the first data block. Thus, the second data block provides security without increasing the amount of data to be transmitted. The steps for generating the second data block are further described in the following description.
[0010] Turning now to FIG. 1, a generalized block diagram of one embodiment of a computing system 100 is shown. As shown, the communication bus 100 includes a transmitter 110 capable of transmitting information as an electrical signal, transmission lines 140-142 for transferring the electrical signals, and a receiver 150 capable of receiving the signals. There can be any number of transmission lines 140-142, and the number is based on design requirements. Although not shown for ease of illustration, each of the transmitter 110 and receiver 150 includes circuitry for each of the transmission lines 140-142 for driving the electrical signals and receiving the electrical signals, respectively. For example, both active devices, such as transistors, and passive devices, such as resistors, capacitors, and inductors, are used at either end of the transmission lines 140-142. This circuitry provides termination and sampling capabilities for the receiver 150, and this circuitry supports a particular communication protocol. The communications protocol determines the values used for information transfer, such as the number of data transfers per clock cycle, signal voltage levels, signal timing, signal and clock phases, and clock frequency.
[0011] It should be noted that the term "bus" is sometimes referred to as a "channel" and each "transmission line" is a "lane" or "trace" or "wire". In various embodiments, the transmission lines 140-142 are constructed from various suitable metal sources during semiconductor manufacturing and surrounded by various any suitable insulating materials. It should also be noted that the terms "pin", "port", "terminal" and "node" are used interchangeably herein. Depending on the design, the transmission lines 140-142 are located between a memory controller and a memory device, between processing units located on the same die, between processing units located on separate dies in a system on a system-on-chip (SoC) package, between processing units located on separate chips on a motherboard, or between clusters in a communication fabric. Other designs and arrangements of the transmission lines 140-142 are possible and contemplated. Although one transmitter 110 and one receiver 150 are shown, other embodiments use any number of these components, as well as any number of subcomponents within the transmitter 110 and receiver 150.
[0012] Transmitter 110 receives data for transmission on transmission lines 140-142 via interface 120 and stores the data in one of queues 122-124. In some embodiments, interface 120 selects one of queues 122-124 for storing received data based on criteria such as the source of the data, the type of request or command associated with the data, and the priority level of the data. Arbitrator 126 includes circuitry for selecting data to remove from queues 122-124 and send to encoder 130. Arbitrator 126 selects data from queues 122-124 based on a variety of factors such as priority level, quality of service (QoS) parameters, age of the data, source of the data, a round robin selection scheme, and the like.
[0013] The encoder 130 includes at least a control unit 132 and an error correction unit 134. In some embodiments, the error correction unit 134 includes circuitry for implementing various error correction schemes used to both detect errors in the transmitted data and correct one or more errors in the transmitted data. Examples of error correction schemes are Hamming code schemes, binary convolutional code schemes, Reed-Solomon code schemes, and low density parity check code schemes. In other embodiments, the error correction unit 134 uses a table or other memory to store an index of the available error correction schemes and sends a command to an external unit with an index of a selected one of the multiple available error correction schemes and a copy of the data to be protected. The error correction unit 134 then receives the results, which are used to transmit the data over the transmission lines 140-142.
[0014] The control unit 132 attempts to transmit an output data block corresponding to the received data block that has the same size as the received data block and also includes security data. To do this, the control unit 132 divides the received data block into multiple sub-data blocks. In one example, the first data block includes 64 bytes, and the encoder at the transmitter divides this 64-byte first data block into eight 8-byte sub-blocks. In one embodiment, the encoder selects the most significant byte of the sub-block as the portion to compare. In this case, for each portion, the offset is 0 in the corresponding sub-block and the size is 1 byte. If the control unit 132 determines that the eight 1-byte portions of the eight sub-blocks match each other, the encoder determines the amount of security data to be transmitted. To do so, the control unit 132 prevents the inclusion of one or more copies of the portion in the output data block transmitted on the transmission lines 140-142. For example, control unit 132 may prevent including seven copies of the portion in an output data block, which provides 57 bits per 8-byte subblock ((64 bytes-7 bytes) / 8 subblocks) for storing security data.
[0015] The encoder 130 selects one of the available error correction schemes based on a match between the 57 bits per 8-byte sub-block and the input data size of one of the available error correction schemes. In one embodiment, the encoder selects a Hamming code (64, 57, 7) scheme as the selected error correction scheme. A first parameter of the Hamming code scheme includes a codeword size, such as 64 bits, that contains the original data in addition to the security data. A second parameter of the Hamming code scheme includes an input data size, such as 57 bits, that contains the original data to be transmitted. A third parameter of the Hamming code scheme includes a size of the security data, such as 7 bits. It should be noted that the terms "security data", "security bits", "auxiliary data", "auxiliary bits", "redundancy data", and "redundancy bits" are used interchangeably herein.
[0016] For each sub-block of the output data block, the encoder 130 generates and inserts seven generated redundant bits based on the security data Hamming code (64, 57, 7) scheme. Thus, each sub-block of the output data block contains 57 bits of original data from the received 64-byte data block and the corresponding seven redundant bits using the Hamming code (64, 57, 7) scheme. Thus, each sub-block of the output data block has a size of 8 bytes. With 8 sub-blocks, the output data block has a total size of 64 bytes (8 sub-blocks x 8 bytes / sub-block). Thus, the output data block has the same size as the received data block, despite additionally storing security data used for both detection and correction of one or more bit errors that occur during data transmission. The encoder also inserts an indicator into the metadata of the output data block specifying the selected error correction scheme, such as the Hamming code (64, 57, 7) scheme.
[0017] The queue 160 receives the data block transmitted by the transmitter 110. The decoder 170 of the receiver 150 checks a particular field of the header or other metadata to retrieve an indication of the selected error correction scheme. The decoder 170 uses the error correction scheme specified by the indication to verify and possibly correct the received data block. The decoder 170 may also retrieve a copy of a portion of the data that is invariant across sub-blocks. For example, if the portion is the most significant byte of a sub-block, at least one of the sub-blocks still contains a copy of the portion. The decoder 170 generates the original data block from the retrieved portion and the verified (and corrected) data. The decoder 170 then transmits the generated data to other processing circuitry. It should be noted that the sub-components such as the control unit 132, the decoder 170, etc. are implemented in hardware, such as circuitry, to perform the above steps of transmitting data from the transmitter 110 to the receiver 150.
[0018] Referring to FIG. 2, a generalized block diagram of one embodiment of data for transmission 200 is shown. Processing circuitry generates data block 210, which the transmitter receives and further processes before transmitting to the receiver. In the illustrated embodiment, data block 210 has a size of 64 bytes, although other data sizes are possible and contemplated. Note that data block 210 is payload data in some examples, and commands or messages or headers associated with the payload data may be transmitted separately from the payload data. The contents of data block 210 are shown in hexadecimal digits. Each hexadecimal digit represents 4 bits. Although other configurations are possible, data block 210 has the most significant byte located on the left side.
[0019] The transmitter encoder divides the data block 210 into a number of sub-blocks. Here, the data block 210 is divided into eight 8-byte sub-blocks, shown as sub-blocks 212, 214, 216. The transmitter encoder compares a portion of each of the two or more sub-data blocks 212-216 to each other. In one example, the transmitter encoder selects the most significant byte of each of the sub-blocks 212-216 to compare (e.g., portions 222, 224, .., 226). The most significant byte of the sub-blocks 212-216 is shown as portion 220. In this example, the offset is zero within the corresponding sub-block, and the size of the portion is one byte. In other examples, the offset and size may vary. As seen in the illustrated example, each of these bytes has the same value 3f.
[0020] It should be noted that certain workloads that use data blocks of the same data type tend to have similarities across the data blocks. For example, a double precision floating point (FP) workload contains high bit similarity across data blocks such as 64-bit words. The main reason for the high similarity is that one sign bit and 11 exponent bits vary slightly across a 64-bit word. Thus, the transmitter can prevent the inclusion of one or more of the bytes of the data portion 220 in the output data block transmitted to the receiver. Also, the transmitter can insert security data into the output data block having the same 64-byte size as the original data block 210. Thus, power consumption is reduced and less data is transmitted despite utilizing security data to increase reliability.
[0021] Referring to FIG. 3, a generalized block diagram of one embodiment of data for transmission 300 is shown. Similar to data block 210 (of FIG. 2), processing circuitry generates data block 310 and data block 330, which the transmitter receives and further processes before transmitting to the receiver. In the illustrated embodiment, data blocks 310 and 330 have a size of 64 bytes, although other data sizes are possible and contemplated. The transmitter encoder divides data blocks 310 and 330 into sixteen 4-byte sub-blocks, shown as sub-blocks 312, 314, 316, and sub-blocks 332, 334, 336. In some embodiments, the transmitter encoder selects the most significant byte of the sub-block as the portion to compare. The most significant byte of sub-blocks 312-316 is shown as portion 320. Similarly, the most significant byte of sub-blocks 332-336 is shown as portion 340. In this case, the bytes located to the left of sub-blocks 312-316 are the selected portion (i.e., 322, 324, ..., 326). Similarly, the bytes located to the left of sub-blocks 332-336 are the selected portion (i.e., 342, 344, ..., 346).
[0022] Each portion of data block 320 and each portion of data block 340 are selected in a manner similar to that previously described in FIG. 2. As can be seen, each of these bytes of data block 310 have the same value 0d. Similarly, each of these bytes of data block 330 have the same value 0d. The transmitter's encoder compares two or more portions of sub-data blocks 322-326 with each other. Similarly, the transmitter's encoder compares two or more portions of sub-data blocks 342-346 with each other.
[0023] As mentioned above, a particular workload using data blocks of the same data type tends to have similarity across the data block. For example, one sign bit and eight exponent bits for a single precision floating point workload tend to remain unchanged across a 32-bit word, as shown for data block 310. Additionally, the most significant byte of an integer workload tends to remain unchanged across a 32-bit word, as shown for data block 330. The high similarity across the data words prevents the output data block from including one or more copies of similar data, and provides an opportunity to include security data instead. Thus, despite storing security data, the output data block does not have a data size larger than that of the original data block. Thus, power consumption due to data transmission is reduced, but data reliability is increased.
[0024] As previously described, data such as data blocks 310 and 330 are transmitted between various types of components via a communication bus. In some embodiments, the communication bus is between a memory controller and a memory device, which supports an error correction scheme due to the need for high reliability. The memory device may include any of a variety of random access memories (RAMs), such as a variety of dynamic random access memories (DRAMs), any of a variety of non-volatile (NV) dual in-line memory modules (DIMMs), such as NVDIMM-Ps, any of another type of data storage technology, such as phase-change memory (PCM), ferroelectric memory (FeRAM), magnetoresistive memory (MRAM), resistive memory (ReRAM or RRAM), three dimensional (3D) cross-point (XPoint) memory, and the like. When the memory device is used in computing system processing applications for medical, financial, scientific, etc., error correction schemes are used to increase reliability, even though these schemes consume more power. However, as explained above, input data can be received and output data can be generated and transmitted on a communication bus without increasing the data size, even though security data is added. Additionally, such steps are performed for other interfaces than between a memory controller and a memory device.
[0025] Referring to FIG. 4, a generalized block diagram of one embodiment of a control unit 400 is shown. In the illustrated embodiment, the control unit 400 includes a data converter 440 that receives input data 402 and generates output data 450 for transmission on a communication bus. Circuitry, such as a hardware circuit, is used to implement the data converter 440. The data converter 440 uses information from the tables 410-420 and an external error correction unit in generating the output data 450. Access circuitry for the tables 410-420 is not shown for ease of illustration. The tables 410-420 use circuitry to store information, which may be used to implement any of a variety of memories. For example, the circuitry may implement one or more of a random access memory, a register, a flip-flop circuit, a queue, a content addressable memory (CAM), or the like.
[0026] Table 410 uses multiple fields, such as fields 412-416. Other fields not shown are possible and contemplated, such as a status field with a valid bit, an index field for identifying a row in table 410, another index field that is later mapped to the corresponding error correction scheme used, etc. Field 412 stores an index of the error correction scheme. As previously described, examples of error correction schemes are a Hamming code scheme, a binary convolutional code scheme, a Reed-Solomon code scheme, and a low density parity check code scheme. One or more of these schemes include various types. For example, supported Hamming code schemes include one or more of a Hamming code (128, 120, 8) scheme, a Hamming code (64, 57, 7) scheme, a Hamming code (32, 26, 6) scheme, and a Hamming code (16, 11, 5) scheme.
[0027] Field 414 stores the input data size of the available error correction schemes. For example, the input data size of the Hamming code (64, 57, 7) scheme is 57 bits. Field 416 stores the priority level of the corresponding error correction scheme. If more than one available error correction scheme is capable of providing security data for the data to be transmitted, control unit 400 selects the error correction scheme with the highest priority level. In some cases, the priority level increases with increasing input data size. In other cases, the priority level is set based on other criteria.
[0028] Table 420 stores at least fields 422-430. As with table 410, table 420 can and is contemplated to include other fields not shown, such as a status field with a valid bit indicating a valid entry or row in the table. Field 422 stores any of the supported sizes of sub-blocks. For example, if the data block to be transmitted has a size of 64 bytes, it is possible to divide the data block into eight 8-byte sub-blocks, sixteen 4-byte sub-blocks, etc. Field 424 stores the number of sub-blocks included in the data block. Field 426 stores the amount of reclaimed data to use for the output data block once the number and size of the sub-blocks are known. This is the amount of data that is prevented from being included in the output data block.
[0029] Field 428 stores the amount of original data to be included in the output data block once the amount of data to be prevented from being included in the output data block is known. For example, for a received data block having a size of 64 bytes, if control unit 400 divides the data block into 16 4-byte sub-blocks and determines that the most significant 1-byte portions of data in each of the sub-blocks match each other, control unit 400 will prevent 12 of the 16 1-byte portions from being included in the output data block. The determination of preventing 12 portions rather than 8 portions or 15 portions or another number of portions is further described in method 600 (of FIG. 6). Once the 12 1-byte portions are prevented from being included in the output data block, the amount of data of the original 64 bytes placed in the output data block is 52 bytes or 416 bits.
[0030] Field 430 stores the size of the remaining data per subblock. For example, dividing 416 bits by 16 subblocks provides 26 bits per subblock to be used to store the original data of the received data block. Since the size of the subblock is 4 bytes and is stored in field 422, there are 6 remaining bits to store security data in the subblock. It should be noted that the control unit 400 compares the information stored in field 430 of table 420 with the information stored in field 414 of table 410 to determine which error correction scheme to select.
[0031] It should be noted that the table 410 stores information of a non-default error correction scheme. If the received data 402 is divided into sub-blocks having portions that match across the sub-blocks, the control unit 400 generates the output data 450 using the non-default error correction scheme. In some embodiments, the size of the output data 450 is equal to or smaller than the combined size of the input data 402 and the security data. In some embodiments, the control unit 400 uses the non-default error correction scheme to generate the output data 450 having the same size as the input data 402 despite placing the security data in the output data 450. For example, each of the input data 402 and the output data 450 has a size of 64 bytes.
[0032] If the input data 402 does not have a matching portion across the sub-blocks, the control unit uses a default error correction scheme to generate the output data 450, which has a size larger than the input data 402 due to placing security data in the output data 402. For example, if the default type error correction scheme is a Hamming code (72, 64, 8) scheme, the input data 402 has a size of 64 bytes, each of the eight sub-blocks has a size of 8 bytes (64 bits), and there is no matching portion across the sub-blocks, the size of the output data 450 is larger than 64 bytes. The output data 450 has 72 bits per sub-block, with 64 bits of original data from the input data 402 and 8 redundant bits for security data generated by the Hamming code (72, 64, 8) scheme. With 72 bits per sub-block and 8 sub-blocks, the total size of the output data 450 is 576 bits, or 64 bytes with 64 bits of redundant bits generated as security data.
[0033] With reference to Figure 5, one embodiment of a method 500 for efficiently transmitting data is shown. For purposes of illustration, the steps in this embodiment (and in Figures 6 and 7) are shown in sequence. However, in other embodiments, some steps occur in a different order than that shown, some steps are performed simultaneously, some steps are combined with other steps, and some steps are not present.
[0034] An encoder at the transmitter receives an input data block to be transmitted to the receiver (block 502). The encoder selects a number of sub-blocks for the received input data block (block 504) and divides the data block into the selected number of sub-blocks (block 506). The encoder compares a portion of each of two or more of the selected number of sub-blocks to each other (block 508). In some embodiments, portions are selected from all of the sub-blocks for comparison. The selected portions have the same offset and size within the corresponding sub-block. In one example, the encoder selects the most significant byte of two or more sub-blocks for comparison. In such an example, the offset is zero and the size is one byte for each portion to be compared. However, in other examples, the number of sub-blocks from which to select portions has different values. Similarly, in other examples, the offset and size of the portions have different values.
[0035] If the encoder determines that the compared portions do not match one another ("NO" at conditional block 510) and if the encoder has not reached the last available number of sub-blocks to be compared ("NO" at conditional block 512), control flow of method 500 returns to block 504, where the encoder selects another number of sub-blocks for the received data block. As previously mentioned, in some embodiments, the steps performed at blocks 504-512 are performed simultaneously rather than sequentially. In such embodiments, the encoder performs the steps of blocks 504-512 simultaneously for multiple selected numbers of sub-blocks.
[0036] In one example, the encoder selects one number of eight sub-blocks and simultaneously selects another number of four sub-blocks. If the received input data block has a size of 64 bytes, there are eight eight-byte sub-blocks for a first selection of the number of sub-blocks and sixteen four-byte sub-blocks for a second selection. Thus, in one example, the encoder compares the most significant byte of each of the eight eight-byte sub-blocks to each other and simultaneously compares the most significant byte of each of the sixteen four-byte sub-blocks to each other. Although the comparisons are performed simultaneously, in some designs the selection of eight sub-blocks has a higher priority than the selection of four sub-blocks. The priority is used when a match is found for all portions of the eight eight-byte sub-blocks and when a match is found for all portions of the sixteen four-byte sub-blocks.
[0037] Returning to condition block 510, if the encoder determines that the compared portions do not match one another ("NO" out of condition block 510) and if the encoder has reached the last available number of sub-blocks to be compared ("YES" out of condition block 512), then the encoder uses a default type of error correction scheme to transmit the data block (block 514). If the encoder uses a default type of error correction scheme, security data is added to the received input data block to generate an output data block such that the total size of the output data block is greater than the size of the received input data block.
[0038] The selection of the error correction scheme is based on the size of the output data block. In various embodiments, the output data block is divided into the same number of sub-blocks as the input data block. The size of the output data block and the data size per sub-block of the output data block are interdependent and are used to select the error correction scheme. If the encoder determines that the compared portions of the input data blocks match each other ("YES" in condition block 510), the encoder determines the data size per sub-block of the output data block (block 516).
[0039] In some embodiments, determining the data size per sub-block of the output data block in block 516 is performed by first searching a table or other memory, such as table 420 having field 426 (of FIG. 4). By determining the data size per sub-block of the output data block, the size of the reused data is also determined. An example of the size of the reused data is field 426 of table 420 (of FIG. 4). The size of the reused data is the amount of data that is removed from the input data block to generate the intermediate data block. The encoder generates this intermediate data block by removing one or more portions of the two or more compared portions that match each other from the input data block. The encoder then generates the output data block by inserting security data into the intermediate data block. The encoder uses the selected error correction scheme to generate the security data as further described in the following description.
[0040] In other embodiments, a table or memory such as table 420 (of FIG. 4) does not already store such information. Thus, an iterative process is performed to determine the number of copies of the portion to be removed from the input data block to generate the intermediate data block. The next steps of method 600 (of FIG. 6) describe such an iterative process. Once the number of copies of the portion to be removed from the input data block to generate the intermediate block of the data block of data is known (either from a table lookup or from a previous iterative process), the step of block 516 is performed. In yet another embodiment, a preferred error correction scheme is first selected, and the input data size of this preferred error correction scheme is used to determine the data size per sub-block of the output data block. Next, the number of copies of the portion to be removed from the input data block to generate the intermediate block of the data block of data is determined. The selection of which steps to prioritize and perform first is based on what information is already readily available.
[0041] If the number of copies of the portion to be removed from the input data block to generate an intermediate block of the data block of data is known, such as by reading field 426 of table 420 (of FIG. 4), in one example, the received input data block has a size of 64 bytes, there are eight 8-byte sub-blocks, and the selected portions to be compared are the most significant bytes of the eight sub-blocks. In this example, all eight portions match each other, and the encoder determines to remove seven of the eight portions from the input data block to generate an intermediate block of the data block of data. Afterwards, the encoder inserts security data into the intermediate data blocks to generate an output data block. Thus, the output data block contains 57 bytes of the received input data block (64-7=57). The encoder distributes the 57 bytes, or 456 bits, into the eight sub-blocks. Thus, each sub-block of the output data block contains 57 bits (456 / 8=57) of the original input data from the received 64-byte input data block.
[0042] The encoder compares the determined data size to the input data sizes of the available types of error correction schemes (block 518). Using the above example, the encoder compares the determined data size of 57 bits per sub-block to the input data sizes of the multiple available types of error correction schemes. If the determined data size does not match the data size of any of the available types of error correction schemes ("NO" at condition block 520), the control flow of method 500 moves to block 514 where the encoder uses a default type of error correction scheme to transmit the data block (block 514).
[0043] If the determined data size matches the data size of an available type of error correction scheme ("YES" at condition block 520), the encoder uses the matching type of error correction scheme to transmit the data block (block 522). For example, the encoder uses the matching type of error correction scheme to generate security data to insert into the intermediate data block. When the encoder uses the matching type of error correction scheme, the total size of the output block data is less than or equal to the combined size of the input data block and the security data. In some embodiments, the total size of the output block data is the same as the size of the received input data block, since the security data consumes data storage space made available by preventing the inclusion of one or more copies of the compared portion in the output data block.
[0044] Continuing with the above example, the determined data size of 57 bits matches the input data size of 57 bits of Hamming code (64, 57, 7). For each sub-block of the output data block, the encoder generates and inserts 7 generated redundant bits based on the Hamming code, which is the security data. Thus, each sub-block of the output data block includes 57 bits of original input data from the received 64-byte input data block and the corresponding 7 redundant bits generated using the Hamming code (64, 57, 7) scheme. Thus, each sub-block of the output data block has a size of 8 bytes. With 8 sub-blocks, the output data block has a total size of 64 bytes (8 sub-blocks x 8 bytes / sub-block), which is the same size as the received input data block. The encoder also inserts an indicator into the metadata of the output data block that specifies a matching error correction scheme, such as the Hamming code (64, 57, 7) scheme. Thus, a decoder in the receiver can receive the output data block and use at least this indicator to generate the original data block from the received data block with the security data.
[0045] Referring to FIG. 6, one embodiment of a method 600 for efficiently transmitting data is shown. An encoder at a transmitter has already received a data block to be transmitted to a receiver. The encoder has also already divided the received data block into sub-blocks and compared portions across the sub-blocks. For example, the encoder has already performed the step of moving the control flow of method 500 from block 510 to block 516 (of FIG. 5). The encoder determines that portions of multiple sub-blocks of a data block match each other (block 602). The encoder selects an integer (block 604). The integer ranges from 1 to the number of portions minus 1. For example, if a received data block has a size of 64 bytes and the encoder divides the data block into eight 8-byte sub-blocks, in one example there are eight portions, each portion being the most significant byte of each sub-block. Thus, the set of integers to select ranges from 1 to 7. The encoder calculates the input data size of the sub-blocks by dividing the data block, minus a copy of the integer number of portions, by the number of sub-blocks (block 606). For example, if a data block has a size of 64 bytes, and the encoder divides the data block into eight 8-byte sub-blocks, where the portion is the most significant byte of the sub-block, and the selected integer is 2, then the encoder calculates the input data size of the sub-block to be 64 bytes minus 2 bytes (two copies of the matching portion) divided by the sub-block size of 8 bytes. With this calculation, the input data size of the sub-block is (64 bytes - 2 bytes) / 8 bytes = 7.75. There are no available error correction schemes that have input data sizes that are non-integer, such as 7.75. Therefore, the encoder needs to select another integer and repeat the steps.
[0046] If the calculated data size of the sub-block does not match any of the input data sizes of the available types of error correction schemes (No in conditional block 610), and the encoder has not reached the last integer (No in conditional block 612), the control flow of method 600 returns to block 604 where the encoder selects another integer. As described above, the set of integers to select ranges from 1 to the number obtained by subtracting 1 from the number of parts. If there are eight parts, the set of integers to select ranges from 1 to 7.
[0047] If the calculated data size of the sub-block does not match any of the input data sizes of the available types of error correction schemes (No in conditional block 610), and the encoder has reached the last integer (Yes in conditional block 612), the encoder uses the default type of error correction scheme to transmit the data block (block 614). When the encoder uses the default type of error correction scheme, security data is added to the received input data block, so the total size of the output data is larger than the size of the received input data block. If the calculated data size of the sub-block matches the input data size of an available type of error correction scheme (Yes in conditional block 610), the encoder uses the matching type of error correction scheme to transmit the data block (block 616). When the encoder uses the matching type of error correction scheme, in some embodiments, the size of the output data block is less than or equal to the size of the combination of the input data block and the security data. In some embodiments, the size of the output data block is the same as the size of the received input data block. The security data consumes the available data storage space by preventing one or more copies of the parts found in the input data block from being included in the output data block.
[0048] It should be noted that in some embodiments, the steps performed for methods 500 and 600 are used to generate a table similar to table 420 (of FIG. 4). Thus, the iterative steps of methods 500 and 600 are not performed consecutively over time. For example, the second row (entry) of table 420 indicates that 12 bytes of original data are prevented from being included in the output data block if a match is found across sub-blocks. The parameters of the received data block of 64 bytes and the size of 12 bytes in field 426 for the division into 16 4-byte sub-blocks are always true. Thus, when this value is found, it can be stored and retrieved for quick access rather than being recalculated again. Thus, as available error correction schemes are added and removed from the transmitter, the table is updated, allowing for the generation of stored information.
[0049] Referring to Figure 7, one embodiment of a method 700 for efficiently transmitting data is shown. A decoder at a receiver receives a data block from a transmitter (block 702). The decoder examines an indicator that specifies the type of error correction scheme used for the transmission (block 704). In some embodiments, the indicator is a multi-bit value stored in a particular field of a header or other metadata of the received data block. The multi-bit value is decoded to determine the specified type of error correction scheme used to transmit the data block.
[0050] If the indicator specifies a default type error correction scheme ("yes" at condition block 706), the decoder uses the default type error correction scheme to verify the received data block (block 708). In such a case, the received data block has a larger data size than the original data block because the security data was added to a copy of the original data block. After decoding, the resulting data block will have a smaller size than the received data block. For example, if the default type error correction scheme is a Hamming code (72, 64, 8) scheme, the original data block has a size of 64 bytes and each of the 8 sub-blocks has a size of 8 bytes (64 bits). However, the encoder transmitted 72 bits per sub-block, along with 64 bits of original data and 8 generated redundant bits for the security data. With 72 bits per sub-block and 8 sub-blocks, the total size of the transmitted data block is 576 bits, or 64 bytes with 64 bits of generated redundant bits as security data.
[0051] If the indicator specifies a non-default type of error correction scheme ("NO" at condition block 706), the decoder uses the non-default type of error correction scheme to verify and possibly correct the received data block (block 710). In such a case, the received data block has the same data size as the original data block because the security data was added to a copy of the original data block minus one or more copies of the portion used in the comparison. The decoder retrieves a copy of the portion of the data that is invariant across the subblocks (block 712). For example, if the portion is the most significant byte of the subblock, at least one of the subblocks still contains a copy of the portion. The decoder generates the original data block from the retrieved portion and the verified data (block 714).
[0052] It should be noted that one or more of the above-described embodiments include software. In such embodiments, program instructions implementing the methods and / or mechanisms are communicated to or stored on a computer-readable storage medium. Numerous types of media configured to store program instructions are available, including hard disks, floppy disks, CD-ROMs, DVDs, flash memory, programmable ROM (PROM), random access memory (RAM), and various other forms of volatile or non-volatile storage. Generally speaking, a computer-accessible storage medium includes any storage medium that can be accessed by a computer during use to provide instructions and / or data to the computer. For example, a computer-accessible storage medium may include a magnetic or optical medium, such as a disk (fixed or removable), tape, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, or Blu-Ray. The storage medium further includes volatile or non-volatile memory media such as RAM (e.g., synchronous dynamic RAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM, low-power DDR (LPDDR2, etc.) SDRAM, Rambus DRAM (RDRAM), static RAM (SRAM), etc.), ROM, flash memory, non-volatile memory (e.g., flash memory) accessible via a peripheral interface such as a Universal Serial Bus (USB) interface, etc. The storage medium includes a microelectromechanical system (MEMS), as well as storage media accessible via a communication medium such as a network and / or wireless link.
[0053] Additionally, in various embodiments, the program instructions include a behavioral or register-transfer level (RTL) description of the hardware functionality in a high-level programming language such as C, or a design language (HDL) such as Verilog, VHDL, or a database format such as GDSII stream format (GDSII). In some cases, the description is read by a synthesis tool that synthesizes the description to generate a netlist that includes a list of gates from a synthesis library. The netlist includes a set of gates that also represent the functionality of the hardware that comprises the system. The netlist can then be placed and routed to generate a data set that describes the geometry that is applied to a mask. The mask can then be used in various semiconductor manufacturing steps to generate a semiconductor circuit or circuits that correspond to the system. Alternatively, the instructions on the computer-accessible storage medium are a netlist (with or without a synthesis library) or a data set, as appropriate. Additionally, the instructions are utilized for emulation by hardware-based type emulators from vendors such as Cadence®, EVE®, and Mentor Graphics®.
[0054] Although the above embodiments have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated, and it is intended that the following claims be interpreted to include all such variations and modifications.
Claims
1. 1. A circuit comprising: an interface configured to receive a first block of data; an error correction unit configured to implement a plurality of error correction schemes; A circuit configuration, The circuit configuration is Dividing the first data block into a first plurality of sub-data blocks; comparing a portion of each of two or more of the first plurality of sub-data blocks to one another; generating a second data block including a respective sub-data block for each of the first plurality of sub-data blocks of the first data block based at least in part on a determination that two or more compared portions of the two or more sub-data blocks have the same data, the second data block including error correction data corresponding to one of the plurality of error correction schemes, the error correction data being inserted to replace data deleted from at least one of the two or more compared portions of the two or more sub-data blocks, the second data block having a size less than a combined size of the first data block and the error correction data; 4. The method of claim 3, circuit.
2. The second data block includes the same number of sub-data blocks as the first data block.
2. The circuit of claim 1.
3. any of the error correction schemes generates a codeword having a size equal to the size of any of the first plurality of sub-data blocks.
2. The circuit of claim 1.
4. the second data block has the same size as the first data block; 2. The circuit of claim 1.
5. at least one sub-data block of the second data block contains data that is the same as data that was deleted from at least one of the two or more compared portions; 2. The circuit of claim 1.
6. The circuit configuration is and configured to select the one of the plurality of error correction schemes based at least in part on a size of the second data block minus a size of the error correction data.
2. The circuit of claim 1.
7. the circuitry being configured to insert an indication specifying the one of the error correction schemes into metadata of the second data block. The circuit of claim 6.
8. generating a third data block corresponding to the first data block based at least in part on a determination that the compared portions do not have the same value, the third data block having a size greater than a size of the first data block.
2. The circuit of claim 1.
9. 1. A method comprising: receiving a first block of data at an interface; a control unit dividing the first data block into a first plurality of sub-data blocks; the control unit comparing a portion of each of two or more of the first plurality of sub-data blocks to one another; and in response to determining that two or more compared portions of the two or more sub-data blocks have the same data, the control unit generates a second data block including a sub-data block for each of the first plurality of sub-data blocks, the second data block including error correction data generated using an error correction scheme, the error correction data being inserted to replace data deleted from at least one of the two or more compared portions of the two or more sub-data blocks, the second data block having a size less than a combined size of the first data block and the error correction data. method.
10. generating the second data block having the same number of sub-blocks as the first data block.
10. The method of claim 9.
11. The second data block has the same size as the first data block.
10. The method of claim 9.
12. at least one sub-data block of the second data block contains data that is the same as data that was deleted from at least one of the two or more compared portions; 10. The method of claim 9.
13. The method of claim 12, further comprising selecting the error correction scheme from a plurality of error correction schemes based at least in part on a size of the second data block minus a size of the error correction data.
10. The method of claim 9.
14. and inserting an indication specifying the error correction scheme into metadata of the second data block.
14. The method of claim 13.
15. An apparatus comprising: a plurality of transmitters configured to transmit data blocks; a plurality of receivers configured to receive data blocks; one or more of the plurality of transmitters comprises an encoder; The encoder comprises a circuit according to any one of claims 1 to 8. Device.
Citation Information
Patent Citations
Digital data transmission reception method, base station device used for transmission / Reception of digital data and mobile terminal used for transmission / Reception of digital data
JP1999355854A
Method for controlling memory system
JP2007293917A
Memory system and control method
JP2018041403A
Data processing device and program
JP2020057305A
Sampling based data de-duplication
US20120233135A1