Memories are used within computing devices to store data. For example, data is stored and accessed within computing devices such as personal computers, notebook and laptop computers, smartphones, personal digital assistants (“PDAs”), tablet and slate devices, personal entertainment devices such as MP3 players and media players, set-top boxes, gaming consoles, appliances, embedded devices, smart meters, and other computing devices at memories such as random-access memories (“RAMs”).
Typically, data stored in RAM or other memory of a computing device is accessed by a processor and some operation is performed by the processor based on the data. For example, an encryption key can be stored at a memory and a processor can access the encryption key to encrypt or decrypt a document.
The embodiments are described in detail with reference to the examples shown in the following figures:
For simplicity and illustrative purposes, the principles of the embodiments are described by referring mainly to examples thereof. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the embodiments. It is apparent that the embodiments may be practiced without limitation to all the specific details. Also, the embodiments may be used together in various combinations.
Sometimes data stored in memory does not change for literally years of operation. For example, an encryption key may be stored in the same memory locations over an extended period of time and is read many times but is never deleted or changed. When data is stored in the same memory locations over a long period of time, memory imprinting may occur due to various properties of the memory. For example, typically, memory is comprised of a semiconductor device that stores information (or data values) based on a state (e.g., a charge value, resistance value, or some other state) of the memory cells, within the memory. Due to various properties of the memory such as manufacturing processes, types and amounts of dopants, temperature, composition, or other properties, storage of data (or data values) in the same memory locations over an extended period of time can alter the physical characteristics of the memory such that the data becomes imprinted in the memory cells. As a result of this memory imprinting, the data stored in the memory cells can be determined or read even after being deleted or over-written or after volatile memory has been powered down. In other words, the memory can be susceptible to imprinting of the data. If the memory is in a computing device that was discarded after the data was deleted from the memory, an unauthorized user may still access the data from the computing device if the data was imprinted.
According to an embodiment, data values of a data set stored at various memory cells of a memory are periodically moved to other memory cells of that memory. The periodic movement of the data minimizes the possibility of memory imprinting for example by preventing the prolonged exposure of memory cells to a particular data value.
A memory for storing the data may include a bit-oriented architecture. For example, the memory may include a shift register ring comprised of a storage array of single-bit flip-flops, each to store a single bit of data. When shifting words of data through memory, the quality of the non-imprinting is related to the Hamming distance amongst all of the values. For example, if a logic 1 exists in the same position of most of the words of data, that location suffers reduced non-imprinting effectiveness if data is moved byte-by-byte to different memory locations. The shift register ring, however, may shift all the bits sequentially through the storage array and each bit carries equal effectiveness for non-imprinting, as opposed to shifting entire words byte-by-byte to different memory locations which may suffer from reduced non-imprinting effectiveness.
A microprocessor can access the memory comprised of a shift register ring through a data operation control circuit. A latch may be used to access the memory and may use two clocks to manage the shifting of data in the memory. Under quiescent conditions, a slow clock, e.g., 0.01-1.0 Hz, may be used to shift the data in the memory. A fast clock may be used to align data for data operations, such as read or write, between the memory and the microprocessor. The fast clock, which may be as fast as the circuit can handle, is used to align data to minimize wait time of the microprocessor so the data operation can be performed. In this way, both low power, but slow data shifting in the memory to avoid memory imprinting can coexist with fast, but higher power requirements, for aligning data to perform data operations.
In some implementations, the processor 110 can include multiple processors. For example, the processor 110 can be a microprocessor including multiple processing engines (e.g., computation, algorithmic or thread cores). As another example, the processor 110 can be a computing device including multiple processors with a shared clock, memory bus, input/output bus, and/or other shared resources. Furthermore, the processor 110 can be a distributed processor. For example, the processor 110 can include multiple computing devices, each including a processor, in communication one with another via a communications link such as a computer network.
The processor 110 is operatively coupled to the communications interface 120, the storage device 130, and the memory control module 140. The storage device 130 may store machine readable instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by the processor 110 during operation of computing device 100. For example, the storage device 130 includes instructions that define operating system 131, device drivers 132, and applications 133 (e.g., software application programs). In other words, the operating system 131, the device drivers 132, the applications 133, and other software modules stored as instructions (not shown) at the storage device 130 and executed at the processor 110 are hosted at the computing device 100. The applications 133 can include, for example, an application software module, a hypervisor, a virtual machine module, or an environment such as a runtime environment or virtual machine instance. As a specific example, the applications 133 can include a cryptographic service such as a file encryption application.
The storage device 130 may include volatile memory and/or non-volatile (or non-transient) memory or processor-readable medium (not shown) such as a hard disk drive (“HDD”), a solid-state drive (“SSD”), a FLASH drive, or is in communication with a data storage service (e.g., via communications interface 120 and a communications link such as a communications network) at which software applications (e.g., computer codes or instructions that implement software applications when executed at a processor), data, or combinations thereof can be stored and accessed by the processor 110. Such software applications, data, or combinations thereof can be moved or copied to the storage device 130 by the processor 110 and accessed by the processor 110 at the storage device 130 during operation of the computing device 100.
Examples of processor-readable media include, but are not limited to: magnetic storage media such as a hard disk, a floppy disk, and/or magnetic tape; optical storage media such as a compact disc (“CD”), a digital video disc (“DVDs”), a compact disc read-only memory (“CD-ROM”), and/or a holographic device; magneto-optical storage media; non-volatile memory such as read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electronically erasable read-only memory (“EEPROM”), and/or FLASH memory; and random-access memory (“RAM”). Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, and files containing higher-level instructions that are executed by a computer using an interpreter. For example, an implementation may be implemented using Java™, C++, or other object-oriented programming language and development tools. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
The communications interface 120 is comprised of one or more interfaces accessible to the processor 110 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link. In other words, the communications interface 120 can receive data from the processor 110 and transmit symbols representing the data via a communications link. Moreover, the communications interface 120 can receive symbols from other communications interfaces via a communications link and send data represented by those symbols to processor 110. For example, the communications interface 120 can be a telephone network interface, a twisted-pair network interface, a coaxial network interface, a fiber-optic network interface, a wireless network interface such as a wireless local area network (“WLAN”) or a cellular network, a universal serial bus and/or some other network or communications interface.
The memory control module 140 includes data shifting circuit 144, memory 141 and a data operation control circuit 146. An encryption key 145 is shown as stored in the memory 141 as an example of data that may be stored in the memory 141. However, any data may be stored in the memory 141. The data shifting circuit 144 includes circuitry to prevent memory imprinting at the memory 141. The data shifting circuit 144 periodically moves the key 145 (i.e., bits of key 145) within the memory 141 to prevent memory imprinting of the key 145 in the memory 141. The data operation control circuit 146 facilitates data operations between the processor 110 and the memory 141. The data operation control circuit 146 aligns data for reading or writing. Also, the data operation control circuit 146 enables and disables a fast and slow clock to perform data operations.
The memory control module 140 may be provided on the same integrated circuit as the processor 110 or the memory control module 140 may be provided on a separate integrated circuit. The memory control module 140 may be part of the computing device 100 or may be on a separate device which may be connected to the computing device 100 via the communications interface 120, such as a universal serial bus port, a network interface, etc. Also, the memory 141 may also be referred to a memory circuit. For example, the memory 141 is comprised of semiconductor devices on an integrated circuit.
The data shifting circuit 144 may include clocks 200a-b and a position indicator 201. For example, the clock 200a is a fast clock and the clock 200b is a slow clock. The fast clock 200a may be faster than the processor clock and the slow clock 200b may be multiple orders slower than the fast clock 200a. In another example, one clock may be used and the clock frequency is changed to provide a fast and slow clock. The position indicator 201 indicates the positions of bits in the shift registers as the bits are periodically shifted. In one example, the position indicator 201 comprises a counter as is further described below.
The shifting may be performed on a clock pulse generated by one or more of the clocks 200a-b, and an example of the shifting is represented in table 300 shown in
The equality circuit 211 determines whether data in the shift registers SR0-SRn is in a home position so the data operation can be performed. For example, the home position is a home position of a specific word in the shift registers being addressed, and the equality circuit 211 determines whether the word is in its home position. For example, the memory control module 140 receives an address, such as a read address or a write address, from the processor 110 for the data operation. The equality circuit 211 compares bits from the address (e.g., some of the least significant bits of the address that identify a word to be written or read) to bits from the position indicator 201 (e.g., some of the most significant bits) that identify a position of a word in the shift registers SR0-SRn. Some of the least significant bits of the address may include at least two bits but not all the bits of the address, and some of the most significant bits from the position indicator 201 may include at least two bits but not all bits output from the position indicator 201. If the value of the bits from the address and the position indicator 201 match, then the word in the shift registers SR0-SRn is in the home position and the data can be written into the shift registers SR0-SRn at one time or read from the shift registers SR0-SRn at one time. The operation of the circuits is described in further detail below.
Each flip-flop has PReset an CLear inputs, and these inputs may be active low.
The memory 141 shown in
The control logic circuit 210 controls access to the shift registers to perform data operations, such as a read or write. All the data, for example, is read from the shift registers or written to the shift registers at one time, such as at a single clock pulse. The data may comprise any bit or group of bits (e.g., word). The word size may be the native word size of the processor 110.
The control logic circuit 210 determines whether bits in the shift register are in a home position based on information from the equality circuit 211 to control the clocks 200a-b and to enable data operations. The equality circuit 211 performs a comparison from position information from the position counter 701 to information from the write address received from the write address latch to determine whether bits in the shift register are in a home position to enable a data operation. Assume 32 bits are stored in the shift registers of the memory 141. For example, there are 32 single-bit shift registers in the shift register ring of the memory 141. The bits are grouped into words, for example, having the native word size used by the processor. For example, assume the native word size of the processor 110 is 8 bits (“byte-wide”), and the shift registers of the memory 141 store four 8-bit words. In this example, the position counter 701 uses 5 bits for its output to represent the position of the bits in the 32-bit shift register, so the position counter uses bits Q0-Q4 for its output.
When the processor 110 wishes to address different bytes (words), the low-order address bits (e.g., least significant bits) of the write address select the byte in the memory 141 for the write data operation. For example, output bits Q1 and Q2 of the write address latch select the bytes in the memory 141 for the write data operation. Also, the position counter 701 provides two values. The low-order bits (Q0-Q2) of the counter 701 establish the alignment of a group of 8 bits (a byte) within the shift registers, while the remaining upper bits (e.g., most significant bits Q3-Q4) select the correct one of a plurality of aligned words in the shift register. In the position counter 701, the number of low-order bits is log2(bit width) bits. In this example, the bit width is 8 bits, so log28=3 bits. The 3 low-order bits of the position counter output are ignored. The remaining 2 upper-order bits (most significant bits) are used by the equality circuit 211 to compare to some of the address bits, and the remaining upper-order bits identify the word position in the shift registers. The same number of bits, which is 2 in this example, are used to identify the number of least significant bits in the address to compare to the most significant bits of the position counter output.
In this example, the equality circuit 211 compares the value of the upper-order bits (e.g., most significant bits Q3-Q4) of the position counter 701 with the value of the low-order bits (least significant bits Q1-Q2) of the write address latch to determine whether they are equal. When the values are equal, the XNOR outputs a “1” (e.g., logic level high) and the AND gate outputs a “1” to the “=” input in the control logic circuit 210, which means the position of bits in the shift registers is aligned with the home position for the word identified by the address latch (e.g., the words in the shift registers are in their home position and the data operation can be performed in the memory 141). When “=” is “1” the control logic circuit 210 enables the data operation. For example, the clocks 200a-b are disabled, and the /WR output is toggled to perform the write operation in the shift registers as described below.
Under normal operating conditions, the bits in the shift registers in the memory 141 are rotating through the shift registers using the slow clock 200b. A slow clock may be used because a fast clock is not necessary, and a slow clock uses less power. After the /WE signal latches the write data and its address, when /WE is released, the shift register clock switches to the fast clock 200a. The fast clock 200a may be as fast as the devices in the circuit 800 can reliably operate. The response time of the circuit 800 to the processor 110 is related to the speed of the fast clock 200a.
When the counter output matches the address desired as indicated by the output of the equality circuit 211, the (=) signal is raised to “1” to indicate the data in the shift registers has moved to correct location for writing. When the (=) signal is “1”, the fast clock 200a is stopped. This freezes the position of the data in the shift registers momentarily. With the shift register data is stopped, the data from the write data latch is loaded into the shift registers. This is controlled by a state machine clock of the control logic circuit 210. This can be any relatively fast clock in the system, and the fast clock 200a may be used.
After the data is written to the shift registers, the state machine clock produces an additional clock pulse to the write data latch to clear its data to avoid imprinting in the write data latch. Finally, after the write data latch is erased, the shift register clock is restored to the slow clock 200b, and rotating of data in the shift register continues. A logical OR of the signals (=) and Fast/Slow may be performed to provide a “busy” signal. This busy signal may be monitored to indicate to the processor 110 whether the shift registers are busy (or /idle); if busy, the shift registers are currently loading or unloading data, but if idle, an access may be made. The bottom of
The processor 110 asserts /RD to read the value. /RD may be chip select qualified similar to NVE in the write cycle. Under normal operating conditions, the shift registers rotate bits using the slow clock 200b. After the /RD signal latches the read address, when /RD is released, the shift register clock switches to the fast clock 200a. When the most significant bits of the position counter match the least significant bits of the read address, the (=) signal is asserted to indicate the data in the shift registers has moved to correct location for reading. When the (=) signal is “1”, the fast clock 200a is stopped. This freezes the position of the data in the shift registers. So far the read operation is similar to the write operation but now it becomes different. The (=) signal drives the RD signal. The RD signal takes the (now static) data from the shift register and latches it into the read data latch. Since the latch is edge triggered, once the rising edge of the RD signal has passed, the input data to the read data latch can change without affecting the data stored in the latch. After the read data latch is clocked to store the read data, the clocking for the shift registers continues using the slow clock 200b. The RD signal is held high until the processor 110 reads the read data latch again. The RD signal is sent to the processor 110 as an indicator that data is ready to be read from the read data latch. After the processor 119 reads the read data latch again, upon receiving the data, the read data latch is reset. In this example, the state machine clock is not needed for the read operation.
In another example, the state machine clock may be used for the read operation. In this example, the RD Data Ready signal is asserted by the control logic circuit 210 to indicate to the processor 110 that the data is in the read data latch. The processor 110 is in a wait state until the RD Data Ready signal is asserted, and when asserted, the processor 110 can read the data from the read data latch. In this example, the state machine clock is used to reset the data latch on the second pulse similar to the write operation. Also, in this example, the processor 110 does not perform two reads but instead performs one read and goes into a wait state until the data is read from the read data latch.
While the embodiments have been described with reference to examples, various modifications to the described embodiments may be made without departing from the scope of the claimed embodiments.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US12/68992 | 12/11/2012 | WO | 00 |