WO2016144291A1 - Data write to subset of memory devices - Google Patents
Data write to subset of memory devices Download PDFInfo
- Publication number
- WO2016144291A1 WO2016144291A1 PCT/US2015/019180 US2015019180W WO2016144291A1 WO 2016144291 A1 WO2016144291 A1 WO 2016144291A1 US 2015019180 W US2015019180 W US 2015019180W WO 2016144291 A1 WO2016144291 A1 WO 2016144291A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- block
- ecc
- compressed
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
Definitions
- Electronic devices may include memory.
- a computer may include static random access memory (SRAM) and dynamic random access memory ⁇ DRAM ⁇ , SRAM and DRAM share the characteristic power must be continuously supplied in order to retain data stored in the memory. If the power is removed, the stored data may be lost.
- SRAM static random access memory
- DRAM dynamic random access memory
- Another type of memory that is becoming more prevalent is non-volatile random access memor (NVRAM). NVRAM may have the characteristic that once data is stored to the NVRAM, the data remains persistent, even if power is no longer supplied to the device.
- FIG. 1 depicts an example of a deviice that may use the data writing to a subset of memory devices techniques described herein.
- FIG. 2 depicts another example of a device that may use the data writing techniques described herein.
- FIGS. 3(a ⁇ c) depict examples of write / read patterns in
- FIG. 4 depicts an example high levei flow diagram of the data writing techniques described herein
- NVRAIV5 Some memory components in an electronic device, such a SRAM and DRAM require power in order to maintain storage of data.
- Other devices such as NVRAIV5 are able to store data without the need to continuously supply power.
- Currentiy existing forms of NVRAM e.g. FLASH memory
- new types of NVRAM currently being developed ⁇ e.g. memristor, phase change RAM, spin torque transfer RAM
- these devices do use power when originally writing the data to the device. This use of power may be referred to as write energy.
- SRAM and DRAM also require write energy to store data, and as such the techniques described herein are equally applicable to SRAM and DRAM.
- Many electronic devices such as computers, include a memory controller to manage storing and retrieving data from memory.
- the memory controller may not individually read and write bytes of data from the memory. Rather, the memory controller ma operate on groups of bytes, referred to as a tine of data.
- memory is typically operated on in units equivalent to the size of a cacheline in the processor. For example, if a processor has a cacheline size of 64 bytes, the memory controller may receive / provide data to the processor in units of 64 bytes.
- a line may refer to a data block that is provided to the memory controller to be written to memory or is provided by the memory for use by the electronic device. The techniques described herein are not limited to any particular line size.
- Th& memory may be divided across several memory devices which may be referred to as a rank.
- the memory devices that store the data that make up the line are all in the same rank.
- a rank of memory devices may store multiple lines. For example, for a 64 byte fine, there may be 9 memor devices in the rank.
- Each of the first 8 memory devices e.g. a memory chip
- the 9 memory device may be used to store an Error Correction Code (ECO).
- ECO Error Correction Code
- rank of memory Although a specific example of a rank of memory is described, it should be understood that the techniques described herein are not limited to any particular layout of memory devices in a rank.
- the techniques described herein provide for receiving a iine of data to be written to memory.
- the Sine may be examined to determine if the iine can be compressed, if so, the Sine may be compressed, and a header describing the compression may be added to the iine.
- An ECC for the overall tine may be calculated.
- the compression may result in fewer than the total number of memory devices within the rank being needed to store the
- the memory devices that are not needed are not written, thus saving the write energy that would have otherwise been used to write to those devices.
- the data may be encrypted prior to being written to the memory devices.
- the line that is stored may contain the data needed to determine if the line is compressed, and if so, how the line should be decompressed. For example, if the ECC does not use ail bits available on the ECC storage device for the line, then the extra bits may be used to indicate if the line is compressed or not. In other implementations, different techniques, described below, may be used to determine if the line is compressed. When the data is to be read, it may be determined if the line is encrypted and/or compressed. The line may then be decrypted and/or decompressed and provided to the requestor.
- System 100 may inciude a memory controller 110 coupied to a plurality of memory devices 150-1 9 Although 9 memory devices are depicted, it should be understood that this is to aid in the description. The techniques described herein are not limited to any particular number of memory devices.
- the memory contro!ier 110 may be a device that is a standalone device, or it may be integrated within a larger device (e.g., a processor, part of a chipset). Th techniques described herein are not limited to any particular implementation.
- the memory controller may include a data block compression circuit 115, and ECC generation circuit 120, and a memory device write circuit 125.
- the memory controlier and each of these circuits may be implemented as hardware circuits, or as a combination of hardware circuits and instructions readabie and executable by the hardware circuits.
- the memory controller may be implemented as logic on an integrated circuit, as an application specific integrated circuit (ASIC), as an FPGA, or in any other suitable manner.
- ASIC application specific integrated circuit
- the data block compression circuit may be a circuit to receive a biock of data and compress that biock of data.
- the compression circuit may implement Base Delta Immediate (BDl) compression, which may allow a 64 byte data biock to be compressed to a data block ranging from 0 to 84 bytes.
- BDl Base Delta Immediate
- a block that cannot be compressed may be stored in raw form.
- a biock that can be compressed may have a compression heade generated by th compression circuit 115.
- the compression header may contain information that may be used to later assist in decompression.
- the compression may indicate the process that was used to compress the data block and how that data biock can be decompressed.
- the ECC generation circuit 120 may be circuitry used to calculate an ECC for the biock of data.
- the ECC may be used to determine if there has been an error in the data.
- Many ECCs can be used to correct for single bit errors and detect multiple bit errors, in some implementations, as will be described in further detail beiow, the ECC may be used to determine if the data block has been compressed.
- the ECC generation circuit may insert those bits into the ECC in such implementations. These bits may be referred to as compression metadata. However, if the ECC uses all 8 bytes, an alternate mechanism for determining if the data block is encrypted is described below, with respect to FIG. 3.
- the memory device write circuit 125 may be used to write bytes of data to memory devices.
- the memory device write circuit may be coupled to memory devices that make up a rank of memory.
- the memory device write circuit may write the line to th individual memory devices that make up the rank,
- the system 100 may also include a plurality of memory devices 150-1...9 that make up a memory rank.
- System 100 is shown with a memory rank made up of 9 devices, however, it should be understood that this is for purposes of ease of description and not by way of limitation.
- the techniques described herein are suitable for use with memory ranks comprising any number of memory devices.
- Each memory device may store a particular range of bytes for a given line.
- memor device 150-1 may store bytes 0-7 for each line
- memory device 150-2 may store bytes 8-15, and so on.
- the rank of memor may store any number of lines, as is shown by lines 1-n. The techniques described herein are not limited to ranks storing any particular number of lines. What should be understood is that a rank of memory may store many Sines, and an individual memory device within the rank may store a portion of each iine.
- a request to write a block of data may be received by the memory controller. This is depicted by the "DATA BLOCK IN" arrow.
- the block is either compressible or it is not compressible. Each of these two situations is now described.
- the received iock of data 175 is not compressible. As such, the data block compression circuit is not able to compress the data b!ock.
- uncompressibie data blocks are stored in their raw form, in this case, the block of data is 64 bytes long and may be store uncompressed.
- the ECC generation circuit may generate an ECC over the 64 bytes and the ECC is appended to the line.
- the memory device write may then receive the uncompressed data block as wei! as the appended ECC and write the line to memory devices 150-1 , , ,9, As indicated by the matching hashes, the block of data 175 is show as being written to line 1 within the memory devices, it should be noted that is such cases, each memory device is written to, and as such write energy is used for writing to all 9 memory devices.
- the received block of data 176 may be compressible, in the example, assume that the compression circuit 1 5 is able to compress the data block to a smaller number of bytes. The compression circuit may then append a compression header to the compressed bytes.
- the compression header may be described as metadata that describes the compression. As shown by the hashes on line 176, assume that the
- compressed data and compression header uses bytes 0-23 (24 bytes totai).
- the ECC may then generate and ECC covering the 24 bytes of compression header and data plus 40 bytes of padding.
- the memory device write circuit may then write the compressed line to the memory devices.
- memory devices 150-1 -3 in Sine 3 of the memor devices may be used to store the compression header and
- the generated ECC may be stored in memory device 50-9, However, it is not necessary to write any data to memory devices 150-4-8, as indicated by the blacked out boxes. In comparison to the uncompressed case described above, oniy 4 memory devices instead of 9 are written to. As mentioned above, each write to a memory device requires write energy. By reducing the total number of memory devices written to, compression enabies a reduction In the total amount of write energy needed to write a line of data.
- 002SJ In addition to reducing the amount of write energy needed, the techniques described herein a!so provide for a mechanism to reduce the amount of read energy needed when reading a line of data. This technique is described in further detai!
- FIG. 2 depicts another example of a device that may use the data writing techniques described herein. Many of the elements of FIG. 2 are very similar to the elements in FIG. 1 and are similarly numbered. For ease of description, the description of those elements is not dup!icated.
- System 200 may include a memory controller 220, which is very similar io memory coniroiler 1 10.
- the memory controller may include a data block compression / decompression circuit 215, an ECC generation / validation circuit 220, a memory device write circuit 225, a background scrubber circuit 230, and an encryption / decryption controller 235, System 200 may also include memory devices 250-1 ...9, which ar essentially the same as those described with respect to FiG. ,
- Data block compression / decompression circuit 215 performs a similar function to the similarly numbered element in F!G. 1 . !n addition, circuit 215 ma aiso perform decompression. For example, the circuit may use the compression header contained in a compressed line and use that information in order to decompress the compressed Sine back into the uncompressed block. Aiihough circuit 215 is depicted as a single circuit performing both compression and decompression, it should be understood that this is only an example implementation. Other implementations may use different circuit to perform these functions,
- System 200 may also include ECC generation / validation circuit 220.
- circuit 220 may generate an ECC to ensure ihat a line does not contain errors.
- Circuit 220 may also include functionality to validate the ECC, Circuit 220 may examine a line of data and validate that the ECC indicates that there are no errors in the line.
- aiihough depicted as a single generate / validate circuit this is only an example implementation. Other implementations may use different circuits for each of these functions.
- System 200 may also inciude a memory device read / write circuit 225. The memory device read /write circuit ma be very similar to the equivalent circuit in FIG. 1 , with the exception that the memory devices can be both read and written.
- System 200 may also include a background scrubber circuit 230.
- the background scrubber circuit may examine the memory devices 250-1...9 as a task that runs continuously in the background, setting unused portions of iines to a high resistance state. As mentioned above, some portions of lines may remain unused (e.g. the black boxes). For some memory technologies (e.g.
- the amount of read energy used is dependent on the values stored at the designated location, and in the same array. Reads and writes to arrays with more high resistance values may require less energy to perform the read or write. For memory devices storing unused portions of the line, setting the resistance value to a high state reduces the amount of energy needed when reading or writing the line,
- background scrubber circuit may operate. If the system load increases such that the background scrubber's energy usage becomes problematic, the system can temporarily bait the background scrubber circuit,
- [0031J System 200 may also include an encryption / decryption controller 235.
- the encryption decryption controller may include an encryption / decryption selection circuit 237 and at least one encryption /decryption circuit 239-1...n.
- the encryption / decryption controller may be used to encrypt and decrypt lines that are stored to the memory devices.
- the encryption may hel improve security in the system. For example, as mentioned above, NVRAM may retain its contents even when power is no longer supplied. A malicious actor could physically steal one or more of storage devices 250-1 ...9. The data on these devices could then be retrieved by the malicious actor. By encrypting the data, it may be ensured that even in such a situation, the stolen devices would remain unreadable.
- the controller 235 may include an encryption / decryption selection circuit.
- the encryption / decryption selection circuit 237 may be responsible for dividing up a data block into smaller blocks of a fixed size, in some cases, the smaller blocks may be padded with a value, such as 0.
- the circuit 237 may be used to divide up the block and pad as needed. Operation of the circuit 237 is described in further detail below, with respect to FIG. 3 ⁇ a-e),
- T e controller 235 may also include at least one encryption / decryption circuit 239-1 ...n.
- the encryption / decryption circuit 239 may be used to encrypt / decrypt the fixed size blocks of data generated by the circuit 237. In some cases, there may be a single circuit, and blocks are encrypted / decrypted serially. In other implementations, there may be multiple circuits 239, and encryption / decryption of the fixed size blocks may occur in parallel.
- system 200 provides circuits to both encrypt and decrypt fixed size blocks of data.
- a compressed line 276a there is a compressed line 276a.
- the compressed line is also shown as line 3 in memory devices 250-1...9.
- ait 9 memory devices 250-1...9 may be read using the memory device read / write circuit.
- the data block compression / decompression circuit 215 may examine the compression metadata to determine if the line is compressed. For example, the bits taken from the ECC bytes above may be examined to determine if the b!ock is compressed.
- the ECC generation / validation circuit 220 may validate the line 276b by determining if the ECC indicates there are any errors, tf no errors are present, the uncompressed iine 278c may be sent out of the memory controller as indicated by the data block out arrow.
- the data block compression / decompression circuit 215 may examine the compression header metadata that was appended to the compressed line to determine how the Sine was compressed. The line may be padded based on the compression header and the ECC validated. If the line is valid the circuit 215 may
- uncompressed data block 278c may be sent as the data block out.
- FIGS. 3(a-c) depict examples of write / ' read patterns in
- FIGS. 3 ⁇ a-c) continue wit the examples that were started in FIGS. 1 and 2.
- FIG. 3a depicts the encryption process. For example, assume that an uncompressible block of data 377a is received. As should be understood, not ail data blocks are able to be compressed. The case of a compressible data block is described further below.
- the encryption / decryption controller 235 may be used to encrypt the data block,
- the encryption / decryption selection circuit 237 may divide the data block 377a into fixed size units.
- the fixed size units may be 16 bytes each, resulting in the 64 byte data block being divided into 4 fixed size encryption blocks.
- the encryption / decryption circuit ⁇ s) 239-1 ...n may then encrypt each of the fixed size blocks 377b, As mentioned above, if multiple encryption circuits ar provided, the encryption of each block may occur in parallel.
- the techniques described herein are also suitable for use with a single encryption circuit, wherein the blocks are serially encrypted.
- the ECC generation / validation circuit 220 may then generate an ECC to ensure that the Sine contains no errors.
- the ECC may be appended to the Sine 377c and the Sine stored in the memory devices. As indicated, because no compression was done, all memory devices are written and there is no saving of write energy. The process of decrypiing the Sine is described in furthe detail below.
- FIG. 3b depicts an example of receiving a compressible block of data, compressing the block, encrypting the block, decrypting the block, decompressing the block, and returning the original compressible block.
- a compressible block of data 378a may be received.
- the data block compression / decompression circuit 215 may be used to compress the data block and append a compression header 378b.
- the compression header 378b may be used to compress the data block and append a compression header 378b.
- compressed data block and header is shown as being 36 bytes Song.
- the encryption / decryption selection circuit 237 may then divide the compressed block into fixed sized encryption units 378c.
- the fixed size encryption units may b 18 bytes long.
- the compressed block may be divided into a first complete encrypt block for bytes 0-15 and a second complete encrypt block for bytes 8-31.
- the remaining bytes, 32-35 may then be padded (e.g. padded with zeroes) to result in a third encrypt block spanning bytes 32-47. It should be noted that no data is being stored in bytes 48-63, Blocks may then be encrypted by the encryption / decryption circuits 239-1...n.
- the energy used in the encryption process may be reduced because the total number of blocks to be encrypted has been reduced. For example, unlike the case above with the uncompressible block where 4 blocks were encrypted, here, only 3 blocks are encrypted. Thus the energy used by the encryption blocks may be saved.
- the ECC generation validation circuit 220 may then generate an ECC to protect the line. For example, a 18 byte block of zeroes may be appended to the 3 encrypted blocks. An ECC may be generated and appended to the Sine 378d. The line may then be written to the memory devices by the memory device read / write circuit 225.
- the mechanism for decrypting and decompressing the data is slightly different than that which was described above. For example, previously, some spare bits in the ECC bytes may have been used to identify if the block was compressed or not. If it was compressed, the compression header could be examined. However, this examination does not work in cases where the line is encrypted, because the compression heade would be unreadable (e.g. it is encrypted). In other words, even if there were bits available in the ECC bytes to indicate the line was encrypted, the
- the ECC may use all the available bytes and no spare bits may be available to determine if the line is encrypted.
- a compressed line may result in either 1, 2, 3 or 4 encrypted blocks.
- An uncompressed line results in 4 encrypted blocks.
- an ECC is generated for the Sine, padding with zeroes as needed.
- the ECC generation / validation circuit 220 may attempt to validate the Sine under each of the four possible scenarios. As shown in 378e, the four possibilities may be 1 ⁇ one encrypted block, three pad blocks 2) two encrypted blocks, two pad blocks, 3 ⁇ three encrypted block, one pad block, and 4) four encrypted blocks. With selection of the right ECC it is highly unlikely that more than one of the four possibilities described above would be properly validated by the ECC. Thus, of the four possibilities, the one that is successfully validated determines how many encrypted blocks are present.
- the encryption / decryption selection circuit 237 may be made aware of how many encrypted blocks are in the line. The selection circuit may then caus the decryption circuits 239-1.,, n to decrypt the determined number of encrypted blocks. Just as above in the encryption process, because a reduced number of decryptions may need to be performed , the energy used in decrypting ma be reduced.
- the encrypt / decrypt circuits 239-1...n may then be used to decrypt the number of blocks 378f determined by the selection circuit 237.
- the compressed block 378g is recovered.
- the compression header is no longer encrypted, and can be retrieved from the compressed block.
- the data block compression / decompression circuit 215 may then be used to decompress the compressed block back to the original compressible biock 378h. This step further confirms the size of the biock estimated by the ECC validation circuitry.
- FIG. 3c describes an alternative mechanism to determine if a block has been compressed.
- some ECCs may utilize ail available space, leaving no bits available to indicate if a block is compressed or not.
- An alternative mechanism for determining the compression status of a data biock may make use of an invalid ECC,
- a compressible block 379a may be received.
- the compressible block may be compressed.
- the compressed block including compression header
- a valid ECC covering those 40 bytes may then be generated and appended to the compressed block.
- the valid ECC may be generated fay either padding out the compressed biock to the size needed by the ECC generation circuit 220. For example, if the ECC generation circuit expects a 64 byte block, then the compressed biock can be padded with zeroes, in the alternative, an ECC that does not depend on a specific block size may be generated and data regarding the generation placed in the compression header.
- An invalid ECC may then be generated.
- the invalid ECC may be guaranteed to fail.
- the compressed block e.g. bytes 0-40
- the valid ECC e.g. bytes 41-48
- unused devices e.g. bytes 49-63
- the invalid ECC may be stored as a line 379b, in cases where some compression was possible. In cases where no compression is possible, the ECC generated would be the valid ECC to cover the full data block.
- the line containing the data is first read from ai! memory devices in the rank.
- the ECC validation circuit 220 attempts to validate the line, if the validation is successful, It means the iine was uncompressed, and the data block can be sent out. However, if the ECC vaSidation fails, it may mean that the lin is compressed.
- the compression header may then be examined (perhaps after decryption) to determine how the tine was compressed, where the valid ECC is located within the Sine, and how that ECC was generated 379c.
- the block may then be decompressed and validated using the valid ECC.
- the original uncompressed block may then be sent out
- FIG, 4 depicts an example high level flow diagram of the data writing techniques described herein.
- a block of data to be written to a line in a rank of memory may be received.
- the rank of memory may comprise a set of memory devices. As described above, the rank may be made up of any number of memory devices. The techniques described herein are not limited to a specific number of memory devices within a rank.
- the block of data may be compressed. As explained above, one possible compression mechanism is BDi compression. However, techniques described herein are not dependent on any particular compression mechanism.
- the compressed block of data may be written to a subset of memory devices that comprise the line. The unwritten portions of the line are not used to store valid data. By writing the compressed block of data to a subset of memory devices, the total amount of write energy is reduced.
- each line stores one line sized block of data.
- the OS does not need to consider the possibility that a single line may hold data from two separate original blocks of data.
- FIG. 5(a,b) depicts another example high level flow diagram of the data writing techniques described herein, in block 505,
- a block of data to be written may be received.
- the block of data may be compressed
- the compressed block of data may be divided into an integer number of encryption block units.
- the encryption circuit may operate on a fixed size block.
- the compressed block may be divided in accordance with the fixed size block.
- blocks may be padded if necessary to arrive at the fixed encryption block size.
- each encryption block unit may be encrypted.
- the techniques described herein are not limited to any particular type of encryption. Any encryption mechanism is suitable for use with the techniques described herein.
- meiadata indicating the result of the compression may be appended to the block of data.
- This metadata may include the compression header or may include using spare bits within the ECC to indicate if the block is compressed. As explained above, the particular type of metadata used is dependent on if extra bits are available and if encryption is being used.
- a valid ECC may be generated for the compressed block of data.
- the vaiid ECC may be used to verify a compressed iine.
- biock 535 the vaiid ECC may be appended to the compressed biock of data.
- biock 540 an invalid ECC may be generated.
- biock 545 the invalid ECC may be appended to the Sine. As mentioned above, if the ECC validation of the line fails, this may indicate that the line has been compressed.
- the compressed biock of data may be written to a subset of the memory devices that comprise the iine.
- the unwritten portions of the line may not be used to store valid data
- portions of the line that are not used to store valid data may be set to a high resistance state using a background scrubber. As described above, setting unused portions of a iine to a high resistance state may reduce the amount or energy used during a read or write of the memory devices,
- a line in a rank of memory may be read. Reading the line may include reading all memory devices that comprise the rank. In other words, ail memory devices, even those which may not be storing valid data for the line are read, in block 565, metadata indicating the result of the compression may be retrieved from a block header. As mentioned above, in the case of an unencrypted Sine, the compression header is readily available.
- an attempt to validate the line using the invalid ECC may be made.
- a validation fail may indicate that the block of data has been compressed
- the block of data may be parsed to locate the valid ECC.
- the vaiidation failure with the invalid ECC may indicate a compressed block.
- the location of the valid ECC may be determined by parsing the compression header to determine where the vaiid ECC is and how the biock was compressed.
- the line may be validated using the ECC for all possible integer numbers of encrypted units. As described above, in the case of an encrypted line, there may be a limited number of possible encrypted blocks (e.g. 1 , 2, 3, or 4).
- the validation attempts may be made on each of these limited possibilities, and a successful validation may indicate how many encrypted blocks are present. It should be understood that the above description is based on the 16 byte per encryption unit granularity. In some implementations, the determining granularity is the compression granularity. For example, the ECC check couid be performed assuming one device, two devices, and so on, up to the maximum number of devices. The ECC check that succeeds may determine how compressed the block is. In block 585 the number of encrypted units may be determined based on the successful validation.
- the determined number of encrypted units may be decrypted. As described above, by only decrypting the number of encrypted units present, the energy used for decryption may be reduced.
- the line may be decompressed based on the determined number of encrypted units.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Techniques for writing data to a subset of memory devices are described. In one aspect, a block of data to be written to a line in a rank of memory may be received. The rank of memory may comprise a set of memory devices. The block of data may be compressed. The compressed block of data may be written to a subset of the memory devices that comprise the line. The unwritten portions of the line may not be used to store valid data.
Description
DATA WRITE TO SUBSET OF MEMORY DEVICES BACKGROUND OOO13 Electronic devices, such as computers, may include memory. For example, a computer may include static random access memory (SRAM) and dynamic random access memory {DRAM}, SRAM and DRAM share the characteristic power must be continuously supplied in order to retain data stored in the memory. If the power is removed, the stored data may be lost. Another type of memory that is becoming more prevalent is non-volatile random access memor (NVRAM). NVRAM may have the characteristic that once data is stored to the NVRAM, the data remains persistent, even if power is no longer supplied to the device.
BRIEF DESCRIPTION OF THE DRAWINGS OOO23 FIG. 1 depicts an example of a deviice that may use the data writing to a subset of memory devices techniques described herein.
[0003J FIG. 2 depicts another example of a device that may use the data writing techniques described herein.
IOOO43 FIGS. 3(a~c) depict examples of write / read patterns in
accordance with the data writing techniques described herein.
[00053 FIG. 4 depicts an example high levei flow diagram of the data writing techniques described herein,
[ΟΟΟ63 f^G- 5(a,b) depicts another example high level flow diagram of the data writing techniques described herein.
DETAILED DESCRIPTION
[00073 As mentioned above, some memory components in an electronic device, such a SRAM and DRAM require power in order to maintain storage of data. Other devices, such as NVRAIV5 are able to store data without the need to continuously supply power. However, even though power is not needed to retain the persistence of the data, power is needed when the data is originally written, Currentiy existing forms of NVRAM (e.g. FLASH memory) as well as new types of NVRAM currently being developed {e.g. memristor, phase change RAM, spin torque transfer RAM) do not require the continuous supply of power in order to maintain the persistence of data stored thereon . However, these devices do use power when originally writing the data to the device. This use of power may be referred to as write energy. It should be understood that SRAM and DRAM also require write energy to store data, and as such the techniques described herein are equally applicable to SRAM and DRAM.
[0008] Many electronic devices, such as computers, include a memory controller to manage storing and retrieving data from memory. The memory controller may not individually read and write bytes of data from the memory. Rather, the memory controller ma operate on groups of bytes, referred to as a tine of data. For example, in a computer, memory is typically operated on in units equivalent to the size of a cacheline in the processor. For example, if a processor has a cacheline size of 64 bytes, the memory controller may receive / provide data to the processor in units of 64 bytes. However, techniques described herein are not limited to any particular cacheline size. For the remainder of this description a line may refer to a data block that is provided to the memory controller to be written to memory or is provided by the memory for use by the electronic device. The techniques described herein are not limited to any particular line size.
[00093 Th& memory may be divided across several memory devices which may be referred to as a rank. For example, for a given line, the memory devices that store the data that make up the line are all in the same rank. A rank of memory devices may store multiple lines. For example, for a 64 byte fine, there may be 9 memor devices in the rank. Each of the first 8 memory
devices (e.g. a memory chip) may store 8 bytes of the line. The 9 memory device may be used to store an Error Correction Code (ECO The nine memory devices that make up the rank may store large numbers of lines.
Although a specific example of a rank of memory is described, it should be understood that the techniques described herein are not limited to any particular layout of memory devices in a rank.
[0010] The techniques described herein provide for receiving a iine of data to be written to memory. The Sine may be examined to determine if the iine can be compressed, if so, the Sine may be compressed, and a header describing the compression may be added to the iine. An ECC for the overall tine may be calculated. The compression may result in fewer than the total number of memory devices within the rank being needed to store the
compressed Sine. As such, the memory devices that are not needed are not written, thus saving the write energy that would have otherwise been used to write to those devices. In some cases the data may be encrypted prior to being written to the memory devices.
[0011 J The line that is stored may contain the data needed to determine if the line is compressed, and if so, how the line should be decompressed. For example, if the ECC does not use ail bits available on the ECC storage device for the line, then the extra bits may be used to indicate if the line is compressed or not. In other implementations, different techniques, described below, may be used to determine if the line is compressed. When the data is to be read, it may be determined if the line is encrypted and/or compressed. The line may then be decrypted and/or decompressed and provided to the requestor.
[0012J The techniques described herein are Operating System (OS) independent and as such the OS is not required to have any knowledge of the compression occurring in the memory system. In other words the techniques described herein are completely transparent to the OS, applications, or other software running on the system. No OS, application, or other code modification is required.
[00 3J F!G. 1 depicts an example of a device that may use the data writing to a subset of memory devices techniques described herein. System
100 may inciude a memory controller 110 coupied to a plurality of memory devices 150-1 9 Although 9 memory devices are depicted, it should be understood that this is to aid in the description. The techniques described herein are not limited to any particular number of memory devices.
[0014] The memory contro!ier 110 may be a device that is a standalone device, or it may be integrated within a larger device (e.g., a processor, part of a chipset). Th techniques described herein are not limited to any particular implementation. The memory controller may include a data block compression circuit 115, and ECC generation circuit 120, and a memory device write circuit 125. The memory controlier and each of these circuits may be implemented as hardware circuits, or as a combination of hardware circuits and instructions readabie and executable by the hardware circuits. For example, the memory controller may be implemented as logic on an integrated circuit, as an application specific integrated circuit (ASIC), as an FPGA, or in any other suitable manner.
|0015J The data block compression circuit may be a circuit to receive a biock of data and compress that biock of data. For example, the compression circuit may implement Base Delta Immediate (BDl) compression, which may allow a 64 byte data biock to be compressed to a data block ranging from 0 to 84 bytes. Although a specific compression technique has been mentioned, the techniques described herein are not limited to any specific compression mechanism.
[0016] A block that cannot be compressed may be stored in raw form. A biock that can be compressed may have a compression heade generated by th compression circuit 115. The compression header may contain information that may be used to later assist in decompression. For example, the compression may indicate the process that was used to compress the data block and how that data biock can be decompressed.
[0017J The ECC generation circuit 120 may be circuitry used to calculate an ECC for the biock of data. The ECC may be used to determine if there has been an error in the data. Many ECCs can be used to correct for single bit errors and detect multiple bit errors, in some implementations, as will be
described in further detail beiow, the ECC may be used to determine if the data block has been compressed. In the example being described, there are 8 bytes provided fo an ECC. If the ECC being used does not use all 8 bytes, one or more bits may be used to indicate that the data block is compressed. The ECC generation circuit may insert those bits into the ECC in such implementations. These bits may be referred to as compression metadata. However, if the ECC uses all 8 bytes, an alternate mechanism for determining if the data block is encrypted is described below, with respect to FIG. 3.
£00183 The memory device write circuit 125 may be used to write bytes of data to memory devices. For example, the memory device write circuit may be coupled to memory devices that make up a rank of memory. When it is desired to write a line of data to the rank of memory, the memory device write circuit may write the line to th individual memory devices that make up the rank,
[00193 The system 100 may also include a plurality of memory devices 150-1...9 that make up a memory rank. System 100 is shown with a memory rank made up of 9 devices, however, it should be understood that this is for purposes of ease of description and not by way of limitation. The techniques described herein are suitable for use with memory ranks comprising any number of memory devices.
|0020| Each memory device may store a particular range of bytes for a given line. For example, memor device 150-1 may store bytes 0-7 for each line, memory device 150-2 may store bytes 8-15, and so on. The rank of memor may store any number of lines, as is shown by lines 1-n. The techniques described herein are not limited to ranks storing any particular number of lines. What should be understood is that a rank of memory may store many Sines, and an individual memory device within the rank may store a portion of each iine.
[00213 In operation, a request to write a block of data may be received by the memory controller. This is depicted by the "DATA BLOCK IN" arrow. At a high level, there are two possibilities when it comes to compressing a block of data. The block is either compressible or it is not compressible. Each of these two situations is now described.
[0022] Assume the received iock of data 175 is not compressible. As such, the data block compression circuit is not able to compress the data b!ock. As mentioned above, uncompressibie data blocks are stored in their raw form, in this case, the block of data is 64 bytes long and may be store uncompressed. The ECC generation circuit may generate an ECC over the 64 bytes and the ECC is appended to the line. The memory device write may then receive the uncompressed data block as wei! as the appended ECC and write the line to memory devices 150-1 , , ,9, As indicated by the matching hashes, the block of data 175 is show as being written to line 1 within the memory devices, it should be noted that is such cases, each memory device is written to, and as such write energy is used for writing to all 9 memory devices.
[0023J tn the second case, the received block of data 176 may be compressible, in the example, assume that the compression circuit 1 5 is able to compress the data block to a smaller number of bytes. The compression circuit may then append a compression header to the compressed bytes. The compression header may be described as metadata that describes the compression. As shown by the hashes on line 176, assume that the
compressed data and compression header uses bytes 0-23 (24 bytes totai). The ECC may then generate and ECC covering the 24 bytes of compression header and data plus 40 bytes of padding.
[0024] The memory device write circuit may then write the compressed line to the memory devices. As shown, memory devices 150-1 -3 in Sine 3 of the memor devices may be used to store the compression header and
compressed data. The generated ECC may be stored in memory device 50-9, However, it is not necessary to write any data to memory devices 150-4-8, as indicated by the blacked out boxes. In comparison to the uncompressed case described above, oniy 4 memory devices instead of 9 are written to. As mentioned above, each write to a memory device requires write energy. By reducing the total number of memory devices written to, compression enabies a reduction In the total amount of write energy needed to write a line of data. |002SJ In addition to reducing the amount of write energy needed, the techniques described herein a!so provide for a mechanism to reduce the
amount of read energy needed when reading a line of data. This technique is described in further detai! below, but what should be understood for now is that the portions of the Sine not written (e.g. the portions in biack) are not use io store valid data. In other words, the portions of each line in biack remain unused, 0026| FIG. 2 depicts another example of a device that may use the data writing techniques described herein. Many of the elements of FIG. 2 are very similar to the elements in FIG. 1 and are similarly numbered. For ease of description, the description of those elements is not dup!icated. System 200 may include a memory controller 220, which is very similar io memory coniroiler 1 10. The memory controller may include a data block compression / decompression circuit 215, an ECC generation / validation circuit 220, a memory device write circuit 225, a background scrubber circuit 230, and an encryption / decryption controller 235, System 200 may also include memory devices 250-1 ...9, which ar essentially the same as those described with respect to FiG. ,
|0O27J Data block compression / decompression circuit 215 performs a similar function to the similarly numbered element in F!G. 1 . !n addition, circuit 215 ma aiso perform decompression. For example, the circuit may use the compression header contained in a compressed line and use that information in order to decompress the compressed Sine back into the uncompressed block. Aiihough circuit 215 is depicted as a single circuit performing both compression and decompression, it should be understood that this is only an example implementation. Other implementations may use different circuit to perform these functions,
[00281 System 200 may also include ECC generation / validation circuit 220. As above with respect to element 20, circuit 220 may generate an ECC to ensure ihat a line does not contain errors. Circuit 220 may also include functionality to validate the ECC, Circuit 220 may examine a line of data and validate that the ECC indicates that there are no errors in the line. As above, aiihough depicted as a single generate / validate circuit, this is only an example implementation. Other implementations may use different circuits for each of these functions.
[00293 System 200 may also inciude a memory device read / write circuit 225. The memory device read /write circuit ma be very similar to the equivalent circuit in FIG. 1 , with the exception that the memory devices can be both read and written. The description is not repeated here. System 200 may also include a background scrubber circuit 230. The background scrubber circuit may examine the memory devices 250-1...9 as a task that runs continuously in the background, setting unused portions of iines to a high resistance state. As mentioned above, some portions of lines may remain unused (e.g. the black boxes). For some memory technologies (e.g.
memristor), the amount of read energy used is dependent on the values stored at the designated location, and in the same array. Reads and writes to arrays with more high resistance values may require less energy to perform the read or write. For memory devices storing unused portions of the line, setting the resistance value to a high state reduces the amount of energy needed when reading or writing the line,
[0030] Although additional write energy is used when setting the memory devices to the high resistance states, this energy can be expended at a time that is convenient for the system. For example, assume f at over a period of time there are a large number of memory writes. During such periods, reducing the overall amount of write energy would be useful, as reduction of energy usage in a system may be he!pfu!. For example, reduction in energy usage may allow the system fo remain below power usage caps. Thus, omitting the writes to unused devices would be helpful in ensuring the system stays within operating parameters {e.g. total energy usage). However, at a later time, there may not be many writes occurring. During these periods of time, the
background scrubber circuit may operate. If the system load increases such that the background scrubber's energy usage becomes problematic, the system can temporarily bait the background scrubber circuit,
[0031J System 200 may also include an encryption / decryption controller 235. The encryption decryption controller may include an encryption / decryption selection circuit 237 and at least one encryption /decryption circuit 239-1...n. The encryption / decryption controller may be used to encrypt and
decrypt lines that are stored to the memory devices. The encryption may hel improve security in the system. For example, as mentioned above, NVRAM may retain its contents even when power is no longer supplied. A malicious actor could physically steal one or more of storage devices 250-1 ...9. The data on these devices could then be retrieved by the malicious actor. By encrypting the data, it may be ensured that even in such a situation, the stolen devices would remain unreadable.
[0032] The controller 235 may include an encryption / decryption selection circuit. The encryption / decryption selection circuit 237 may be responsible for dividing up a data block into smaller blocks of a fixed size, in some cases, the smaller blocks may be padded with a value, such as 0. The circuit 237 may be used to divide up the block and pad as needed. Operation of the circuit 237 is described in further detail below, with respect to FIG. 3{a-e),
[00333 T e controller 235 may also include at least one encryption / decryption circuit 239-1 ...n. The encryption / decryption circuit 239 may be used to encrypt / decrypt the fixed size blocks of data generated by the circuit 237. In some cases, there may be a single circuit, and blocks are encrypted / decrypted serially. In other implementations, there may be multiple circuits 239, and encryption / decryption of the fixed size blocks may occur in parallel.
Furthermore, although shown as a combined encryption / decryption circuit, it should be understood that this functionality may be divided into separate encrypt and decrypt circuits. What should be understood is that system 200 provides circuits to both encrypt and decrypt fixed size blocks of data.
[0034] Operation of system 200 will be described with reference to several examples. These examples will generally start with an uncompressed block of data, and wiil move through the process of compression, encryption, decryption, and decompression. However, every example, will not include every stage,
[0035] Continuing with example 176 from FIG. 1 , assume that there is a compressed line 276a. The compressed line is also shown as line 3 in memory devices 250-1...9. In order to read the line, ait 9 memory devices 250-1...9 may be read using the memory device read / write circuit. The data block
compression / decompression circuit 215 may examine the compression metadata to determine if the line is compressed. For example, the bits taken from the ECC bytes above may be examined to determine if the b!ock is compressed. If the iine is not compressed, the ECC generation / validation circuit 220 may validate the line 276b by determining if the ECC indicates there are any errors, tf no errors are present, the uncompressed iine 278c may be sent out of the memory controller as indicated by the data block out arrow. |0036] However, if it is determined that the iine is compressed, the data block compression / decompression circuit 215 may examine the compression header metadata that was appended to the compressed line to determine how the Sine was compressed. The line may be padded based on the compression header and the ECC validated. If the line is valid the circuit 215 may
decompress the line, resulting in an uncompressed line 276c. The
uncompressed data block 278c may be sent as the data block out.
[0037] FIGS. 3(a-c) depict examples of write /' read patterns in
accordance with the data writing techniques described herein. FIGS. 3{a-c) continue wit the examples that were started in FIGS. 1 and 2. FIG. 3a depicts the encryption process. For example, assume that an uncompressible block of data 377a is received. As should be understood, not ail data blocks are able to be compressed. The case of a compressible data block is described further below. The encryption / decryption controller 235 may be used to encrypt the data block,
[0038] The encryption / decryption selection circuit 237 may divide the data block 377a into fixed size units. For example, the fixed size units may be 16 bytes each, resulting in the 64 byte data block being divided into 4 fixed size encryption blocks. The encryption / decryption circuit{s) 239-1 ...n may then encrypt each of the fixed size blocks 377b, As mentioned above, if multiple encryption circuits ar provided, the encryption of each block may occur in parallel. However, the techniques described herein are also suitable for use with a single encryption circuit, wherein the blocks are serially encrypted.
[0039] The ECC generation / validation circuit 220 may then generate an ECC to ensure that the Sine contains no errors. The ECC may be appended to
the Sine 377c and the Sine stored in the memory devices. As indicated, because no compression was done, all memory devices are written and there is no saving of write energy. The process of decrypiing the Sine is described in furthe detail below.
[0040] FIG. 3b depicts an example of receiving a compressible block of data, compressing the block, encrypting the block, decrypting the block, decompressing the block, and returning the original compressible block. As shown, a compressible block of data 378a may be received. The data block compression / decompression circuit 215 may be used to compress the data block and append a compression header 378b. In this example, the
compressed data block and header is shown as being 36 bytes Song.
[00411 The encryption / decryption selection circuit 237 may then divide the compressed block into fixed sized encryption units 378c. For example, the fixed size encryption units may b 18 bytes long. As shown, the compressed block may be divided into a first complete encrypt block for bytes 0-15 and a second complete encrypt block for bytes 8-31. The remaining bytes, 32-35 may then be padded (e.g. padded with zeroes) to result in a third encrypt block spanning bytes 32-47. It should be noted that no data is being stored in bytes 48-63, Blocks may then be encrypted by the encryption / decryption circuits 239-1...n. St should be noted that the energy used in the encryption process may be reduced because the total number of blocks to be encrypted has been reduced. For example, unlike the case above with the uncompressible block where 4 blocks were encrypted, here, only 3 blocks are encrypted. Thus the energy used by the encryption blocks may be saved.
[0042J The ECC generation validation circuit 220 may then generate an ECC to protect the line. For example, a 18 byte block of zeroes may be appended to the 3 encrypted blocks. An ECC may be generated and appended to the Sine 378d. The line may then be written to the memory devices by the memory device read / write circuit 225.
[0043] When encryption is performed, the mechanism for decrypting and decompressing the data is slightly different than that which was described above. For example, previously, some spare bits in the ECC bytes may have
been used to identify if the block was compressed or not. If it was compressed, the compression header could be examined. However, this examination does not work in cases where the line is encrypted, because the compression heade would be unreadable (e.g. it is encrypted). In other words, even if there were bits available in the ECC bytes to indicate the line was encrypted, the
compression header could not be deciphered to determine how to decrypt the block. In addition, in some cases, the ECC may use all the available bytes and no spare bits may be available to determine if the line is encrypted.
[0044] In the current example, where a line is 84 bytes long, and the encryption block fixed size is 18 bytes, a compressed line may result in either 1, 2, 3 or 4 encrypted blocks. An uncompressed line results in 4 encrypted blocks. Thus, there are a finite number of bytes that are used. As mentioned above, an ECC is generated for the Sine, padding with zeroes as needed. The ECC generation / validation circuit 220 may attempt to validate the Sine under each of the four possible scenarios. As shown in 378e, the four possibilities may be 1} one encrypted block, three pad blocks 2) two encrypted blocks, two pad blocks, 3} three encrypted block, one pad block, and 4) four encrypted blocks. With selection of the right ECC it is highly unlikely that more than one of the four possibilities described above would be properly validated by the ECC. Thus, of the four possibilities, the one that is successfully validated determines how many encrypted blocks are present.
[0045J After the validation, the encryption / decryption selection circuit 237 may be made aware of how many encrypted blocks are in the line. The selection circuit may then caus the decryption circuits 239-1.,, n to decrypt the determined number of encrypted blocks. Just as above in the encryption process, because a reduced number of decryptions may need to be performed , the energy used in decrypting ma be reduced.
f0046| The encrypt / decrypt circuits 239-1...n may then be used to decrypt the number of blocks 378f determined by the selection circuit 237.
Once the decryption is complete, the compressed block 378g is recovered.. At this point, the compression header is no longer encrypted, and can be retrieved from the compressed block. The data block compression / decompression
circuit 215 may then be used to decompress the compressed block back to the original compressible biock 378h. This step further confirms the size of the biock estimated by the ECC validation circuitry.
[Q0473 FIG. 3c describes an alternative mechanism to determine if a block has been compressed. As mentioned above, some ECCs may utilize ail available space, leaving no bits available to indicate if a block is compressed or not. An alternative mechanism for determining the compression status of a data biock may make use of an invalid ECC, Just as above, a compressible block 379a may be received. The compressible block may be compressed. For example, as shown, the compressed block (including compression header) may reside in bytes 0-40. A valid ECC covering those 40 bytes may then be generated and appended to the compressed block.
[0048] The valid ECC may be generated fay either padding out the compressed biock to the size needed by the ECC generation circuit 220. For example, if the ECC generation circuit expects a 64 byte block, then the compressed biock can be padded with zeroes, in the alternative, an ECC that does not depend on a specific block size may be generated and data regarding the generation placed in the compression header.
[00493 An invalid ECC may then be generated. The invalid ECC may be guaranteed to fail. The compressed block (e.g. bytes 0-40), the valid ECC (e.g. bytes 41-48), unused devices (e.g. bytes 49-63), and the invalid ECC may be stored as a line 379b, in cases where some compression was possible. In cases where no compression is possible, the ECC generated would be the valid ECC to cover the full data block.
[00503 When attempting to retrieve the data block, the line containing the data is first read from ai! memory devices in the rank. The ECC validation circuit 220 attempts to validate the line, if the validation is successful, It means the iine was uncompressed, and the data block can be sent out. However, if the ECC vaSidation fails, it may mean that the lin is compressed. The compression header may then be examined (perhaps after decryption) to determine how the tine was compressed, where the valid ECC is located within the Sine, and how that ECC was generated 379c. The block may then be decompressed and
validated using the valid ECC. The original uncompressed block may then be sent out
[0051 J FIG, 4 depicts an example high level flow diagram of the data writing techniques described herein. In block 410, a block of data to be written to a line in a rank of memory may be received. The rank of memory may comprise a set of memory devices. As described above, the rank may be made up of any number of memory devices. The techniques described herein are not limited to a specific number of memory devices within a rank.
£0052] In block 420, the block of data may be compressed. As explained above, one possible compression mechanism is BDi compression. However, techniques described herein are not dependent on any particular compression mechanism. In block 430, the compressed block of data may be written to a subset of memory devices that comprise the line. The unwritten portions of the line are not used to store valid data. By writing the compressed block of data to a subset of memory devices, the total amount of write energy is reduced.
Furthermore, by ensuring that the unwritten portions of the line are not used, there is no reason for the OS to be made aware of the compression. As far as the OS is concerned, each line stores one line sized block of data. The OS does not need to consider the possibility that a single line may hold data from two separate original blocks of data.
[0053] FIG. 5(a,b) depicts another example high level flow diagram of the data writing techniques described herein, in block 505, Just as above in block 410, a block of data to be written may be received.. In block 510, Just as in block 420, the block of data may be compressed, in block 515, the compressed block of data may be divided into an integer number of encryption block units. As explained above, the encryption circuit may operate on a fixed size block. Thus, the compressed block may be divided in accordance with the fixed size block. As previously mentioned, blocks may be padded if necessary to arrive at the fixed encryption block size.
0054] In block 520, each encryption block unit may be encrypted. The techniques described herein are not limited to any particular type of encryption. Any encryption mechanism is suitable for use with the techniques described
herein. In block 525, meiadata indicating the result of the compression may be appended to the block of data. This metadata may include the compression header or may include using spare bits within the ECC to indicate if the block is compressed. As explained above, the particular type of metadata used is dependent on if extra bits are available and if encryption is being used.
|00S5J In block 530, a valid ECC may be generated for the compressed block of data. As mentioned above, the vaiid ECC may be used to verify a compressed iine. In biock 535, the vaiid ECC may be appended to the compressed biock of data. In biock 540, an invalid ECC may be generated.. In biock 545, the invalid ECC may be appended to the Sine. As mentioned above, if the ECC validation of the line fails, this may indicate that the line has been compressed.
[00S6J In block 550, the compressed biock of data may be written to a subset of the memory devices that comprise the iine. The unwritten portions of the line may not be used to store valid data, in block 555, portions of the line that are not used to store valid data may be set to a high resistance state using a background scrubber. As described above, setting unused portions of a iine to a high resistance state may reduce the amount or energy used during a read or write of the memory devices,
£00573 In block 560, a line in a rank of memory may be read. Reading the line may include reading all memory devices that comprise the rank. In other words, ail memory devices, even those which may not be storing valid data for the line are read, in block 565, metadata indicating the result of the compression may be retrieved from a block header. As mentioned above, in the case of an unencrypted Sine, the compression header is readily available.
[00583 In block 570, an attempt to validate the line using the invalid ECC may be made. A validation fail may indicate that the block of data has been compressed, in block 575, the block of data may be parsed to locate the valid ECC. As mentioned above, the vaiidation failure with the invalid ECC may indicate a compressed block. The location of the valid ECC may be determined by parsing the compression header to determine where the vaiid ECC is and how the biock was compressed.
[00593 In block 580, the line may be validated using the ECC for all possible integer numbers of encrypted units. As described above, in the case of an encrypted line, there may be a limited number of possible encrypted blocks (e.g. 1 , 2, 3, or 4). The validation attempts may be made on each of these limited possibilities, and a successful validation may indicate how many encrypted blocks are present. It should be understood that the above description is based on the 16 byte per encryption unit granularity. In some implementations, the determining granularity is the compression granularity. For example, the ECC check couid be performed assuming one device, two devices, and so on, up to the maximum number of devices. The ECC check that succeeds may determine how compressed the block is. In block 585 the number of encrypted units may be determined based on the successful validation.
[00603 In block 590, the determined number of encrypted units may be decrypted. As described above, by only decrypting the number of encrypted units present, the energy used for decryption may be reduced. In block 595, the line may be decompressed based on the determined number of encrypted units.
Claims
1. A method comprising:
receiving a b!ock of data to be written to a Sine in a rank of memory, the rank comprising a set of memory devices;
compressing the block of data; and
writing the compressed block of data to a subset of the memory devices that comprise the Sine;
wherein the unwritten portions of the iine are not used to store valid data.
2. The method of claim 1 further comprising:
setting portions of the iine that are not used to store valid data to a high resistance state using a background scrubber.
3. The method of ciaim 1 further comprising;
reading the line in the rank of memory, wherein reading the iine inciudes reading ai! memory devices that comprise the rank; and
decompressing the iine,
4. The method of ciaim 1 further comprising:
dividing the compressed block of data into an integer number of encryption block units; and
encrypting each encryption biock unit.
5. The method of ciaim 4 wherein the metadata inciudes ao error correction code (ECC) calculated based on the number of encrypted block units.
6. The method of c!aim 5 further comprising;
attempting to validate the iine using the ECC for ail possible integer numbers of encrypted biock units;
determining the number of encrypted units based on a successful validation;
decrypting trie determined number of encrypted units; and
decompressing the line based on the determined number of encrypted units.
7. The method of claim 1 further comprising:
appending metadata indicating the result of the compression to the b!ock of data.
8. The method of claim 1 further comprising:
generating a vaiid Error Correction Code (ECC) for the compressed block of data;
appending the vaiid ECC to the compressed block of data;
generating an invalid ECC; and
appending the invalid ECC to the Sine,
9. The method of claim 8 further comprising:
reading the line from the set of memory devices;
attempting to validate the iine using the invalid ECC, wherein a validation fail indicates the block of data has been compressed;
parsing the block of data to locate the vaiid ECC; and
retrieving metadata indicating the result of the compression from a biock header.
10. A device comprising;
a data biock compression circuit to compress a biock of data and append a compression header to the compressed block of data;
an error correction code (ECC) generation circuit to generate an ECC for the block of data; and
a memory device write circuit to write the compressed data block and the generated ECC to a line in a memory rank, wherein the rank comprises a set of memory devices, and the memory device write circuit writes the line to a subset
of the memory devices, wherein the portions of the line on unwritten memor devices are not used to store valid data.
11. The device of ciaim 10 further comprising;
a plurality of encryption circuits, each encryption circuit to encrypt a fixed number of bytes; and
an encryption selection circuit to determine the number of encryption circuits needed to encrypt the compressed biock of data, further to send the compressed biock of data to the determined number of encryption circuits.
12. The device of ciaim 11 further comprising:
a piurality of decryption circuits, each decryption circuit to decrypt a fixed number of bytes; and
a decryption selection circuit to determine the number of decryption circuits needed to decrypt the compressed biock of data.
13. The device of claim 10 further comprising;
a scrubber circuit to set the portions of the line on unwritten memory devices not used to store valid data to a high resistanc state,
14. A system comprising:
a rank of memory, the rank of memory comprising a piurality of memory devices; and
a memory controller to compress a Sine of data; and
the memory controller to further write the compressed line of data to a subset of the memory devices comprising the rank, wherein unwritten memory devices for the line are not used to store valid data,
15. The system of claim 14 further comprising:
an encryption controller to encrypt/decrypt the compressed tine; and a background scrubber to set unused portions of the line to a high resistance state.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2015/019180 WO2016144291A1 (en) | 2015-03-06 | 2015-03-06 | Data write to subset of memory devices |
| US15/500,460 US10303622B2 (en) | 2015-03-06 | 2015-03-06 | Data write to subset of memory devices |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2015/019180 WO2016144291A1 (en) | 2015-03-06 | 2015-03-06 | Data write to subset of memory devices |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2016144291A1 true WO2016144291A1 (en) | 2016-09-15 |
Family
ID=56878766
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2015/019180 Ceased WO2016144291A1 (en) | 2015-03-06 | 2015-03-06 | Data write to subset of memory devices |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10303622B2 (en) |
| WO (1) | WO2016144291A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190278525A1 (en) * | 2015-12-24 | 2019-09-12 | Intel Corporation | Techniques for data storage protection and integrity checking |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
| US10503661B2 (en) * | 2014-05-21 | 2019-12-10 | Qualcomm Incorporated | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system |
| DE102015114544A1 (en) * | 2015-08-31 | 2017-03-02 | Uniscon Universal Identity Control Gmbh | Method for secure and efficient access to connection data |
| US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
| US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
| US10698732B2 (en) | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
| US10474557B2 (en) | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
| US10452539B2 (en) * | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
| US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
| US11977484B2 (en) * | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
| US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
| US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
| US10715175B2 (en) * | 2017-08-28 | 2020-07-14 | Tesla, Inc. | Systems and methods for encoding and decoding |
| US10831935B2 (en) * | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
| US11307841B2 (en) * | 2019-07-30 | 2022-04-19 | Sony Interactive Entertainment LLC | Application patching using variable-sized units |
| US12572474B2 (en) * | 2022-12-28 | 2026-03-10 | Advanced Micro Devices, Inc. | Sparsity compression for increased cache capacity |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011020902A1 (en) * | 2009-08-21 | 2011-02-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus and computer program for memory retention |
| US20110320913A1 (en) * | 2010-06-28 | 2011-12-29 | Henry Stracovsky | Reliability support in memory systems without error correcting code support |
| US20130117630A1 (en) * | 2011-11-04 | 2013-05-09 | Nam-wook Kang | Method of enhancing error correction performance and storage device using the method |
| US20140101514A1 (en) * | 2012-10-08 | 2014-04-10 | Samsung Electronics Co., Ltd | Method of performing write operation or read operation in memory system and system thereof |
| US20150067436A1 (en) * | 2013-09-03 | 2015-03-05 | Sandisk Technologies Inc. | Nonvolatile Memory System Compression |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6295618B1 (en) | 1998-08-25 | 2001-09-25 | Micron Technology, Inc. | Method and apparatus for data compression in memory devices |
| US7386663B2 (en) * | 2004-05-13 | 2008-06-10 | Cousins Robert E | Transaction-based storage system and method that uses variable sized objects to store data |
| CN100495963C (en) * | 2006-09-23 | 2009-06-03 | 西安西电捷通无线网络通信有限公司 | A method for obtaining and verifying the state of a public key certificate |
| US8117137B2 (en) | 2007-04-19 | 2012-02-14 | Microsoft Corporation | Field-programmable gate array based accelerator system |
| US7747903B2 (en) * | 2007-07-09 | 2010-06-29 | Micron Technology, Inc. | Error correction for memory |
| JP2011128792A (en) | 2009-12-16 | 2011-06-30 | Toshiba Corp | Memory management device |
| US8661184B2 (en) * | 2010-01-27 | 2014-02-25 | Fusion-Io, Inc. | Managing non-volatile media |
| US8380915B2 (en) * | 2010-01-27 | 2013-02-19 | Fusion-Io, Inc. | Apparatus, system, and method for managing solid-state storage media |
| US20110307471A1 (en) | 2010-06-09 | 2011-12-15 | International Business Machines Corporation | Accelerating Database Management System Operations |
| US9063663B2 (en) * | 2010-09-21 | 2015-06-23 | Hitachi, Ltd. | Semiconductor storage device and data control method thereof |
| WO2012082880A1 (en) | 2010-12-14 | 2012-06-21 | University Of Massachusetts | Methods and systems for low-power storage |
| KR101759658B1 (en) * | 2011-02-23 | 2017-07-19 | 삼성전자 주식회사 | Memory device and memory system |
| US10380022B2 (en) * | 2011-07-28 | 2019-08-13 | Netlist, Inc. | Hybrid memory module and system and method of operating the same |
| US9652470B2 (en) * | 2013-07-01 | 2017-05-16 | International Business Machines Corporation | Storing data in a dispersed storage network |
| US20150039660A1 (en) * | 2013-07-31 | 2015-02-05 | Cleversafe, Inc. | Co-locate objects request |
| US9594639B2 (en) * | 2014-01-06 | 2017-03-14 | International Business Machines Corporation | Configuring storage resources of a dispersed storage network |
-
2015
- 2015-03-06 WO PCT/US2015/019180 patent/WO2016144291A1/en not_active Ceased
- 2015-03-06 US US15/500,460 patent/US10303622B2/en active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011020902A1 (en) * | 2009-08-21 | 2011-02-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus and computer program for memory retention |
| US20110320913A1 (en) * | 2010-06-28 | 2011-12-29 | Henry Stracovsky | Reliability support in memory systems without error correcting code support |
| US20130117630A1 (en) * | 2011-11-04 | 2013-05-09 | Nam-wook Kang | Method of enhancing error correction performance and storage device using the method |
| US20140101514A1 (en) * | 2012-10-08 | 2014-04-10 | Samsung Electronics Co., Ltd | Method of performing write operation or read operation in memory system and system thereof |
| US20150067436A1 (en) * | 2013-09-03 | 2015-03-05 | Sandisk Technologies Inc. | Nonvolatile Memory System Compression |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190278525A1 (en) * | 2015-12-24 | 2019-09-12 | Intel Corporation | Techniques for data storage protection and integrity checking |
Also Published As
| Publication number | Publication date |
|---|---|
| US10303622B2 (en) | 2019-05-28 |
| US20170220488A1 (en) | 2017-08-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2016144291A1 (en) | Data write to subset of memory devices | |
| US10620861B2 (en) | Retrieve data block from determined devices | |
| US12032676B2 (en) | Secure hardware signature and related methods and applications | |
| US10254988B2 (en) | Memory device write based on mapping | |
| US12386651B2 (en) | Technologies for memory replay prevention using compressive encryption | |
| EP1977511B1 (en) | Signal generator based device security | |
| US10848326B2 (en) | System and method for collision detection | |
| US7653861B2 (en) | Access control apparatus, access control system, processor, access control method, memory access control apparatus, memory access control system, and memory access control method | |
| CN113806134A (en) | Aggregated GHASH-based message authentication code over multiple cache lines with incremental updates | |
| US12222803B2 (en) | Intra-controllers for error correction code | |
| CN112887077A (en) | Random cache security method and circuit for SSD (solid State disk) master control chip | |
| US20240007265A1 (en) | Data authenticity and integrity check for data security schemes | |
| CN213876729U (en) | A random cache security circuit for SSD main control chip | |
| WO2016195702A1 (en) | Compressed data block mapping | |
| US20240004807A1 (en) | Memory apparatus for providing reliability, availability, and serviceability | |
| US12072766B2 (en) | Data protection and recovery | |
| WO2016195704A1 (en) | Data block write mapped to memory bank | |
| CN120215881B (en) | Random number detection method, chip and system | |
| US12066888B2 (en) | Efficient security metadata encoding in error correcting code (ECC) memory without dedicated ECC bits | |
| US20240005010A1 (en) | Non-cached data transfer | |
| CN119806908A (en) | Power failure detection and data backup method | |
| CN116628675A (en) | Password recovery method, device, computer apparatus, storage medium and program product | |
| HK1125201B (en) | Signal generator based device security |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15884821 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 15500460 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 15884821 Country of ref document: EP Kind code of ref document: A1 |