US20120324195A1 - Allocation of preset cache lines - Google Patents
Allocation of preset cache lines Download PDFInfo
- Publication number
- US20120324195A1 US20120324195A1 US13/159,653 US201113159653A US2012324195A1 US 20120324195 A1 US20120324195 A1 US 20120324195A1 US 201113159653 A US201113159653 A US 201113159653A US 2012324195 A1 US2012324195 A1 US 2012324195A1
- Authority
- US
- United States
- Prior art keywords
- circuit
- cache
- buffer
- value
- address
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Definitions
- the present invention relates to cache initialization generally and, more particularly, to a method and/or apparatus for implementing an allocation of preset cache lines.
- Caches are commonly used to improve processor performance in systems where data accessed by the processor is located in a slow and/or far memory (i.e., an external double data rate memory).
- a data cache is used to manage processor accesses to the data information in the slow/far memory.
- a strategy implemented in conventional data caches is to copy a line of data from the slow/far memory on any data read request from the processor that causes a cache miss.
- the Long Term Evolution communication standard defines an application that uses a Fast Fourier Transform buffer of size 2048 long words. In operation, only 1200 long words in the buffer are written with new information while the rest of the buffer contains the zero values.
- Another example buffer is a residue transform buffer of 64 short words used in decoding video.
- An inverse zigzag application usually fills only a minor amount of the residue transform buffer with “significant” transform coefficient values while the rest of the buffer contains the zero values.
- a straightforward approach to initialize a buffer in a data cache is to performer multiple reads from the slow/far memory to bring the lines associated with the buffer into the cache. Next, zero values are written into the cache lines during a buffer initialization stage. The reads produce cache misses when accessing the newly created buffer for the first time. The cache misses cause an increase in program execution cycles and increase power consumption during subsequent read bus transactions.
- a more advanced initialization approach prefetches data using a dedicated “dfetch” instruction. Usually, the dfetch instruction fetches a cache line from the slow/far memory to the cache memory in the background in an effort to reduce cache miss penalty cycles. However, the prefetching can delay treatment of regular cache misses and does not save power when accessing the slow/far memory. In addition, the prefetch approach complicates the code development because the dfetch instructions are executed early in the code to minimize a probability of cache stall cycles.
- the present invention concerns an apparatus generally having a cache memory and a circuit.
- the circuit may be configured to (i) parse a single first command received from a processor into a first address and a first value and (ii) allocate a first one of a plurality of lines in the cache memory to a buffer in response to the first command.
- the first line (a) is generally associated with the first address and (b) may have a plurality of first words.
- the circuit may be further configured to (iii) preset each of the first words in the first line to the first value.
- the objects, features and advantages of the present invention include providing an allocation of preset cache lines that may (i) reduce processor cycles spent initializing the buffer, (ii) avoid the use of prefetch instructions in the software code, (iii) use a special data cache command to initialize one or more cache lines, (vi) set an entire line within the cache to an initial value and/or (v) have a hardware-only implementation.
- FIG. 1 is a block diagram of an apparatus in accordance with a preferred embodiment of the present invention.
- FIG. 2 is a flow diagram of an example method for allocating preset cache lines in the apparatus.
- Some embodiments of the present invention generally use a dedicated data cache instruction (or command) and hardware-only circuitry within the cache to initialize one or more lines allocated to a buffer. Instead of fetching or prefetching values from an external memory to the data cache and then overwriting the values with zero values, one or more cache line may be directly allocated in the cache memory without accessing the external memory.
- the allocation may include setting (or presetting) each word in the allocated lines to a specific value.
- the direct allocation and presetting of the lines is generally performed by dedicated hardware logic within the cache circuit.
- the dedicated data cache instruction generally minimizes processor cycles commonly used to allocated lines of the cache to the buffer. The direct allocation may reduce the power spent bringing unnecessary data from the external memory to the cache. Furthermore, the dedicated data cache instruction may eliminate processor cycles that are usually spent initializing the buffer with the specific value.
- the apparatus (or device or system or integrated circuit) 100 generally comprises a block (or circuit) 102 , a block (or circuit) 104 and a block (or circuit) 106 .
- the circuit 104 generally comprises a block (or circuit) 110 , a block (or circuit) 112 , a block (or circuit) 114 , a block (or circuit) 116 and a block (or circuit) 118 .
- the circuits 102 and 106 may represent modules and/or blocks that may be implemented as hardware, software, a combination of hardware and software, or other implementations.
- the circuits 104 and 110 to 118 may represent modules and/or blocks that may be implemented as hardware.
- a command signal (e.g., CMD) may be exchanged between the circuit 102 and the circuits 110 and 118 .
- the circuit 110 may generate an address signal (e.g., ADDR 1 ) that is received by the circuit 112 .
- a control signal (e.g., CNT) may be exchanged between the circuit 112 and the circuit 114 .
- a data signal (e.g., DATA 1 ) may be exchanged between the circuit 110 and the circuit 114 .
- the circuit 114 may exchange a data signal (e.g., FILL) with the circuit 106 .
- a signal (e.g., INFO) may be generated by the circuit 118 and received by the circuit 116 .
- the circuit 116 may generate an address signal (e.g., ADDR 2 ) that is received by the circuit 112 .
- the circuit 116 may also generate a data signal (e.g., DATA 2 ) that is received by the circuit 114 .
- the circuit 102 may implement a processor (e.g., a central processor unit) circuit.
- the circuit 102 is generally operational to execute software programs that read, write and modify data.
- the circuit 102 may send one or more commands (or instructions) to the circuit 104 via the signal CMD.
- At least one of the commands may be a unique (or custom) command used to create and initialize a buffer in the circuit 104 .
- the unique command (e.g., a “lineset” command) may include a starting address of the buffer, an initial value to which all of the words in the buffer are initially preset and an optional range value defining how many cache lines are in the buffer.
- the circuit 104 may implement a cache circuit.
- the circuit 104 generally implements a data cache circuit.
- the circuit 104 may be operational to perform standard cache operations in response to one or more access (e.g., read access and/or write access) commands received from the circuit 102 in the signal CMD.
- the circuit 104 may also communicate with the circuit 106 to transfer write data received from the circuit 102 to the circuit 106 .
- the circuit 104 may also receive read data from the circuit 106 when a read access by the circuit 102 results in a cache miss and/or when a fetch or prefetch command is issued by the circuit 102 .
- the circuit 104 may be configured to hold one or more buffers used by the software executing in the circuit 102 .
- the circuit 102 may include dedicated hardware circuitry that is used to allocate and initialize the buffers within the circuit 104 .
- the dedicated hardware circuitry generally parses the lineset command received from the circuit 102 into the starting address of the buffer, the initial value and the range value.
- the circuit 104 may allocated at least one line among the multiple lines in the circuit 104 to the buffer. Per the normal caching operation, the at least one line may be associated with the starting address.
- Each line in the cache generally contains multiple words (e.g., 8-bit words, 16-bit words, 32-bit words or the like). Once a line has been allocated, the dedicated circuitry may write the initial value into each word (or element) of the line.
- the dedicated circuitry may also allocated additional lines to the buffer and set the words within the additional lines to the initial value. After the buffer has been allocated and all of the words have been set (or preset) to the initial value, the dedicated circuitry may optionally indicate a cache write miss to cause the newly formed buffer to be copied to the circuit 106 . Any normal cache write miss technique may be implemented to cause the buffer to be copied from the cache to the circuit 106 .
- the circuit 106 may implement a memory circuit.
- the circuit 106 is generally operational to store data and/or commands used by the software executed in the circuit 102 .
- the circuit 106 may be a solid state memory (e.g., a double data rate memory). Other memory technologies may be implemented to meet the criteria of a particular application.
- the circuit 106 may implement another cache circuit, an external memory and/or a mass storage device.
- the circuit 106 may be fabricated on the same die as the circuits 102 and 104 . In other embodiments, the circuit 106 may be fabricated apart from the die used to fabricate the circuits 102 and 104 .
- the circuit 106 may present data to the circuit 104 via the signal FILL in response to a cache read miss and/or a cache write miss.
- the signal FILL may also be used to transfer data from the circuit 104 back to the circuit 106 in response to a cache write.
- the circuit 110 may implement a cache logic circuit.
- the circuit 110 may be operational to perform standard cache operations that respond to commands received from the circuit 102 in the signal CMD.
- the circuit 110 may attempt to read the requested data at an address from the circuit 114 .
- the address may be transferred to the circuit 112 in the signal ADDR 1 .
- a cache hit is generally declared.
- the requested data may be copied from the circuit 114 to the circuit 110 via the signal DATA 1 and presented from the circuit 110 to the circuit 102 . If the requested data is not in the circuit 114 , a cache miss may be declared and the requested data is fetched from the circuit 106 via the signal FILL.
- the circuit 110 may send a copy of the requested data to the circuit 102 .
- the circuit 110 may attempt to write data received from the circuit 102 into the circuit 114 via the signal DATA 1 . If the line associated with the requested write address is already present in the circuit 114 , the write data may be copied into the circuit 114 . Either simultaneously, or at a later time, the write data may be transferred from the circuit 114 to the circuit 106 under the control of the circuit 110 .
- the circuit 110 generally does not respond to the lineset command used to allocated and initialize a buffer.
- the circuit 112 may implement a tag logic circuit.
- the circuit 112 is generally operational to determine if a cache hit or cache miss has occurred in response to the address received from the circuit 110 via the signal ADDR 1 .
- the circuit 112 may compare the address with tags for the lines of data currently held in the circuit 114 . If the address matches a tag, a cache hit is declared. If the address does not match any of the tags, a cache miss is declared.
- the tag information is generally received from the circuit 114 via the signal CNT in a normal manner.
- the circuit 112 may also be operational to respond to an address received in the signal ADDR 2 from the circuit 116 .
- the address in the signal ADDR 2 may be used by the circuit 112 to allocate a single line in the circuit 114 to a buffer.
- the circuit 112 generally associates the single line to the address received from the circuit 116 . If the circuit 112 receives a sequence of multiple addresses in the signal ADDR 2 , the circuit 112 may allocate multiple lines in the circuit 114 , a single line being associated with each respective address.
- the circuit 114 may implement a cache memory circuit.
- the circuit 114 is generally operational to store multiple data words.
- the data words may be arranged as multiple lines.
- Each line is generally associated with one or more addresses in the address range of the circuit 106 .
- an N-associative configuration in the circuit 114 generally means that each line within the circuit 114 may store the data words from N different addresses in the circuit 106 , one address at a time.
- the circuit 114 may be configured as a fully associative cache memory.
- the circuit 116 may implement a cache line set circuit.
- the circuit 116 is generally operational to command the circuit 112 to allocate the one or more lines in the circuit 114 to a buffer in response to the starting address and range value received in the signal INFO.
- the circuit 116 may transfer the address of each line of the buffer one at a time to the circuit 112 in the signal ADDR 2 .
- the circuit 116 may write the initial value to each data word in the cache line using the signal DATA 2 .
- the circuit 116 may initiate a cache write miss routine (or operation) that causes the newly initialized buffer to be copied from the circuit 114 to the circuit 106 .
- the circuit 118 may implement a register circuit.
- the circuit 118 is generally operational to recognize the lineset commands issued by the circuit 102 in the signal CMD. When a lineset command is found, the circuit 118 may store a copy of the command.
- the command may be parsed (or divided) by the circuit 118 into the staring address, the initial value and the range value. The starting address, the initial value and the range value may be transferred from the circuit 118 to the circuit 116 via the signal INFO.
- the method 140 may be implemented by the circuit 104 .
- the method 140 generally comprises a step (or state) 142 , a step (or state) 144 , a step (or state) 146 , a step (or state) 148 , a step (or state) 150 , a step (or state) 152 , a step (or state) 154 , a step (or state) 156 and a step (or state) 158 .
- the steps 142 to 158 may represent modules and/or blocks that may be implemented as hardware.
- the circuit 118 may recognize and buffer a lineset command received from the circuit 102 .
- the command may be parsed by the circuit 118 in the step 144 to isolate the starting address, the initial value and (if present) the range value.
- the parsed information may be transferred from the circuit 118 to the circuit 116 in the signal INFO.
- the circuit 116 may set an address value to match the starting address value received in the signal INFO.
- the circuit 116 may transfer the address value to the circuit 112 in the step 148 via the signal ADDR 2 .
- the transfer of the address value may request that the circuit 112 allocate an associated line in the circuit 114 to the buffer being created.
- the circuit 112 may respond to the allocation request by associating the address received in the signal ADDR 2 with the allocated cache line.
- the circuit 116 may access the allocated line within the circuit 114 in the step 150 .
- the circuit 116 generally writes the initial value into each word of the allocated line.
- the circuit 116 may write the initial value 32 times to fill the entire allocated line.
- the circuit 116 may examine the range value received in the signal INFO. If the range value indicates that multiple lines should be allocated to the buffer, the circuit 116 may increment the address by the size of a line in the step 156 . Returning to the example, if the initial allocated line is at an address X, the incremented address may be X+32.
- the method 140 may continue with the step 148 to request allocation of the next line to the buffer. The loop around the steps 148 to 156 and back to the step 148 may continue until all of the cache lines defined in the lineset command have been allocated in the circuit 114 . When no more lines should be allocated and initialized, the method 140 may continue with the step 158 .
- the circuit 116 may signal a cache write miss.
- the cache write miss may be handled in any of the available standard routines (or methods) to copy to the newly written data (e.g., the initial values) from the circuit 114 to the circuit 106 .
- the method 140 implemented in the hardware of the circuit 104 may allocate a buffer in the circuit 114 and preset (write) the initial value into all of the words of the buffer. Once the buffer is available in the circuit 114 (before, during or after being copied to the circuit 106 ), the circuit 102 may begin using the buffer.
- the lineset command (or instruction) may not include the range value.
- each lineset command may allocate and initialize a single cache line to the buffer per the steps 142 - 152 .
- the circuit 102 may issue a sequence of multiple lineset commands, each with a different starting address and the same initial value. For more complicated buffer initializations, each current initial value in the sequence of commands may be different from one or more of the previous initial values. Therefore, different parts of the buffer many be initialized to different values.
- Some embodiments of the present invention generally implement a dedicated (e.g., lineset) command and hardware-only logic to allocate one or more cache lines to a buffer.
- the hardware-only logic may also set each word (or element) in each allocated cache lines to a specific (e.g., initial) value received in the dedicated command.
- Portions of the functions performed by the diagrams of FIGS. 1 and 2 may be implemented using one or more of a conventional general purpose processor, digital computer, microprocessor, microcontroller, RISC (reduced instruction set computer) processor, CISC (complex instruction set computer) processor, SIMD (single instruction multiple data) processor, signal processor, central processing unit (CPU), arithmetic logic unit (ALU), video digital signal processor (VDSP) and/or similar computational machines, programmed according to the teachings of the present specification, as will be apparent to those skilled in the relevant art(s).
- RISC reduced instruction set computer
- CISC complex instruction set computer
- SIMD single instruction multiple data processor
- signal processor central processing unit
- CPU central processing unit
- ALU arithmetic logic unit
- VDSP video digital signal processor
- the present invention may also be implemented by the preparation of ASICs (application specific integrated circuits), Platform ASICs, FPGAs (field programmable gate arrays), PLDs (programmable logic devices), CPLDs (complex programmable logic device), sea-of-gates, RFICs (radio frequency integrated circuits), ASSPs (application specific standard products), one or more monolithic integrated circuits, one or more chips or die arranged as flip-chip modules and/or multi-chip modules or by interconnecting an appropriate network of conventional component circuits, as is described herein, modifications of which will be readily apparent to those skilled in the art(s).
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- PLDs programmable logic devices
- CPLDs complex programmable logic device
- sea-of-gates RFICs (radio frequency integrated circuits)
- ASSPs application specific standard products
- monolithic integrated circuits one or more chips or die arranged as flip-chip modules and/or multi-chip
- Portions of the present invention thus may also include a computer product which may be a storage medium or media and/or a transmission medium or media including instructions which may be used to program a machine to perform one or more processes or methods in accordance with the present invention.
- Execution of instructions contained in the computer product by the machine, along with operations of surrounding circuitry, may transform input data into one or more files on the storage medium and/or one or more output signals representative of a physical object or substance, such as an audio and/or visual depiction.
- the storage medium may include, but is not limited to, any type of disk including floppy disk, hard drive, magnetic disk, optical disk, CD-ROM, DVD and magneto-optical disks and circuit's such as ROMs (read-only memories), RAMs (random access memories), EPROMs (electronically programmable ROMs), EEPROMs (electronically erasable ROMs), UVPROM (ultra-violet erasable ROMs), Flash memory, magnetic cards, optical cards, and/or any type of media suitable for storing electronic instructions.
- ROMs read-only memories
- RAMs random access memories
- EPROMs electroly programmable ROMs
- EEPROMs electro-erasable ROMs
- UVPROM ultra-violet erasable ROMs
- Flash memory magnetic cards, optical cards, and/or any type of media suitable for storing electronic instructions.
- the elements of the invention may form part or all of one or more devices, units, components, systems, machines and/or apparatuses.
- the devices may include, but are not limited to, servers, workstations, storage array controllers, storage systems, personal computers, laptop computers, notebook computers, palm computers, personal digital assistants, portable electronic devices, battery powered devices, set-top boxes, encoders, decoders, transcoders, compressors, decompressors, pre-processors, post-processors, transmitters, receivers, transceivers, cipher circuits, cellular telephones, digital cameras, positioning and/or navigation systems, medical equipment, heads-up displays, wireless devices, audio recording, storage and/or playback devices, video recording, storage and/or playback devices, game platforms, peripherals and/or multi-chip modules.
- Those skilled in the relevant art(s) would understand that the elements of the invention may be implemented in other types of devices to meet the criteria of a particular application.
- the signals illustrated in FIG. 1 represent logical data flows.
- the logical data flows are generally representative of physical data transferred between the respective blocks by, for example, address, data, and control signals and/or busses.
- the system represented by the apparatus 100 may be implemented in hardware, software or a combination of hardware and software according to the teachings of the present disclosure, as would be apparent to those skilled in the relevant art(s).
- the term “simultaneously” is meant to describe events that share some common time period but the term is not meant to be limited to events that begin at the same point in time, end at the same point in time, or have the same duration.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
- The present invention relates to cache initialization generally and, more particularly, to a method and/or apparatus for implementing an allocation of preset cache lines.
- Caches are commonly used to improve processor performance in systems where data accessed by the processor is located in a slow and/or far memory (i.e., an external double data rate memory). A data cache is used to manage processor accesses to the data information in the slow/far memory. A strategy implemented in conventional data caches is to copy a line of data from the slow/far memory on any data read request from the processor that causes a cache miss.
- Many applications that work with a buffer assume that the buffer is initialized with zero values in advanced of executing the application. The application subsequently writes only new or different values to the buffer. For example, the Long Term Evolution communication standard defines an application that uses a Fast Fourier Transform buffer of size 2048 long words. In operation, only 1200 long words in the buffer are written with new information while the rest of the buffer contains the zero values. Another example buffer is a residue transform buffer of 64 short words used in decoding video. An inverse zigzag application usually fills only a minor amount of the residue transform buffer with “significant” transform coefficient values while the rest of the buffer contains the zero values.
- A straightforward approach to initialize a buffer in a data cache is to performer multiple reads from the slow/far memory to bring the lines associated with the buffer into the cache. Next, zero values are written into the cache lines during a buffer initialization stage. The reads produce cache misses when accessing the newly created buffer for the first time. The cache misses cause an increase in program execution cycles and increase power consumption during subsequent read bus transactions. A more advanced initialization approach prefetches data using a dedicated “dfetch” instruction. Usually, the dfetch instruction fetches a cache line from the slow/far memory to the cache memory in the background in an effort to reduce cache miss penalty cycles. However, the prefetching can delay treatment of regular cache misses and does not save power when accessing the slow/far memory. In addition, the prefetch approach complicates the code development because the dfetch instructions are executed early in the code to minimize a probability of cache stall cycles.
- It would be desirable to implement a method and/or apparatus for allocation of preset cache lines.
- The present invention concerns an apparatus generally having a cache memory and a circuit. The circuit may be configured to (i) parse a single first command received from a processor into a first address and a first value and (ii) allocate a first one of a plurality of lines in the cache memory to a buffer in response to the first command. The first line (a) is generally associated with the first address and (b) may have a plurality of first words. The circuit may be further configured to (iii) preset each of the first words in the first line to the first value.
- The objects, features and advantages of the present invention include providing an allocation of preset cache lines that may (i) reduce processor cycles spent initializing the buffer, (ii) avoid the use of prefetch instructions in the software code, (iii) use a special data cache command to initialize one or more cache lines, (vi) set an entire line within the cache to an initial value and/or (v) have a hardware-only implementation.
- These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which:
-
FIG. 1 is a block diagram of an apparatus in accordance with a preferred embodiment of the present invention; and -
FIG. 2 is a flow diagram of an example method for allocating preset cache lines in the apparatus. - Some embodiments of the present invention generally use a dedicated data cache instruction (or command) and hardware-only circuitry within the cache to initialize one or more lines allocated to a buffer. Instead of fetching or prefetching values from an external memory to the data cache and then overwriting the values with zero values, one or more cache line may be directly allocated in the cache memory without accessing the external memory. The allocation may include setting (or presetting) each word in the allocated lines to a specific value. The direct allocation and presetting of the lines is generally performed by dedicated hardware logic within the cache circuit. The dedicated data cache instruction generally minimizes processor cycles commonly used to allocated lines of the cache to the buffer. The direct allocation may reduce the power spent bringing unnecessary data from the external memory to the cache. Furthermore, the dedicated data cache instruction may eliminate processor cycles that are usually spent initializing the buffer with the specific value.
- Referring to
FIG. 1 , a block diagram of anapparatus 100 is shown in accordance with a preferred embodiment of the present invention. The apparatus (or device or system or integrated circuit) 100 generally comprises a block (or circuit) 102, a block (or circuit) 104 and a block (or circuit) 106. Thecircuit 104 generally comprises a block (or circuit) 110, a block (or circuit) 112, a block (or circuit) 114, a block (or circuit) 116 and a block (or circuit) 118. Thecircuits circuits - A command signal (e.g., CMD) may be exchanged between the
circuit 102 and thecircuits circuit 110 may generate an address signal (e.g., ADDR1) that is received by thecircuit 112. A control signal (e.g., CNT) may be exchanged between thecircuit 112 and thecircuit 114. A data signal (e.g., DATA1) may be exchanged between thecircuit 110 and thecircuit 114. Thecircuit 114 may exchange a data signal (e.g., FILL) with thecircuit 106. A signal (e.g., INFO) may be generated by thecircuit 118 and received by thecircuit 116. Thecircuit 116 may generate an address signal (e.g., ADDR2) that is received by thecircuit 112. Thecircuit 116 may also generate a data signal (e.g., DATA2) that is received by thecircuit 114. - The
circuit 102 may implement a processor (e.g., a central processor unit) circuit. Thecircuit 102 is generally operational to execute software programs that read, write and modify data. Thecircuit 102 may send one or more commands (or instructions) to thecircuit 104 via the signal CMD. At least one of the commands may be a unique (or custom) command used to create and initialize a buffer in thecircuit 104. The unique command (e.g., a “lineset” command) may include a starting address of the buffer, an initial value to which all of the words in the buffer are initially preset and an optional range value defining how many cache lines are in the buffer. - The
circuit 104 may implement a cache circuit. In some embodiments, thecircuit 104 generally implements a data cache circuit. Thecircuit 104 may be operational to perform standard cache operations in response to one or more access (e.g., read access and/or write access) commands received from thecircuit 102 in the signal CMD. Thecircuit 104 may also communicate with thecircuit 106 to transfer write data received from thecircuit 102 to thecircuit 106. Thecircuit 104 may also receive read data from thecircuit 106 when a read access by thecircuit 102 results in a cache miss and/or when a fetch or prefetch command is issued by thecircuit 102. In some situations, thecircuit 104 may be configured to hold one or more buffers used by the software executing in thecircuit 102. - The
circuit 102 may include dedicated hardware circuitry that is used to allocate and initialize the buffers within thecircuit 104. The dedicated hardware circuitry generally parses the lineset command received from thecircuit 102 into the starting address of the buffer, the initial value and the range value. In response to the lineset command, thecircuit 104 may allocated at least one line among the multiple lines in thecircuit 104 to the buffer. Per the normal caching operation, the at least one line may be associated with the starting address. Each line in the cache generally contains multiple words (e.g., 8-bit words, 16-bit words, 32-bit words or the like). Once a line has been allocated, the dedicated circuitry may write the initial value into each word (or element) of the line. If the range value is greater than a single cache line, the dedicated circuitry may also allocated additional lines to the buffer and set the words within the additional lines to the initial value. After the buffer has been allocated and all of the words have been set (or preset) to the initial value, the dedicated circuitry may optionally indicate a cache write miss to cause the newly formed buffer to be copied to thecircuit 106. Any normal cache write miss technique may be implemented to cause the buffer to be copied from the cache to thecircuit 106. - The
circuit 106 may implement a memory circuit. Thecircuit 106 is generally operational to store data and/or commands used by the software executed in thecircuit 102. Thecircuit 106 may be a solid state memory (e.g., a double data rate memory). Other memory technologies may be implemented to meet the criteria of a particular application. Thecircuit 106 may implement another cache circuit, an external memory and/or a mass storage device. In some embodiments, thecircuit 106 may be fabricated on the same die as thecircuits circuit 106 may be fabricated apart from the die used to fabricate thecircuits circuit 106 may present data to thecircuit 104 via the signal FILL in response to a cache read miss and/or a cache write miss. The signal FILL may also be used to transfer data from thecircuit 104 back to thecircuit 106 in response to a cache write. - The
circuit 110 may implement a cache logic circuit. Thecircuit 110 may be operational to perform standard cache operations that respond to commands received from thecircuit 102 in the signal CMD. For cache read operations, thecircuit 110 may attempt to read the requested data at an address from thecircuit 114. The address may be transferred to thecircuit 112 in the signal ADDR1. If the data is present in thecircuit 114, a cache hit is generally declared. The requested data may be copied from thecircuit 114 to thecircuit 110 via the signal DATA1 and presented from thecircuit 110 to thecircuit 102. If the requested data is not in thecircuit 114, a cache miss may be declared and the requested data is fetched from thecircuit 106 via the signal FILL. Once the requested data is available in thecircuit 114, thecircuit 110 may send a copy of the requested data to thecircuit 102. For cache write operations, thecircuit 110 may attempt to write data received from thecircuit 102 into thecircuit 114 via the signal DATA1. If the line associated with the requested write address is already present in thecircuit 114, the write data may be copied into thecircuit 114. Either simultaneously, or at a later time, the write data may be transferred from thecircuit 114 to thecircuit 106 under the control of thecircuit 110. Thecircuit 110 generally does not respond to the lineset command used to allocated and initialize a buffer. - The
circuit 112 may implement a tag logic circuit. Thecircuit 112 is generally operational to determine if a cache hit or cache miss has occurred in response to the address received from thecircuit 110 via the signal ADDR1. When thecircuit 112 receives the address, thecircuit 112 may compare the address with tags for the lines of data currently held in thecircuit 114. If the address matches a tag, a cache hit is declared. If the address does not match any of the tags, a cache miss is declared. The tag information is generally received from thecircuit 114 via the signal CNT in a normal manner. - The
circuit 112 may also be operational to respond to an address received in the signal ADDR2 from thecircuit 116. The address in the signal ADDR2 may be used by thecircuit 112 to allocate a single line in thecircuit 114 to a buffer. Thecircuit 112 generally associates the single line to the address received from thecircuit 116. If thecircuit 112 receives a sequence of multiple addresses in the signal ADDR2, thecircuit 112 may allocate multiple lines in thecircuit 114, a single line being associated with each respective address. - The
circuit 114 may implement a cache memory circuit. Thecircuit 114 is generally operational to store multiple data words. The data words may be arranged as multiple lines. Each line is generally associated with one or more addresses in the address range of thecircuit 106. For example, an N-associative configuration in thecircuit 114 generally means that each line within thecircuit 114 may store the data words from N different addresses in thecircuit 106, one address at a time. In some embodiments, thecircuit 114 may be configured as a fully associative cache memory. - The
circuit 116 may implement a cache line set circuit. Thecircuit 116 is generally operational to command thecircuit 112 to allocate the one or more lines in thecircuit 114 to a buffer in response to the starting address and range value received in the signal INFO. Thecircuit 116 may transfer the address of each line of the buffer one at a time to thecircuit 112 in the signal ADDR2. Once a line in thecircuit 114 has been allocated to the buffer, thecircuit 116 may write the initial value to each data word in the cache line using the signal DATA2. Once all of the lines have been allocated to the buffer and all of the data words have been set to the initial value, thecircuit 116 may initiate a cache write miss routine (or operation) that causes the newly initialized buffer to be copied from thecircuit 114 to thecircuit 106. - The
circuit 118 may implement a register circuit. Thecircuit 118 is generally operational to recognize the lineset commands issued by thecircuit 102 in the signal CMD. When a lineset command is found, thecircuit 118 may store a copy of the command. The command may be parsed (or divided) by thecircuit 118 into the staring address, the initial value and the range value. The starting address, the initial value and the range value may be transferred from thecircuit 118 to thecircuit 116 via the signal INFO. - Referring to
FIG. 2 , a flow diagram of anexample method 140 for allocating preset cache lines is shown. The method (or process) 140 may be implemented by thecircuit 104. Themethod 140 generally comprises a step (or state) 142, a step (or state) 144, a step (or state) 146, a step (or state) 148, a step (or state) 150, a step (or state) 152, a step (or state) 154, a step (or state) 156 and a step (or state) 158. Thesteps 142 to 158 may represent modules and/or blocks that may be implemented as hardware. - In the
step 142, thecircuit 118 may recognize and buffer a lineset command received from thecircuit 102. The command may be parsed by thecircuit 118 in thestep 144 to isolate the starting address, the initial value and (if present) the range value. The parsed information may be transferred from thecircuit 118 to thecircuit 116 in the signal INFO. - In the
step 146, thecircuit 116 may set an address value to match the starting address value received in the signal INFO. Thecircuit 116 may transfer the address value to thecircuit 112 in thestep 148 via the signal ADDR2. The transfer of the address value may request that thecircuit 112 allocate an associated line in thecircuit 114 to the buffer being created. Thecircuit 112 may respond to the allocation request by associating the address received in the signal ADDR2 with the allocated cache line. - The
circuit 116 may access the allocated line within thecircuit 114 in thestep 150. In thestep 152, thecircuit 116 generally writes the initial value into each word of the allocated line. By way of example, if each cache line is multiple (e.g., 64) bytes wide and each data word in the cache line is multiple (e.g., 2) bytes wide, each cache line may contain several (e.g., 64/2=32) individually accessible words. In the example, thecircuit 116 may write the initial value 32 times to fill the entire allocated line. - In the
step 154, thecircuit 116 may examine the range value received in the signal INFO. If the range value indicates that multiple lines should be allocated to the buffer, thecircuit 116 may increment the address by the size of a line in thestep 156. Returning to the example, if the initial allocated line is at an address X, the incremented address may be X+32. Themethod 140 may continue with thestep 148 to request allocation of the next line to the buffer. The loop around thesteps 148 to 156 and back to thestep 148 may continue until all of the cache lines defined in the lineset command have been allocated in thecircuit 114. When no more lines should be allocated and initialized, themethod 140 may continue with thestep 158. In thestep 158, thecircuit 116 may signal a cache write miss. The cache write miss may be handled in any of the available standard routines (or methods) to copy to the newly written data (e.g., the initial values) from thecircuit 114 to thecircuit 106. In response to a single command (e.g., the lineset command), themethod 140 implemented in the hardware of thecircuit 104 may allocate a buffer in thecircuit 114 and preset (write) the initial value into all of the words of the buffer. Once the buffer is available in the circuit 114 (before, during or after being copied to the circuit 106), thecircuit 102 may begin using the buffer. - In some embodiments, the lineset command (or instruction) may not include the range value. In such cases, each lineset command may allocate and initialize a single cache line to the buffer per the steps 142-152. To create a buffer larger than a single cache line, the
circuit 102 may issue a sequence of multiple lineset commands, each with a different starting address and the same initial value. For more complicated buffer initializations, each current initial value in the sequence of commands may be different from one or more of the previous initial values. Therefore, different parts of the buffer many be initialized to different values. - Some embodiments of the present invention generally implement a dedicated (e.g., lineset) command and hardware-only logic to allocate one or more cache lines to a buffer. The hardware-only logic may also set each word (or element) in each allocated cache lines to a specific (e.g., initial) value received in the dedicated command.
- Portions of the functions performed by the diagrams of
FIGS. 1 and 2 may be implemented using one or more of a conventional general purpose processor, digital computer, microprocessor, microcontroller, RISC (reduced instruction set computer) processor, CISC (complex instruction set computer) processor, SIMD (single instruction multiple data) processor, signal processor, central processing unit (CPU), arithmetic logic unit (ALU), video digital signal processor (VDSP) and/or similar computational machines, programmed according to the teachings of the present specification, as will be apparent to those skilled in the relevant art(s). Appropriate software, firmware, coding, routines, instructions, opcodes, microcode, and/or program modules may readily be prepared by skilled programmers based on the teachings of the present disclosure, as will also be apparent to those skilled in the relevant art(s). The software is generally executed from a medium or several media by one or more of the processors of the machine implementation. - The present invention may also be implemented by the preparation of ASICs (application specific integrated circuits), Platform ASICs, FPGAs (field programmable gate arrays), PLDs (programmable logic devices), CPLDs (complex programmable logic device), sea-of-gates, RFICs (radio frequency integrated circuits), ASSPs (application specific standard products), one or more monolithic integrated circuits, one or more chips or die arranged as flip-chip modules and/or multi-chip modules or by interconnecting an appropriate network of conventional component circuits, as is described herein, modifications of which will be readily apparent to those skilled in the art(s).
- Portions of the present invention thus may also include a computer product which may be a storage medium or media and/or a transmission medium or media including instructions which may be used to program a machine to perform one or more processes or methods in accordance with the present invention. Execution of instructions contained in the computer product by the machine, along with operations of surrounding circuitry, may transform input data into one or more files on the storage medium and/or one or more output signals representative of a physical object or substance, such as an audio and/or visual depiction. The storage medium may include, but is not limited to, any type of disk including floppy disk, hard drive, magnetic disk, optical disk, CD-ROM, DVD and magneto-optical disks and circuit's such as ROMs (read-only memories), RAMs (random access memories), EPROMs (electronically programmable ROMs), EEPROMs (electronically erasable ROMs), UVPROM (ultra-violet erasable ROMs), Flash memory, magnetic cards, optical cards, and/or any type of media suitable for storing electronic instructions.
- The elements of the invention may form part or all of one or more devices, units, components, systems, machines and/or apparatuses. The devices may include, but are not limited to, servers, workstations, storage array controllers, storage systems, personal computers, laptop computers, notebook computers, palm computers, personal digital assistants, portable electronic devices, battery powered devices, set-top boxes, encoders, decoders, transcoders, compressors, decompressors, pre-processors, post-processors, transmitters, receivers, transceivers, cipher circuits, cellular telephones, digital cameras, positioning and/or navigation systems, medical equipment, heads-up displays, wireless devices, audio recording, storage and/or playback devices, video recording, storage and/or playback devices, game platforms, peripherals and/or multi-chip modules. Those skilled in the relevant art(s) would understand that the elements of the invention may be implemented in other types of devices to meet the criteria of a particular application.
- As would be apparent to those skilled in the relevant art(s), the signals illustrated in
FIG. 1 represent logical data flows. The logical data flows are generally representative of physical data transferred between the respective blocks by, for example, address, data, and control signals and/or busses. The system represented by theapparatus 100 may be implemented in hardware, software or a combination of hardware and software according to the teachings of the present disclosure, as would be apparent to those skilled in the relevant art(s). As used herein, the term “simultaneously” is meant to describe events that share some common time period but the term is not meant to be limited to events that begin at the same point in time, end at the same point in time, or have the same duration. - While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the scope of the invention.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/159,653 US20120324195A1 (en) | 2011-06-14 | 2011-06-14 | Allocation of preset cache lines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/159,653 US20120324195A1 (en) | 2011-06-14 | 2011-06-14 | Allocation of preset cache lines |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120324195A1 true US20120324195A1 (en) | 2012-12-20 |
Family
ID=47354691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/159,653 Abandoned US20120324195A1 (en) | 2011-06-14 | 2011-06-14 | Allocation of preset cache lines |
Country Status (1)
Country | Link |
---|---|
US (1) | US20120324195A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262772A1 (en) * | 2012-04-02 | 2013-10-03 | Lsi Corporation | On-demand allocation of cache memory for use as a preset buffer |
US20140040550A1 (en) * | 2011-09-30 | 2014-02-06 | Bill Nale | Memory channel that supports near memory and far memory access |
US20140115265A1 (en) * | 2012-10-24 | 2014-04-24 | Texas Instruments Incorporated | Optimum cache access scheme for multi endpoint atomic access in a multicore system |
US9378142B2 (en) | 2011-09-30 | 2016-06-28 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
WO2016160202A1 (en) * | 2015-03-27 | 2016-10-06 | Intel Corporation | Two level memory full line writes |
US9600407B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
US9600416B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778422A (en) * | 1996-04-04 | 1998-07-07 | International Business Machines Corporation | Data processing system memory controller that selectively caches data associated with write requests |
US6108752A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency |
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US20030126233A1 (en) * | 2001-07-06 | 2003-07-03 | Mark Bryers | Content service aggregation system |
US20030159001A1 (en) * | 2002-02-19 | 2003-08-21 | Chalmer Steven R. | Distributed, scalable data storage facility with cache memory |
US20030188105A1 (en) * | 2002-01-23 | 2003-10-02 | Arm Limited | Management of caches in a data processing apparatus |
US20040158682A1 (en) * | 2002-02-12 | 2004-08-12 | Ip-First Llc | Cache data block allocation and initialization mechanism |
US20070233962A1 (en) * | 2006-03-29 | 2007-10-04 | Arm Limited | Store buffer |
US20080147990A1 (en) * | 2006-12-15 | 2008-06-19 | Microchip Technology Incorporated | Configurable Cache for a Microprocessor |
US20080229070A1 (en) * | 2007-03-12 | 2008-09-18 | Arm Limited | Cache circuitry, data processing apparatus and method for prefetching data |
US20090216956A1 (en) * | 2008-02-25 | 2009-08-27 | International Business Machines Corporation | System, method and computer program product for enhancing timeliness of cache prefetching |
US20090240891A1 (en) * | 2008-03-19 | 2009-09-24 | International Business Machines Corporation | Method, system and computer program product for data buffers partitioned from a cache array |
US20100077151A1 (en) * | 2007-01-25 | 2010-03-25 | Nxp, B.V. | Hardware triggered data cache line pre-allocation |
US20100250856A1 (en) * | 2009-03-27 | 2010-09-30 | Jonathan Owen | Method for way allocation and way locking in a cache |
US20130013860A1 (en) * | 2011-06-01 | 2013-01-10 | International Business Machines Corporation | Memory cell presetting for improved memory performance |
-
2011
- 2011-06-14 US US13/159,653 patent/US20120324195A1/en not_active Abandoned
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5778422A (en) * | 1996-04-04 | 1998-07-07 | International Business Machines Corporation | Data processing system memory controller that selectively caches data associated with write requests |
US6108752A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency |
US20030126233A1 (en) * | 2001-07-06 | 2003-07-03 | Mark Bryers | Content service aggregation system |
US20030188105A1 (en) * | 2002-01-23 | 2003-10-02 | Arm Limited | Management of caches in a data processing apparatus |
US20040158682A1 (en) * | 2002-02-12 | 2004-08-12 | Ip-First Llc | Cache data block allocation and initialization mechanism |
US20030159001A1 (en) * | 2002-02-19 | 2003-08-21 | Chalmer Steven R. | Distributed, scalable data storage facility with cache memory |
US20070233962A1 (en) * | 2006-03-29 | 2007-10-04 | Arm Limited | Store buffer |
US20080147990A1 (en) * | 2006-12-15 | 2008-06-19 | Microchip Technology Incorporated | Configurable Cache for a Microprocessor |
US20100077151A1 (en) * | 2007-01-25 | 2010-03-25 | Nxp, B.V. | Hardware triggered data cache line pre-allocation |
US20080229070A1 (en) * | 2007-03-12 | 2008-09-18 | Arm Limited | Cache circuitry, data processing apparatus and method for prefetching data |
US20090216956A1 (en) * | 2008-02-25 | 2009-08-27 | International Business Machines Corporation | System, method and computer program product for enhancing timeliness of cache prefetching |
US20090240891A1 (en) * | 2008-03-19 | 2009-09-24 | International Business Machines Corporation | Method, system and computer program product for data buffers partitioned from a cache array |
US20100250856A1 (en) * | 2009-03-27 | 2010-09-30 | Jonathan Owen | Method for way allocation and way locking in a cache |
US20130013860A1 (en) * | 2011-06-01 | 2013-01-10 | International Business Machines Corporation | Memory cell presetting for improved memory performance |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600407B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
US9378142B2 (en) | 2011-09-30 | 2016-06-28 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
US10241943B2 (en) | 2011-09-30 | 2019-03-26 | Intel Corporation | Memory channel that supports near memory and far memory access |
US11132298B2 (en) | 2011-09-30 | 2021-09-28 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
US10282323B2 (en) | 2011-09-30 | 2019-05-07 | Intel Corporation | Memory channel that supports near memory and far memory access |
US10241912B2 (en) | 2011-09-30 | 2019-03-26 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
US20140040550A1 (en) * | 2011-09-30 | 2014-02-06 | Bill Nale | Memory channel that supports near memory and far memory access |
US10719443B2 (en) | 2011-09-30 | 2020-07-21 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
US9342453B2 (en) * | 2011-09-30 | 2016-05-17 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9600416B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
US10691626B2 (en) | 2011-09-30 | 2020-06-23 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9619408B2 (en) | 2011-09-30 | 2017-04-11 | Intel Corporation | Memory channel that supports near memory and far memory access |
US10102126B2 (en) | 2011-09-30 | 2018-10-16 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
US10282322B2 (en) | 2011-09-30 | 2019-05-07 | Intel Corporation | Memory channel that supports near memory and far memory access |
US20130262772A1 (en) * | 2012-04-02 | 2013-10-03 | Lsi Corporation | On-demand allocation of cache memory for use as a preset buffer |
US8656107B2 (en) * | 2012-04-02 | 2014-02-18 | Lsi Corporation | On-demand allocation of cache memory for use as a preset buffer |
US9372796B2 (en) * | 2012-10-24 | 2016-06-21 | Texas Instruments Incorporated | Optimum cache access scheme for multi endpoint atomic access in a multicore system |
US20140115265A1 (en) * | 2012-10-24 | 2014-04-24 | Texas Instruments Incorporated | Optimum cache access scheme for multi endpoint atomic access in a multicore system |
US10140213B2 (en) | 2015-03-27 | 2018-11-27 | Intel Corporation | Two level memory full line writes |
US9619396B2 (en) | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
WO2016160202A1 (en) * | 2015-03-27 | 2016-10-06 | Intel Corporation | Two level memory full line writes |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8843690B2 (en) | Memory conflicts learning capability | |
US10303609B2 (en) | Independent tuning of multiple hardware prefetchers | |
US10120663B2 (en) | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture | |
US20120324195A1 (en) | Allocation of preset cache lines | |
EP3391203B1 (en) | Instructions and logic for load-indices-and-prefetch-scatters operations | |
JP5709988B2 (en) | Method and system for reducing power consumption of a memory device | |
EP3380943B1 (en) | Instruction and logic for cache control operations | |
US9507596B2 (en) | Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources | |
US20170177349A1 (en) | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations | |
US10565131B2 (en) | Main memory including hardware accelerator and method of operating the same | |
US8850123B2 (en) | Cache prefetch learning | |
US9405706B2 (en) | Instruction and logic for adaptive dataset priorities in processor caches | |
US9558127B2 (en) | Instruction and logic for a cache prefetcher and dataless fill buffer | |
JP2009512919A (en) | System and method for improved DMAC conversion mechanism | |
US20170286118A1 (en) | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion | |
US11188256B2 (en) | Enhanced read-ahead capability for storage devices | |
US11204874B2 (en) | Secure memory repartitioning technologies | |
US10705962B2 (en) | Supporting adaptive shared cache management | |
CN111353156A (en) | Scalable multi-key global memory encryption engine | |
US10248574B2 (en) | Input/output translation lookaside buffer prefetching | |
US20150169439A1 (en) | Isochronous agent data pinning in a multi-level memory system | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
US8621153B2 (en) | Microcode refactoring and caching | |
US8850159B2 (en) | Method and system for latency optimized ATS usage | |
JP7170093B2 (en) | Improved read-ahead capabilities for storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LSI CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RABINOVITCH, ALEXANDER;ARVIV, ELIAHOU;GAZIT, IDO;AND OTHERS;REEL/FRAME:026438/0860 Effective date: 20110612 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LSI CORPORATION;REEL/FRAME:035390/0388 Effective date: 20140814 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |