US20150318054A1 - Data Operation in Shift Register Ring - Google Patents
Data Operation in Shift Register Ring Download PDFInfo
- Publication number
- US20150318054A1 US20150318054A1 US14/650,631 US201214650631A US2015318054A1 US 20150318054 A1 US20150318054 A1 US 20150318054A1 US 201214650631 A US201214650631 A US 201214650631A US 2015318054 A1 US2015318054 A1 US 2015318054A1
- Authority
- US
- United States
- Prior art keywords
- shift register
- clock
- bits
- data
- data operation
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C19/00—Digital stores in which the information is moved stepwise, e.g. shift registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C19/00—Digital stores in which the information is moved stepwise, e.g. shift registers
- G11C19/28—Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
- G11C19/287—Organisation of a multiplicity of shift registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C19/00—Digital stores in which the information is moved stepwise, e.g. shift registers
- G11C19/28—Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C21/00—Digital stores in which the information circulates continuously
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K23/00—Pulse counters comprising counting chains; Frequency dividers comprising counting chains
- H03K23/40—Gating or clocking signals applied to all stages, i.e. synchronous counters
Definitions
- Memories are used within computing devices to store data.
- 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”).
- PDAs personal digital assistants
- RAMs random-access memories
- 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.
- an encryption key can be stored at a memory and a processor can access the encryption key to encrypt or decrypt a document.
- FIG. 1 illustrates a computing device
- FIG. 2 illustrates a memory control module
- FIG. 3 illustrates a table showing shifting of bits to different positions
- FIG. 4 illustrates memory cells comprised of flip-flops
- FIG. 5 illustrates a circuit to control inputs for a flip-flop
- FIG. 6 illustrates a truth table for the circuit shown in FIG. 5 ;
- FIG. 7 illustrates a position indicator circuit connected to shift registers and clock select and clock enable circuits
- FIG. 8 illustrates a circuit for the memory control module used for a write data operation
- FIG. 9 illustrates a timing diagram for the write data operation
- FIG. 10 illustrates a circuit for the memory control module used for a read data operation
- FIG. 11 illustrates a timing diagram for the read data operation
- FIG. 12 illustrates a control logic circuit
- FIG. 13 illustrates a method
- 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.
- a state e.g., a charge value, resistance value, or some other state
- 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.
- 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.
- 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.
- 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 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.
- a slow clock e.g. 0.01-1.0 Hz
- 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.
- FIG. 1 illustrates a computing device 100 that includes a memory control module 140 with a memory 141 .
- the memory 141 may include a physical device, such as semiconductor memory, comprised of memory cells to store data. In one example, the memory cells comprise shift registers as further described below.
- the computing device 100 also includes processor 110 , communication interface 120 , and storage device 130 .
- the processor 110 is any of a variety of processors.
- the processor 110 can be a general-purpose processor or an application-specific processor implemented as a hardware module and/or a software module hosted at a hardware module.
- a hardware module can be, for example, a microprocessor, a microcontroller, an application-specific integrated circuit (“ASIC”), a programmable logic device (“PLD”) such as a field programmable gate array (“FPGA”), and/or other electronic circuits that perform operations.
- a software module can be, for example, instructions, commands, and/or codes stored at a memory and executed at another processor. Such a software module can be defined using one or more programming languages such as JavaTM, C++, C, an assembly language, a hardware description language, and/or another suitable programming language.
- a processor can be a virtual machine hosted at a computer server including a microprocessor and a memory.
- the processor 110 can include multiple processors.
- the processor 110 can be a microprocessor including multiple processing engines (e.g., computation, algorithmic or thread cores).
- 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.
- the processor 110 can be a distributed processor.
- 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 .
- the storage device 130 includes instructions that define operating system 131 , device drivers 132 , and applications 133 (e.g., software application programs).
- 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.
- 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 .
- software applications e.g., computer codes or instructions that implement software applications when executed at a processor
- 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 .
- 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”).
- 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
- 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.
- machine instructions such as produced by a compiler
- files containing higher-level instructions that are executed by a computer using an interpreter For example, an implementation may be implemented using JavaTM, 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.
- the communications interface 120 can receive data from the processor 110 and transmit symbols representing the data via a communications link.
- 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 .
- 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.
- WLAN wireless local area network
- 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.
- the memory 141 may also be referred to a memory circuit.
- the memory 141 is comprised of semiconductor devices on an integrated circuit.
- FIG. 2 shows the memory 141 comprised of shift registers SR 0 -SRn where n is an integer greater than or equal to 1.
- a shift register may include a single-bit register that stores a single bit and is an example of a memory cell.
- the shift registers may be connected as a shift-register ring where the output of one is connected to the input of another so each bit can be periodically shifted from one shift register to the other.
- the data shifting circuit 144 may include clocks 200 a - b and a position indicator 201 .
- the clock 200 a is a fast clock and the clock 200 b is a slow clock.
- the fast clock 200 a may be faster than the processor clock and the slow clock 200 b may be multiple orders slower than the fast clock 200 a .
- 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.
- 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 200 a - b , and an example of the shifting is represented in table 300 shown in FIG. 3 .
- data stored in the shift registers of the memory 141 is shifted by the slow clock 200 b to avoid imprinting.
- the fast clock 200 a is used to shift the data to a home position to minimize the wait time for the processor 110 so the data operation can be performed.
- data stored in the shift registers in the shift-register ring is comprised of bits D 0 -D 3 and assume the bits are written to the memory 141 and are in a home position at a time T 0 .
- the home position may be the locations of a set of bits (which may be word of predetermined length) after they are all written to the memory 141 but before the bits are shifted.
- the home position is when bits D 0 -D 3 are stored in the shift registers SR 0 -SRn respectively.
- T 1 the bits are shifted by one bit to the right.
- D 0 is shifted into SR 1 ;
- D 1 is shifted into SR 2 ;
- D 2 is shifted into SR 3 ;
- D 3 is shifted into SR 0 .
- the bits are shifted again.
- D 0 is shifted into SR 2 ; D 1 is shifted into SR 3 ; D 2 is shifted into SR 0 ; and D 3 is shifted into SR 1 .
- the bits are shifted again.
- D 0 is shifted into SR 3 ; D 1 is shifted into SR 0 ; D 2 is shifted into SR 1 ; and D 3 is shifted into SR 2 .
- the bits are shifted back to the home position.
- the shifting described above may be performed according to the slow clock 200 b unless a signal is received that a data operation is to be performed and then the shifting is performed according to the fast clock 200 a.
- FIG. 2 also shows that the data operation control circuit 146 may be comprised of a control logic circuit 210 and an equality circuit 211 .
- the control logic circuit enables the slow clock 200 b or the fast clock 200 a to control the shifting of bits in the shift registers SR 0 -SRn.
- the control logic circuit 210 may disable the clock 200 a and 200 b to perform a data operation for the processor 110 , such as a read or a write in the shift registers SR 0 -SRn.
- the control logic circuit 210 also generates a read or write enable signal to control the reading and writing in the shift registers SR 0 -SRn.
- the equality circuit 211 determines whether data in the shift registers SR 0 -SRn is in a home position so the data operation can be performed.
- 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.
- 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 SR 0 -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 SR 0 -SRn is in the home position and the data can be written into the shift registers SR 0 -SRn at one time or read from the shift registers SR 0 -SRn at one time. The operation of the circuits is described in further detail below.
- FIG. 4 illustrates an example of the shift registers in the memory 141 .
- the shift registers may include an array of D flip-flops 401 a - 401 n sharing the same clock and connected to form a shift register ring.
- Each flip-flop has a Q data output connected to a D input of another flip-flop.
- the Q output of the flip-flop is the data output for each bit position.
- FIG. 5 shows an example of a circuit 500 for controlling the PR and CL inputs and the writing of data to a flip-flop.
- the circuit 500 may be included in the memory control module 140 shown in FIG. 1 .
- the PR is set to 0 (e.g., active low) and the CL is set to 1 (e.g., also active low).
- both PR and CL are set to 1 (the idle state). Writing a 0 is the same except PR is set to 1 and CL is set to 0.
- FIG. 6 shows a table 600 that is the truth table for controlling PR and CL and write operations which reiterates the description above for FIG. 5 .
- FIG. 7 shows the clocks 200 a - b and a counter 701 that may operate as the position indicator 201 from FIG. 2 .
- the counter 701 keeps track of the actual data position of the bits in the shift registers, such as the data positions shown in FIG. 3 .
- a counter value 0 means the bits are in the home position; after a shift, the counter 701 is incremented and the counter value 1 means the bits are in a position associated with T 1 shown in FIG. 3 , and so on.
- the number of bits in the shift registers should be of count 2 x , where x is the number of bits in the counter 701 .
- a clock select circuit 703 may be used to select the slow or fast clock, and a clock disable circuit 702 may be used to enable or disable the clocks 200 a - b . Select signals may be provided to the circuits 702 and 703 from the control logic circuit 210 to select the clock and the enable/disable.
- FIG. 8 shows an example of a circuit 800 for the memory control module 140 shown in FIG. 1 .
- the data shifting circuit 144 of FIGS. 1-2 including the clocks 200 a - b , and the position indicator 201 comprised of counter 701 are shown in FIG. 8 .
- the control logic circuit 210 and equality circuit 211 are also shown.
- the equality circuit 211 is comprised of the AND and XNOR gates shown in FIG. 8 of the data operation control circuit 146 .
- the clock select circuit 703 and the clock disable circuit 702 from FIG. 7 are also shown.
- a read data latch may be used to enable or disable the clocks 200 a - b .
- Select signals may be provided to the circuits 702 and 703 from the control logic circuit 210 to select the clock and the enable/disable.
- the clock disable circuit 702 inhibits propagation of the clock signal generated by either of the clocks 200 a - b to prevent shifting for example when a write is being performed.
- the clock select circuit 703 selects either the fast clock 200 a (e.g., to shift bits in the shift registers to the home position for a data operation of the processor 110 ) or the slow clock 200 b (e.g., to shift bits in the shift register if no data operation for the processor is being performed in the shift registers).
- the write data latch receives data from a system bus to be written to the shift registers.
- the write address latch receives an address from the processor 110 for writing the data.
- the memory 141 shown in FIG. 1 may include memory cells comprised of shift registers as described above.
- FIG. 8 shows some of the shift registers.
- the shift registers in FIG. 8 are comprised of D flip-flops such as shown in FIG. 4 .
- the number of shift registers may be at least as many as the number of bits that are to be stored in the memory 141 but there may be more shift registers than number of bits.
- the shift registers for example are connected as a shift register ring.
- 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 200 a - 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.
- 32 bits are stored in the shift registers of the memory 141 .
- the bits are grouped into words, for example, having the native word size used by the processor.
- 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 Q 0 -Q 4 for its output.
- 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.
- output bits Q 1 and Q 2 of the write address latch select the bytes in the memory 141 for the write data operation.
- the position counter 701 provides two values. The low-order bits (Q 0 -Q 2 ) 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 Q 3 -Q 4 ) select the correct one of a plurality of aligned words in the shift register.
- the number of low-order bits is log 2 (bit width) 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.
- the equality circuit 211 compares the value of the upper-order bits (e.g., most significant bits Q 3 -Q 4 ) of the position counter 701 with the value of the low-order bits (least significant bits Q 1 -Q 2 ) of the write address latch to determine whether they are equal.
- the control logic circuit 210 enables the data operation. For example, the clocks 200 a - b are disabled, and the /WR output is toggled to perform the write operation in the shift registers as described below.
- FIG. 9 shows a timing diagram of the write operation performed in the circuit 800 .
- the processor 110 writes data to be stored in the shift register to the write data latch shown in FIG. 8 , and the address where it is to be saved is written to the address latch.
- the /WE (Write Enable) signal from the processor 110 is used to latch the values.
- This /WE may not be the native /WE, but one that has already chip select qualified. In other words, the /WE is ORed with /ChipSelect to drive /WE. Since the data is latched, processor 110 involvement is now complete.
- the bits in the shift registers in the memory 141 are rotating through the shift registers using the slow clock 200 b .
- a slow clock may be used because a fast clock is not necessary, and a slow clock uses less power.
- the shift register clock switches to the fast clock 200 a .
- the fast clock 200 a 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 200 a.
- the fast clock 200 a 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 200 a may be used.
- the state machine clock 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 200 b , and rotating of data in the shift register continues.
- the bottom of FIG. 9 at 901 , shows which clock is enabled at particular time periods in the timing diagram.
- the slow clock 200 b is enabled to shift the data in the shift registers, then the fast clock 200 a is enabled to move the addressed word to its home position, and then clocks 200 a - b are disabled and the state machine clock (SM) clock is enabled to write data to the shift registers and to reset the write data latch. Then, the slow clock 200 b is enabled to shift the data in the shift registers.
- SM state machine clock
- FIG. 10 shows the memory circuit 800 for a read operation instead of a write operation for the processor 110 .
- the memory circuit 800 is the same as shown in FIG. 8 except the write data latch now operates as a read data latch to receive data from the shift registers for transmission on a system bus for use by the processor 110 .
- the write address latch now operates as a read address latch to receive an address for reading data from the shift registers.
- separate read and write latches may be used for the data and/or the address.
- FIG. 11 shows a timing diagram of the write operation performed in the circuit 800 .
- the write data input latch held the write data so the processor 110 did not have to finish the cycle.
- the processor 110 when reading data from the shift registers, the processor 110 performs two reads. The processor 110 first reads and discards the value (typically it will be all Os because that is the ending state from the previous operation). Then, when the data is in the read data latch, the processor 110 reads again. The operation with respect to the timing diagram shown in FIG. 10 is now described.
- the processor 110 asserts /RD to read the value.
- /RD may be chip select qualified similar to NVE in the write cycle.
- the shift registers rotate bits using the slow clock 200 b .
- the /RD signal latches the read address
- the shift register clock switches to the fast clock 200 a .
- the fast clock 200 a 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 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 200 b . 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.
- the state machine clock may be used for the read operation.
- 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.
- 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.
- FIG. 12 shows one example of the logic that may be used for the control logic circuit 210 .
- the control logic circuit 210 can be implemented in many ways and the circuit shown in FIG. 12 is one example of an implementation of control logic circuit 210 .
- FIG. 13 illustrates a method 1300 .
- the method 1300 may be performed by the memory control module 140 for example shown in FIGS. 1 , 2 , 8 and 10 and described above.
- bits are shifted in a shift register ring of the memory 141 for each clock pulse generated by the slow clock 200 b (e.g., under normal operating conditions).
- the bits in the shifted in the memory 141 are shifted for each clock pulse generated by the fast clock 200 a in response to receiving a signal at the control logic circuit 210 that the data operation is to be performed (e.g., /WE is asserted).
- the equality circuit 211 determines whether a word in the shift register ring of the memory 141 is at a home position based on information from the position counter 701 (e.g., most significant bits) and some bits from an address (e.g., least significant bits) received from the processor 110 to perform a data operation in the shift register ring. If the word is in the home position, the data operation (e.g., read or write data at one time to or from memory 141 ) is enabled by the control logic circuit 210 at 1304 and, after the data operation is performed, at 1305 , the data in the memory 141 is shifted according to the slow clock 200 b . If the word is not at the home position as determined at 1003 , the data is shifted according to the fast clock 200 a until the equality circuit 211 determines the data is in the home position.
- the data operation e.g., read or write data at one time to or from memory 141
Landscapes
- Storage Device Security (AREA)
- Static Random-Access Memory (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
- 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:
-
FIG. 1 illustrates a computing device; -
FIG. 2 illustrates a memory control module; -
FIG. 3 illustrates a table showing shifting of bits to different positions; -
FIG. 4 illustrates memory cells comprised of flip-flops; -
FIG. 5 illustrates a circuit to control inputs for a flip-flop; -
FIG. 6 illustrates a truth table for the circuit shown inFIG. 5 ; -
FIG. 7 illustrates a position indicator circuit connected to shift registers and clock select and clock enable circuits; -
FIG. 8 illustrates a circuit for the memory control module used for a write data operation; -
FIG. 9 illustrates a timing diagram for the write data operation; -
FIG. 10 illustrates a circuit for the memory control module used for a read data operation; -
FIG. 11 illustrates a timing diagram for the read data operation; -
FIG. 12 illustrates a control logic circuit; and -
FIG. 13 illustrates a method. - 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.
-
FIG. 1 illustrates acomputing device 100 that includes amemory control module 140 with amemory 141. Thememory 141 may include a physical device, such as semiconductor memory, comprised of memory cells to store data. In one example, the memory cells comprise shift registers as further described below. Thecomputing device 100 also includesprocessor 110,communication interface 120, andstorage device 130. Theprocessor 110 is any of a variety of processors. For example, theprocessor 110 can be a general-purpose processor or an application-specific processor implemented as a hardware module and/or a software module hosted at a hardware module. A hardware module can be, for example, a microprocessor, a microcontroller, an application-specific integrated circuit (“ASIC”), a programmable logic device (“PLD”) such as a field programmable gate array (“FPGA”), and/or other electronic circuits that perform operations. A software module can be, for example, instructions, commands, and/or codes stored at a memory and executed at another processor. Such a software module can be defined using one or more programming languages such as Java™, C++, C, an assembly language, a hardware description language, and/or another suitable programming language. For example, a processor can be a virtual machine hosted at a computer server including a microprocessor and a memory. - In some implementations, the
processor 110 can include multiple processors. For example, theprocessor 110 can be a microprocessor including multiple processing engines (e.g., computation, algorithmic or thread cores). As another example, theprocessor 110 can be a computing device including multiple processors with a shared clock, memory bus, input/output bus, and/or other shared resources. Furthermore, theprocessor 110 can be a distributed processor. For example, theprocessor 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 thecommunications interface 120, thestorage device 130, and thememory control module 140. Thestorage device 130 may store machine readable instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by theprocessor 110 during operation ofcomputing device 100. For example, thestorage device 130 includes instructions that defineoperating system 131,device drivers 132, and applications 133 (e.g., software application programs). In other words, theoperating system 131, thedevice drivers 132, theapplications 133, and other software modules stored as instructions (not shown) at thestorage device 130 and executed at theprocessor 110 are hosted at thecomputing device 100. Theapplications 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, theapplications 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., viacommunications 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 theprocessor 110. Such software applications, data, or combinations thereof can be moved or copied to thestorage device 130 by theprocessor 110 and accessed by theprocessor 110 at thestorage device 130 during operation of thecomputing 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 theprocessor 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, thecommunications interface 120 can receive data from theprocessor 110 and transmit symbols representing the data via a communications link. Moreover, thecommunications interface 120 can receive symbols from other communications interfaces via a communications link and send data represented by those symbols toprocessor 110. For example, thecommunications 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 includesdata shifting circuit 144,memory 141 and a dataoperation control circuit 146. Anencryption key 145 is shown as stored in thememory 141 as an example of data that may be stored in thememory 141. However, any data may be stored in thememory 141. Thedata shifting circuit 144 includes circuitry to prevent memory imprinting at thememory 141. Thedata shifting circuit 144 periodically moves the key 145 (i.e., bits of key 145) within thememory 141 to prevent memory imprinting of the key 145 in thememory 141. The dataoperation control circuit 146 facilitates data operations between theprocessor 110 and thememory 141. The dataoperation control circuit 146 aligns data for reading or writing. Also, the dataoperation 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 theprocessor 110 or thememory control module 140 may be provided on a separate integrated circuit. Thememory control module 140 may be part of thecomputing device 100 or may be on a separate device which may be connected to thecomputing device 100 via thecommunications interface 120, such as a universal serial bus port, a network interface, etc. Also, thememory 141 may also be referred to a memory circuit. For example, thememory 141 is comprised of semiconductor devices on an integrated circuit. -
FIG. 2 shows thememory 141 comprised of shift registers SR0-SRn where n is an integer greater than or equal to 1. A shift register may include a single-bit register that stores a single bit and is an example of a memory cell. The shift registers may be connected as a shift-register ring where the output of one is connected to the input of another so each bit can be periodically shifted from one shift register to the other. - The
data shifting circuit 144 may include clocks 200 a-b and aposition indicator 201. For example, theclock 200 a is a fast clock and theclock 200 b is a slow clock. Thefast clock 200 a may be faster than the processor clock and theslow clock 200 b may be multiple orders slower than thefast clock 200 a. In another example, one clock may be used and the clock frequency is changed to provide a fast and slow clock. Theposition indicator 201 indicates the positions of bits in the shift registers as the bits are periodically shifted. In one example, theposition 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 200 a-b, and an example of the shifting is represented in table 300 shown in
FIG. 3 . For example, data stored in the shift registers of thememory 141 is shifted by theslow clock 200 b to avoid imprinting. However, when a data operation is to be performed, thefast clock 200 a is used to shift the data to a home position to minimize the wait time for theprocessor 110 so the data operation can be performed. For example, data stored in the shift registers in the shift-register ring is comprised of bits D0-D3 and assume the bits are written to thememory 141 and are in a home position at a time T0. The home position may be the locations of a set of bits (which may be word of predetermined length) after they are all written to thememory 141 but before the bits are shifted. For example, the home position is when bits D0-D3 are stored in the shift registers SR0-SRn respectively. At a first clock pulse after T0, shown as T1, the bits are shifted by one bit to the right. Thus at T1, D0 is shifted into SR1; D1 is shifted into SR2; D2 is shifted into SR3; and D3 is shifted into SR0. At a second clock pulse at T2, the bits are shifted again. Thus, at T2, D0 is shifted into SR2; D1 is shifted into SR3; D2 is shifted into SR0; and D3 is shifted into SR1. At a third clock pulse at T3, the bits are shifted again. Thus, at T3, D0 is shifted into SR3; D1 is shifted into SR0; D2 is shifted into SR1; and D3 is shifted into SR2. At T4, the bits are shifted back to the home position. The shifting described above may be performed according to theslow clock 200 b unless a signal is received that a data operation is to be performed and then the shifting is performed according to thefast clock 200 a. -
FIG. 2 also shows that the dataoperation control circuit 146 may be comprised of acontrol logic circuit 210 and anequality circuit 211. The control logic circuit enables theslow clock 200 b or thefast clock 200 a to control the shifting of bits in the shift registers SR0-SRn. Also, thecontrol logic circuit 210 may disable theclock processor 110, such as a read or a write in the shift registers SR0-SRn. Thecontrol logic circuit 210 also generates a read or write enable signal to control the reading and writing in the shift registers SR0-SRn. - 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 theequality circuit 211 determines whether the word is in its home position. For example, thememory control module 140 receives an address, such as a read address or a write address, from theprocessor 110 for the data operation. Theequality 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 theposition indicator 201 may include at least two bits but not all bits output from theposition indicator 201. If the value of the bits from the address and theposition 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. -
FIG. 4 illustrates an example of the shift registers in thememory 141. The shift registers may include an array of D flip-flops 401 a-401 n sharing the same clock and connected to form a shift register ring. Each flip-flop has a Q data output connected to a D input of another flip-flop. The Q output of the flip-flop is the data output for each bit position. - Each flip-flop has PReset an CLear inputs, and these inputs may be active low.
FIG. 5 shows an example of acircuit 500 for controlling the PR and CL inputs and the writing of data to a flip-flop. Thecircuit 500 may be included in thememory control module 140 shown inFIG. 1 . To write a ‘1’ bit to the D flip-flop, the PR is set to 0 (e.g., active low) and the CL is set to 1 (e.g., also active low). Following a write cycle, both PR and CL are set to 1 (the idle state). Writing a 0 is the same except PR is set to 1 and CL is set to 0. Also, a zeroize operation may be performed to reset the flip-flop data to 0 and the zeroize input may be connected to all flip-flops at once to reset all the flip-flops to 0 simultaneously.FIG. 6 shows a table 600 that is the truth table for controlling PR and CL and write operations which reiterates the description above forFIG. 5 . -
FIG. 7 shows the clocks 200 a-b and acounter 701 that may operate as theposition indicator 201 fromFIG. 2 . Thecounter 701 keeps track of the actual data position of the bits in the shift registers, such as the data positions shown inFIG. 3 . For example, acounter value 0 means the bits are in the home position; after a shift, thecounter 701 is incremented and thecounter value 1 means the bits are in a position associated with T1 shown inFIG. 3 , and so on. The number of bits in the shift registers should be ofcount 2x, where x is the number of bits in thecounter 701. A clockselect circuit 703 may be used to select the slow or fast clock, and a clock disablecircuit 702 may be used to enable or disable the clocks 200 a-b. Select signals may be provided to thecircuits control logic circuit 210 to select the clock and the enable/disable. -
FIG. 8 shows an example of acircuit 800 for thememory control module 140 shown inFIG. 1 . Thedata shifting circuit 144 ofFIGS. 1-2 including the clocks 200 a-b, and theposition indicator 201 comprised ofcounter 701 are shown inFIG. 8 . Also shown are thecontrol logic circuit 210 andequality circuit 211. In this example, theequality circuit 211 is comprised of the AND and XNOR gates shown inFIG. 8 of the dataoperation control circuit 146. The clockselect circuit 703 and the clock disablecircuit 702 fromFIG. 7 are also shown. A read data latch may be used to enable or disable the clocks 200 a-b. Select signals may be provided to thecircuits control logic circuit 210 to select the clock and the enable/disable. The clock disablecircuit 702 inhibits propagation of the clock signal generated by either of the clocks 200 a-b to prevent shifting for example when a write is being performed. The clockselect circuit 703 selects either thefast clock 200 a (e.g., to shift bits in the shift registers to the home position for a data operation of the processor 110) or theslow clock 200 b (e.g., to shift bits in the shift register if no data operation for the processor is being performed in the shift registers). The write data latch receives data from a system bus to be written to the shift registers. The write address latch receives an address from theprocessor 110 for writing the data. - The
memory 141 shown inFIG. 1 may include memory cells comprised of shift registers as described above.FIG. 8 shows some of the shift registers. In one example, the shift registers inFIG. 8 are comprised of D flip-flops such as shown inFIG. 4 . The number of shift registers may be at least as many as the number of bits that are to be stored in thememory 141 but there may be more shift registers than number of bits. The shift registers for example are connected as a shift register ring. - 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 theprocessor 110. - The
control logic circuit 210 determines whether bits in the shift register are in a home position based on information from theequality circuit 211 to control the clocks 200 a-b and to enable data operations. Theequality circuit 211 performs a comparison from position information from theposition 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 thememory 141. For example, there are 32 single-bit shift registers in the shift register ring of thememory 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 theprocessor 110 is 8 bits (“byte-wide”), and the shift registers of thememory 141 store four 8-bit words. In this example, theposition 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 thememory 141 for the write data operation. For example, output bits Q1 and Q2 of the write address latch select the bytes in thememory 141 for the write data operation. Also, theposition counter 701 provides two values. The low-order bits (Q0-Q2) of thecounter 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 theposition 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 theequality 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 theposition 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 thecontrol 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” thecontrol logic circuit 210 enables the data operation. For example, the clocks 200 a-b are disabled, and the /WR output is toggled to perform the write operation in the shift registers as described below. -
FIG. 9 shows a timing diagram of the write operation performed in thecircuit 800. Theprocessor 110 writes data to be stored in the shift register to the write data latch shown inFIG. 8 , and the address where it is to be saved is written to the address latch. The /WE (Write Enable) signal from theprocessor 110 is used to latch the values. This /WE may not be the native /WE, but one that has already chip select qualified. In other words, the /WE is ORed with /ChipSelect to drive /WE. Since the data is latched,processor 110 involvement is now complete. - Under normal operating conditions, the bits in the shift registers in the
memory 141 are rotating through the shift registers using theslow clock 200 b. 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 thefast clock 200 a. Thefast clock 200 a may be as fast as the devices in thecircuit 800 can reliably operate. The response time of thecircuit 800 to theprocessor 110 is related to the speed of thefast clock 200 a. - 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”, thefast clock 200 a 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 thecontrol logic circuit 210. This can be any relatively fast clock in the system, and thefast clock 200 a 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 200 b, 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 theprocessor 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 ofFIG. 9 , at 901, shows which clock is enabled at particular time periods in the timing diagram. First theslow clock 200 b is enabled to shift the data in the shift registers, then thefast clock 200 a is enabled to move the addressed word to its home position, and then clocks 200 a-b are disabled and the state machine clock (SM) clock is enabled to write data to the shift registers and to reset the write data latch. Then, theslow clock 200 b is enabled to shift the data in the shift registers. -
FIG. 10 shows thememory circuit 800 for a read operation instead of a write operation for theprocessor 110. Thememory circuit 800 is the same as shown inFIG. 8 except the write data latch now operates as a read data latch to receive data from the shift registers for transmission on a system bus for use by theprocessor 110. Also, the write address latch now operates as a read address latch to receive an address for reading data from the shift registers. In another example, separate read and write latches may be used for the data and/or the address. -
FIG. 11 shows a timing diagram of the write operation performed in thecircuit 800. In the write operation, the write data input latch held the write data so theprocessor 110 did not have to finish the cycle. In one example, when reading data from the shift registers, theprocessor 110 performs two reads. Theprocessor 110 first reads and discards the value (typically it will be all Os because that is the ending state from the previous operation). Then, when the data is in the read data latch, theprocessor 110 reads again. The operation with respect to the timing diagram shown inFIG. 10 is now described. - 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 theslow clock 200 b. After the /RD signal latches the read address, when /RD is released, the shift register clock switches to thefast clock 200 a. 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”, thefast clock 200 a 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 theslow clock 200 b. The RD signal is held high until theprocessor 110 reads the read data latch again. The RD signal is sent to theprocessor 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 theprocessor 110 that the data is in the read data latch. Theprocessor 110 is in a wait state until the RD Data Ready signal is asserted, and when asserted, theprocessor 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, theprocessor 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. -
FIG. 12 shows one example of the logic that may be used for thecontrol logic circuit 210. Thecontrol logic circuit 210 can be implemented in many ways and the circuit shown inFIG. 12 is one example of an implementation ofcontrol logic circuit 210. -
FIG. 13 illustrates amethod 1300. Themethod 1300 may be performed by thememory control module 140 for example shown inFIGS. 1 , 2, 8 and 10 and described above. At 1301, bits are shifted in a shift register ring of thememory 141 for each clock pulse generated by theslow clock 200 b (e.g., under normal operating conditions). At 1302, the bits in the shifted in thememory 141 are shifted for each clock pulse generated by thefast clock 200 a in response to receiving a signal at thecontrol logic circuit 210 that the data operation is to be performed (e.g., /WE is asserted). At 1303, theequality circuit 211 determines whether a word in the shift register ring of thememory 141 is at a home position based on information from the position counter 701 (e.g., most significant bits) and some bits from an address (e.g., least significant bits) received from theprocessor 110 to perform a data operation in the shift register ring. If the word is in the home position, the data operation (e.g., read or write data at one time to or from memory 141) is enabled by thecontrol logic circuit 210 at 1304 and, after the data operation is performed, at 1305, the data in thememory 141 is shifted according to theslow clock 200 b. If the word is not at the home position as determined at 1003, the data is shifted according to thefast clock 200 a until theequality circuit 211 determines the data is in the home position. - 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.
Claims (15)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/068992 WO2014092696A1 (en) | 2012-12-11 | 2012-12-11 | Data operation in shift register ring |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150318054A1 true US20150318054A1 (en) | 2015-11-05 |
Family
ID=50934772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/650,631 Abandoned US20150318054A1 (en) | 2012-12-11 | 2012-12-11 | Data Operation in Shift Register Ring |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150318054A1 (en) |
EP (1) | EP2932506A4 (en) |
CN (1) | CN104838445A (en) |
WO (1) | WO2014092696A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115202438B (en) * | 2022-09-16 | 2022-12-30 | 四川奥库科技有限公司 | Implementation method of full-synchronous eFlash controller based on single clock |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305253A (en) * | 1985-06-20 | 1994-04-19 | Texas Instruments Incorporated | Zero fall-through time asynchronous fifo buffer with nonambiguous empty-full resolution |
US5343439A (en) * | 1990-10-19 | 1994-08-30 | Nec Corporation | Memory apparatus |
US7310396B1 (en) * | 2003-03-28 | 2007-12-18 | Xilinx, Inc. | Asynchronous FIFO buffer for synchronizing data transfers between clock domains |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1456235A (en) * | 1973-05-29 | 1976-11-24 | Gen Electric Co Ltd | Digital telecommunications switching systems |
US4321694A (en) * | 1978-05-12 | 1982-03-23 | Burroughs Corporation | Charge coupled device memory with enhanced access features |
US5692026A (en) * | 1996-05-31 | 1997-11-25 | Hewlett-Packard Company | Apparatus for reducing capacitive loading of clock and shift signals by shifting register-based devices |
DE19917016A1 (en) * | 1999-04-15 | 2000-10-19 | Philips Corp Intellectual Pty | Circuit for conversion of parallel data stream into series one and vice versa and for intermediate storage and clocked transmission of data stream |
US6728799B1 (en) * | 2000-01-13 | 2004-04-27 | Hewlett-Packard Development Company, L.P. | Hybrid data I/O for memory applications |
KR100666320B1 (en) * | 2000-07-18 | 2007-01-09 | 삼성전자주식회사 | Shift-resister and drive circuit of an LCD using the same |
JP3765273B2 (en) * | 2002-02-06 | 2006-04-12 | 日本電気株式会社 | Shift register |
US7130984B2 (en) * | 2003-12-03 | 2006-10-31 | Texas Instruments Incorporated | First-in first-out memory system with shift register fill indication |
US7483327B2 (en) * | 2006-03-02 | 2009-01-27 | Freescale Semiconductor, Inc. | Apparatus and method for adjusting an operating parameter of an integrated circuit |
US8331163B2 (en) * | 2010-09-07 | 2012-12-11 | Infineon Technologies Ag | Latch based memory device |
US8717831B2 (en) * | 2012-04-30 | 2014-05-06 | Hewlett-Packard Development Company, L.P. | Memory circuit |
-
2012
- 2012-12-11 WO PCT/US2012/068992 patent/WO2014092696A1/en active Application Filing
- 2012-12-11 EP EP12889809.5A patent/EP2932506A4/en not_active Withdrawn
- 2012-12-11 US US14/650,631 patent/US20150318054A1/en not_active Abandoned
- 2012-12-11 CN CN201280077618.7A patent/CN104838445A/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305253A (en) * | 1985-06-20 | 1994-04-19 | Texas Instruments Incorporated | Zero fall-through time asynchronous fifo buffer with nonambiguous empty-full resolution |
US5343439A (en) * | 1990-10-19 | 1994-08-30 | Nec Corporation | Memory apparatus |
US7310396B1 (en) * | 2003-03-28 | 2007-12-18 | Xilinx, Inc. | Asynchronous FIFO buffer for synchronizing data transfers between clock domains |
Also Published As
Publication number | Publication date |
---|---|
EP2932506A1 (en) | 2015-10-21 |
CN104838445A (en) | 2015-08-12 |
EP2932506A4 (en) | 2016-08-10 |
WO2014092696A1 (en) | 2014-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8717831B2 (en) | Memory circuit | |
US9785784B2 (en) | Security management unit, host controller interface including same, method operating host controller interface, and devices including host controller interface | |
US9094190B2 (en) | Method of managing key for secure storage of data and apparatus therefor | |
US20140223113A1 (en) | Selector syncronized with movement of data in memory | |
US9298607B2 (en) | Access control for non-volatile random access memory across platform agents | |
US20130151759A1 (en) | Storage device and operating method eliminating duplicate data storage | |
US8417879B2 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
WO2008118274A1 (en) | System and method to control one time programmable memory | |
US8085584B1 (en) | Memory to store user-configurable data polarity | |
CN104126181A (en) | Thin translation for system access of non volatile semicondcutor storage as random access memory | |
US20190042140A1 (en) | Mass storage device with host initiated buffer flushing | |
US10163502B2 (en) | Selective performance level modes of operation in a non-volatile memory | |
KR102198615B1 (en) | Non-volatile memory device using dual program operation, memory system including the same and operating method thereof | |
CN104115230A (en) | Efficient PCMS refresh mechanism background | |
US11816039B2 (en) | Multi-mode protected memory | |
US10038428B2 (en) | Sequential circuit and operating method thereof | |
US20210210155A1 (en) | Memory sub-system self-testing operations | |
CN103460181A (en) | Integrated circuit device and methods of performing bit manipulation therefor | |
US20150318054A1 (en) | Data Operation in Shift Register Ring | |
KR20210006556A (en) | Controller, memory system and operating method thereof | |
US20180095692A1 (en) | Selective memory mode authorization enforcement | |
TWI776351B (en) | Data accessing method using data protection with aid of advanced encryption standard processing circuit, memory controller of memory device, and advanced encryption standard processing circuit of memory controller of memory device | |
US10838901B1 (en) | System and method for a reconfigurable controller bridge chip | |
WO2023056687A1 (en) | Solid state disk and data manipulation method and apparatus therefor, and electronic device | |
US20210157607A1 (en) | Dynamic re-evaluation of parameters for non-volatile memory using microcontroller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HADLEY, TED A;REEL/FRAME:035808/0075 Effective date: 20121210 |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |