Prefetching Patents (Class 712/207)
  • Patent number: 7328327
    Abstract: A processor includes a fetch pipeline, out-of-order (OOO) logic and a strand selector. The fetch pipeline is configured to provide instructions from an instruction store to a fetch buffer responsive to receiving a plurality of fetch requests for a first strand, selected from a plurality of active strands. The OOO logic is coupled to the fetch pipeline and is configured to detect an OOO packet in the fetch pipeline in response to the fetch requests for the first strand. The strand selector is coupled to the OOO logic and the fetch pipeline and selects a second strand for processing in the fetch pipeline, from the active strands, when the OOO logic detects the OOO packet associated with the first strand.
    Type: Grant
    Filed: January 11, 2006
    Date of Patent: February 5, 2008
    Assignee: Sun Microsystems, Inc.
    Inventor: Abid Ali
  • Patent number: 7318125
    Abstract: A control mechanism that allows individual applications to turn hardware prefetch on or off is provided. By preliminary trial run one can determine precisely whether an application will benefit or suffer from hardware prefetch. The selective control of prefetching by individual applications is made possible by associating a status bit with individual processes in the machine status word of each processor. Using this prefetch bit, a process turns prefetching on or off to its own advantage in the processor core immediately after a context switch.
    Type: Grant
    Filed: May 20, 2004
    Date of Patent: January 8, 2008
    Assignee: International Business Machines Corporation
    Inventors: Men-Chow Chiang, Kaivalya M. Dixit, Sujatha Kashyap
  • Patent number: 7313656
    Abstract: A pre-fetch method for a data storage system having disk drives and a cache memory. The method generates a history as pages are from the disk drives for storage in the cache memory, such history indicating whether a page previous to the requested page is already in the cache memory. The history generation is used during subsequent requests to determine, when a page is again requested, the number of pages that are to be read from the disk drive into the cache memory, the number of pages to be read being determined from the generated history.
    Type: Grant
    Filed: December 27, 2004
    Date of Patent: December 25, 2007
    Assignee: EMC Corporation
    Inventor: David W. Harvey
  • Patent number: 7313655
    Abstract: The present invention provides a pre-fetch controller and a method thereof for efficiently pre-fetching data from a memory device. The method includes initializing a counter value; fetching a data from the memory and subtracting the counter value by a first value when a pre-fetching is activated; adding a second value to the counter value when a cache hit occurs; comparing the counter value with a first threshold value; and when the counter value is smaller than the first threshold value, stopping pre-fetching the data from the memory.
    Type: Grant
    Filed: October 6, 2004
    Date of Patent: December 25, 2007
    Assignee: VIA Technologies Inc.
    Inventor: Wenchi Hsu
  • Patent number: 7310722
    Abstract: Instruction dispatch in a multithreaded microprocessor such as a graphics processor is not constrained by an order among the threads. Instructions are fetched into an instruction buffer that is configured to store an instruction from each of the threads. A dispatch circuit determines which instructions in the buffer are ready to execute and may issue any ready instruction for execution. An instruction from one thread may be issued prior to an instruction from another thread regardless of which instruction was fetched into the buffer first. Once an instruction from a particular thread has issued, the fetch circuit fills the available buffer location with the following instruction from that thread.
    Type: Grant
    Filed: December 18, 2003
    Date of Patent: December 18, 2007
    Assignee: NVIDIA Corporation
    Inventors: Simon S. Moy, John Erik Lindholm
  • Patent number: 7296140
    Abstract: A method and apparatus to detect and filter out redundant cache line addresses in a prefetch input queue, and to adjust the detector window size dynamically according to the number of detector entries in the queue for the cache-to-memory controller bus. Detectors correspond to cache line addresses that may represent cache misses in various levels of cache memory.
    Type: Grant
    Filed: January 12, 2006
    Date of Patent: November 13, 2007
    Assignee: Intel Corporation
    Inventors: Eric A. Sprangle, Anwar Q. Rohillah
  • Patent number: 7290119
    Abstract: A memory accelerator module buffers program instructions and/or data for high speed access using a deterministic access protocol. The program memory is logically partitioned into ‘stripes’, or ‘cyclically sequential’ partitions, and the memory accelerator module includes a latch that is associated with each partition. When a particular partition is accessed, it is loaded into its corresponding latch, and the instructions in the next sequential partition are automatically pre-fetched into their corresponding latch. In this manner, the performance of a sequential-access process will have a known response, because the pre-fetched instructions from the next partition will be in the latch when the program sequences to these instructions. Previously accessed blocks remain in their corresponding latches until the pre-fetch process ‘cycles around’ and overwrites the contents of each sequentially-accessed latch.
    Type: Grant
    Filed: August 20, 2004
    Date of Patent: October 30, 2007
    Assignee: NXP B.V.
    Inventors: Gregory K. Goodhue, Ata R. Khan, John H. Wharton, Robert Michael Kallal
  • Patent number: 7280548
    Abstract: A system is provided for enabling a non-speculative pre-fetch operation for processing instructions to be performed in the background ahead of immediate packet processing by a packet processor. The system comprises a packet-management unit for accepting data packets and enqueuing them for processing, a processor unit for processing the data packets, a processor core memory for holding context registers and functional units for processing, a memory for holding a plurality of instruction threads and a software-configurable hardware table for relating queues to pointers to beginnings of instruction threads. The packet-management unit selects an available context in the processor core for processing of a data packet, consults the table, and communicates the pointer to the processor, enabling the processor to perform the non-speculative pre-fetch for instructions.
    Type: Grant
    Filed: April 6, 2006
    Date of Patent: October 9, 2007
    Assignee: MIPS Technologies, Inc.
    Inventors: Nandakumar Sampath, Enrique Musoll, Stephen Melvin, Mario Nemirovsky
  • Patent number: 7278013
    Abstract: Briefly, in accordance with one embodiment of the invention, a processor has a loop buffer and a cache that provides requested information to a processor core.
    Type: Grant
    Filed: February 27, 2004
    Date of Patent: October 2, 2007
    Assignee: Intel Corporation
    Inventor: Lawrence A. Booth
  • Patent number: 7272705
    Abstract: A programmable processor is adapted to detect exception conditions associated with one or more instructions before the instructions are executed. The detected exception conditions may be stored with the one or more instructions in a prefetch unit. Then, the exception conditions may be issued in parallel with the issuance of the instructions.
    Type: Grant
    Filed: May 23, 2005
    Date of Patent: September 18, 2007
    Assignee: Analog Devices, Inc.
    Inventors: Juan G. Revilla, Ravi P. Singh, Charles P. Roth
  • Patent number: 7260704
    Abstract: A content prefetcher having a prefetch chain reinforcement mechanism. In response to a prefetch hit at a cache line within a prefetch chain, a request depth of the hit cache line is promoted and the hit cache line is scanned for candidate virtual addresses in order to reinforce the prefetch chain.
    Type: Grant
    Filed: June 5, 2002
    Date of Patent: August 21, 2007
    Assignee: Intel Corporation
    Inventors: Robert N. Cooksey, Stephan J. Jourdan
  • Patent number: 7257810
    Abstract: One embodiment of the present invention provides a system that generates code to perform anticipatory prefetching for data references. During operation, the system receives code to be executed on a computer system. Next, the system analyzes the code to identify data references to be prefetched. This analysis can involve: using a two-phase marking process in which blocks that are certain to execute are considered before other blocks; and analyzing complex array subscripts. Next, the system inserts prefetch instructions into the code in advance of the identified data references. This insertion can involve: dealing with non-constant or unknown stride values; moving prefetch instructions into preceding basic blocks; and issuing multiple prefetches for the same data reference.
    Type: Grant
    Filed: November 2, 2001
    Date of Patent: August 14, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Partha P Tirumalai, Spiros Kalogeropulos, Mahadevan Rajagopalan, Yonghong Song, Vikram Rao
  • Patent number: 7240161
    Abstract: A disk drive control system comprising a micro-controller, a micro-controller cache system adapted to store micro-controller data for access by the micro-controller, a buffer manager adapted to provide the micro-controller cache system with micro-controller requested data stored in a remote memory, and a cache demand circuit adapted to: a) receive a memory address and a memory access signal, and b) cause the micro-controller cache system to fetch data from the remote memory via the buffer manager based on the received memory address and memory access signal prior to a micro-controller request.
    Type: Grant
    Filed: July 31, 2003
    Date of Patent: July 3, 2007
    Assignee: Western Digital Technologies, Inc.
    Inventor: William B. Boyle
  • Patent number: 7240163
    Abstract: An apparatus in a microprocessor for selectively retiring a prefetched cache line is disclosed. In a first embodiment, a first count of the number of accesses to the prefetched cache line and N second counts of the number of accesses to N lines of a replacement candidate set of the cache selected by the prefetched cache line address are maintained. When another prefetch is requested, if the first count is greater than the smaller of the N second counts, the candidate prefetched cache line is retired into the cache; otherwise the prefetched cache line is discarded. In a second embodiment, a count of accesses to the replacement candidate line is maintained. When another prefetch is requested, if the count is greater than a programmable threshold value, the candidate prefetched cache line is retired into the cache; otherwise the prefetched cache line is discarded.
    Type: Grant
    Filed: August 8, 2005
    Date of Patent: July 3, 2007
    Assignee: IP-First, LLC
    Inventors: Glenn Henry, Rodney Hooker
  • Patent number: 7237068
    Abstract: Various embodiments of a computer system employing bundled prefetching are disclosed. In one embodiment, a cache memory subsystem implements a method for prefetching data. The method comprises the cache memory subsystem receiving a read request to access a line of data and determining that a cache miss with respect to the line occurred. The method further comprises transmitting a bundled transaction on a system interconnect in response to the cache miss, wherein the bundled transaction combines a request for the line of data and a prefetch request.
    Type: Grant
    Filed: January 28, 2004
    Date of Patent: June 26, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Dan G. Wallin, Erik E. Hagersten
  • Patent number: 7234136
    Abstract: One embodiment of the present invention provides a system that generates code to perform anticipatory prefetching for data references. During operation, the system receives code to be executed on a computer system. Next, the system analyzes the code to identify data references to be prefetched. This analysis can involve: using a two-phase marking process in which blocks that are certain to execute are considered before other blocks; and analyzing complex array subscripts. Next, the system inserts prefetch instructions into the code in advance of the identified data references. This insertion can involve: dealing with non-constant or unknown stride values; moving prefetch instructions into preceding basic blocks; and issuing multiple prefetches for the same data reference.
    Type: Grant
    Filed: November 2, 2001
    Date of Patent: June 19, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Partha P Tirumalai, Spiros Kalogeropulos, Mahadevan Rajagopalan, Yonghong Song, Vikram Rao
  • Patent number: 7234041
    Abstract: In a method for fetching instructions in an embedded system, a predicted one of a set of the instructions stored in a memory device is fetched and is subsequently stored in an instruction buffer when a system bus is in a data access phase. When a processor generates an access request for the memory device, the predicted one of the instructions stored in the instruction buffer is provided to the system bus for receipt by the processor upon determining that the predicted one of the instructions stored in the instruction buffer hits the access request from the processor. An embedded system with an instruction prefetch device is also disclosed.
    Type: Grant
    Filed: June 10, 2003
    Date of Patent: June 19, 2007
    Assignee: Mediatek Inc.
    Inventor: Chang-Fu Lin
  • Patent number: 7234025
    Abstract: A microprocessor that executes a repeat prefetch instruction (REP PREFETCH). The REP PREFETCH prefetches multiple cache lines, wherein the number of cache lines is specifiable in the instruction. The instruction is specified by the Pentium III PREFETCH opcode preceded by the REP string instruction prefix. The programmer specifies the count of cache lines to be prefetched in the ECX register, similarly to the repeat count of a REP string instruction. The effective address of the first cache line is specified similar to the conventional PREFETCH instruction. The REP PREFETCH instruction stops if the address of the current prefetch cache line misses in the TLB, or if the current processor level changes. Additionally, a line is prefetched only if the number of free response buffers is above a programmable threshold. The prefetches are performed at a lower priority than other activities needing access to the cache or TLB.
    Type: Grant
    Filed: November 3, 2004
    Date of Patent: June 19, 2007
    Assignee: IP-First, LLC
    Inventor: Rodney E. Hooker
  • Patent number: 7231511
    Abstract: Methods and apparatus, including computer program products, for a microinstruction pointer stack in a processor. A method executed in a processor includes executing microcode (?code) addressed by pointers stored in an out-of-order microinstruction pointer (?IP) stack, and manipulating the ?IP stack with a set of microinstructions.
    Type: Grant
    Filed: December 20, 2001
    Date of Patent: June 12, 2007
    Assignee: Intel Corporation
    Inventors: Michael P. Cornaby, Ben Chaffin
  • Patent number: 7225318
    Abstract: In a continuous burst memory read operation, a dynamic prefetch circuit compares a prefetched address with a received address. If the compared addresses are identical, the prefetched address is applied to the memory; else the prefetched address is preempted by the received address, the received address is coupled to the memory, and output data corresponding to the prefetched address is interrupted.
    Type: Grant
    Filed: October 8, 2003
    Date of Patent: May 29, 2007
    Assignee: Intel Corporation
    Inventors: Wayne Tran, Henry Wong
  • Patent number: 7206902
    Abstract: A system, apparatus, and method are disclosed for predicting accesses to memory. In one embodiment, an exemplary apparatus comprises a processor configured to execute program instructions and process program data, a memory including the program instructions and the program data, and a memory processor. The memory processor can include a speculator configured to receive an address containing the program instructions or the program data. Such a speculator can comprise a sequential predictor for generating a configurable number of sequential addresses. The speculator can also include a nonsequential predictor configured to associate a subset of addresses to the address and to predict a group of addresses based on at least one address of the subset, wherein at least one address of the subset is unpatternable to the address.
    Type: Grant
    Filed: August 17, 2004
    Date of Patent: April 17, 2007
    Assignee: NVIDIA Corporation
    Inventors: Ziyad S. Hakura, Brian Keith Langendorf, Stefano A. Pescador, Radoslav Danilak, Brad W. Simeral
  • Patent number: 7197603
    Abstract: A pipelined processor includes a branch acceleration technique which is based on an improved branch cache. The improved branch cache minimizes or eliminates delays caused by branch instructions, especially data-dependent unpredictable branches. The improved branch cache avoids stalls by providing data that will be inserted into the pipeline stages that would otherwise have stalled when a branch is taken. Special architectural features and control structures are supplied to minimize the amount of information that must be cached by recognizing that only selected types of branches should be cached and by making use of available cycles that would otherwise be wasted. The improved branch cache supplies the missing information to the pipeline in the place of the discarded instructions, completely eliminating the pipeline stall. This technique accelerates performance, especially in real-time code that must evaluate data-dependent conditions and branch accordingly.
    Type: Grant
    Filed: September 25, 2003
    Date of Patent: March 27, 2007
    Assignee: Micron Technology, Inc.
    Inventor: Eric M. Dowling
  • Patent number: 7194605
    Abstract: A method for compressing a set of instructions in an adaptive computing machine includes identifying frequently executed instructions, inserting an explicit caching instruction associating the identified instructions with an index value in the set of instructions before the identified instructions and replacing at least one instance of the frequently executed instructions subsequent to the explicit caching instruction with a compressed instruction referencing the index value. One or more instructions can be identified for compression, including groups of consecutive or non-consecutive instructions. The explicit caching instruction directs a node in an adaptive computing machine to store instructions in an instruction storage unit in association with an index value. Instructions stored in the storage unit are retrievable with reference to the index value.
    Type: Grant
    Filed: July 24, 2003
    Date of Patent: March 20, 2007
    Assignee: NVIDIA Corporation
    Inventor: Amit Ramchandran
  • Patent number: 7194604
    Abstract: Disclosed is a method and apparatus providing a microprocessor the ability to reuse data cache content fetched during runahead execution. Said data is stored and later retrieved based upon the instruction address of an instruction which is accessing the data cache. The reuse mechanism allows the reduction of address generation interlocking scenarios with the ability to self-correct should the stored values be incorrect due to subtleties in the architected state of memory in multiprocessor systems.
    Type: Grant
    Filed: August 26, 2004
    Date of Patent: March 20, 2007
    Assignee: International Business Machines Corporation
    Inventors: Linda M. Bigelow, Richard E. Bohn, Brian R. Prasky, Charles E. Vitu
  • Patent number: 7194582
    Abstract: A microprocessor with multiple stream prefetch engines each executing a stream prefetch instruction to prefetch a complex data stream specified by the instruction in a manner synchronized with program execution of loads from the stream is provided. The stream prefetch engine stays at least a fetch-ahead distance (specified in the instruction) ahead of the program loads, which may randomly access the stream. The instruction specifies a level in the cache hierarchy to prefetch into, a locality indicator to specify the urgency and ephemerality of the stream, a stream prefetch priority, a TLB miss policy, a page fault miss policy, a protection violation policy, and a hysteresis value, specifying a minimum number of bytes to prefetch when the stream prefetch engine resumes prefetching. The memory subsystem includes a separate TLB for stream prefetches; or a joint TLB backing the stream prefetch TLB and load/store TLB; or a separate TLB for each prefetch engine.
    Type: Grant
    Filed: May 30, 2003
    Date of Patent: March 20, 2007
    Assignee: MIPS Technologies, Inc.
    Inventors: Keith E. Diefendorff, Thomas A. Petersen
  • Patent number: 7181574
    Abstract: A method and apparatus that provides informed prefetching and enhanced memory utilization in a server cluster to improve failover and startup time of a resource group executed by a server cluster. When starting up or failing over a resource group on a given server, the method identifies information for prefetching, informs a file system executed by the server cluster of the identified information, accesses the identified information using the file system, and stores the identified information in main memory for use by the server in the server cluster in advance of when the server actually will need the identified information to failover or initiate resources. To enhance memory utilization the method also identifies pages in cache memory that are not needed for current services provided by a server. Generally these pages contain prefetched information that was already used at start up or failover of a resource group.
    Type: Grant
    Filed: January 30, 2003
    Date of Patent: February 20, 2007
    Assignee: Veritas Operating Corporation
    Inventor: Abhijeet A. Lele
  • Patent number: 7177985
    Abstract: A microprocessor with multiple stream prefetch engines each executing a stream prefetch instruction to prefetch a complex data stream specified by the instruction in a manner synchronized with program execution of loads from the stream is provided. The stream prefetch engine stays at least a fetch-ahead distance (specified in the instruction) ahead of the program loads, which may randomly access the stream. The instruction specifies a level in the cache hierarchy to prefetch into, a locality indicator to specify the urgency and ephemerality of the stream, a stream prefetch priority, a TLB miss policy, a page fault miss policy, a protection violation policy, and a hysteresis value, specifying a minimum number of bytes to prefetch when the stream prefetch engine resumes prefetching. The memory subsystem includes a separate TLB for stream prefetches; or a joint TLB backing the stream prefetch TLB and load/store TLB; or a separate TLB for each prefetch engine.
    Type: Grant
    Filed: May 30, 2003
    Date of Patent: February 13, 2007
    Assignee: MIPS Technologies, Inc.
    Inventor: Keith E. Diefendorff
  • Patent number: 7165169
    Abstract: A branch prediction apparatus having a primary predictor and a secondary predictor that selectively overrides the primary predictor based on the type of branch instruction decoded. A branch target address cache in the primary branch predictor speculatively predicts a branch target address and direction based on an instruction cache fetch address prior to decoding the instruction, and the processor branches to the speculative target address if the speculative direction is predicted taken. Later in the pipeline, decode logic decodes the instruction and determines the branch instruction type, such as whether the branch instruction is a conditional branch, a return instruction, a program counter-relative type branch, an indirect branch, etc. Depending upon the branch type, if the primary and secondary predictions do not match, the processor branches based on the secondary prediction to override the branch taken based on the primary prediction.
    Type: Grant
    Filed: May 4, 2001
    Date of Patent: January 16, 2007
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Thomas C. McDonald
  • Patent number: 7162588
    Abstract: Memory pages within a memory subsystem are typically accessed using an off chip memory controller coupled to an external bus. Data elements, in the form of a cache line, propagate along the external bus to the processor. Cache line pre-fetching provides a cache line from the memory subsystem to fulfill the processor request. Unfortunately, when the memory subsystem is being accessed by a fetch operation, a subsequent fetch request cannot access the memory subsystem until the previous transaction has completed. Thus subsequent transactions must wait until the previous transaction is completed. This waiting typically results in processor stall cycles, where the processor is stalled in waiting for the memory subsystem to become available. This is especially evident in multi-processor systems, where the addition of another processor does not cause the processing bandwidth to increase substantially. Especially when the processors are waiting for each other's memory subsystem transactions to complete.
    Type: Grant
    Filed: August 23, 2002
    Date of Patent: January 9, 2007
    Assignee: Koninklijke Philips Electronics N.V.
    Inventor: Jan-Willem van de Waerdt
  • Patent number: 7162565
    Abstract: An improved bridge circuit for connecting a disk drive with an ATA interface to a computer via a USB bus. After the bridge receives the first data from the ATA interface, the bridge makes the assumption that the next read command will probably be for the next sequential data word and the interface issues a read command for the next sequential data word. After an accessing delay, the second data word is received by the bridge. When the bridge does in fact receive the next read command from the host, a check is made to see if the second read command is for the next sequential location from the first read command. If it is, the already fetched data is provided to the host without delay. If it is not, the process is handled as was the first read command.
    Type: Grant
    Filed: March 8, 2004
    Date of Patent: January 9, 2007
    Assignee: Cypress Semiconductor Corp.
    Inventors: Stephen Henry Kolokowsky, Mark McCoy
  • Patent number: 7162718
    Abstract: An asynchronous execution process to allow a compiler or interpreter to recognize code elements that may be executed out of order and to create a light weight thread for execution of the code element. This light weight thread may be executed on another processor in a multiprocessing environment. An “async” keyword is included in a language to indicate that a statement may be executed asynchronously with respect to the other statements at the same nesting level. The “async” keyword may also be used to modify the declaration of a function to indicate that it is safe to run the affected method out of order with other statements in a block. An “async_end” keyword is included in a language to indicate that asynchronous execution of a statement, block of code, or method must be complete before the next statement, block of code, or method may be executed.
    Type: Grant
    Filed: December 12, 2000
    Date of Patent: January 9, 2007
    Assignee: International Business Machines Corporation
    Inventors: Michael Wayne Brown, Scott E. Garfinkle, Michael A. Paolini, David Mark Wendt
  • Patent number: 7159098
    Abstract: A branch control apparatus in a microprocessor. The branch control apparatus includes an instruction buffer having a plurality of stages that buffer cache lines of instruction bytes received from an instruction cache. A multiplexer selects one of the bottom three stages in the instruction buffer to provide to instruction format logic. The multiplexer selects a stage based on a branch indicator, an instruction wrap indicator, and a carry indicator. The branch indicator indicates whether the processor previously branched to a target address provided by a branch target address cache. The branch indicator and target address are previously stored in association with the stage containing the branch instruction for which the target address is cached. The wrap indicator indicates whether the currently formatted instruction wraps across two cache lines. The carry indicator indicates whether the current instruction being formatted occupies the last byte of the currently formatted instruction buffer stage.
    Type: Grant
    Filed: August 17, 2004
    Date of Patent: January 2, 2007
    Assignee: IP-First, LLC.
    Inventors: G. Glenn Henry, Thomas C. McDonald
  • Patent number: 7155575
    Abstract: A computer program product determines whether a loop has a high usage count. If the computer program product determines the loop has a high usage count, the computer program product determines whether the loop has an irregularly accessed load. If the loop has an irregularly accessed load, the computer program product inserts pattern recognition code to calculate whether successive iterations of the irregular memory load in the loop have a predictable access pattern. The computer program product implants conditional adaptive prefetch code including a prefetch instruction into the output code.
    Type: Grant
    Filed: December 18, 2002
    Date of Patent: December 26, 2006
    Assignee: Intel Corporation
    Inventors: Rakesh Krishnaiyer, Wei Li
  • Patent number: 7149840
    Abstract: An improved USB to ATA bridge circuit that issues a speculative write command upon the completion of an actual write command: The speculative write command assumes that the next write command will write data in a the next sequential data location to that in which data was written by the preceding write command. When the next actual write command is received, the address to which data is to be written is compared to the address used by the speculative write command, if the addresses match, the data is written when the storage device is ready. If the addresses do not match the data transfer is started and immediately stopped.
    Type: Grant
    Filed: January 18, 2005
    Date of Patent: December 12, 2006
    Assignee: Cypress Semiconductor Corp.
    Inventor: Stephen Henry Kolokowsky
  • Patent number: 7146489
    Abstract: An efficient embedded-DRAM processor architecture and associated methods. In one exemplary embodiment, the architecture includes a DRAM array, a set of register files, set of functional units, and a data assembly unit. The data assembly unit includes a set of row-address registers and is responsive to commands to activate and deactivate DRAM rows and to control the movement of data throughout the system. A pipelined data assembly approach allowing the functional units to perform register-to-register operations, and allowing the data assembly unit to perform all load/store operations using wide data busses. Data masking and switching hardware allows individual data words or groups of words to be transferred between the registers and memory. Other aspects of the invention include a memory and logic structure and an associated method to extract data blocks from memory to accelerate, for example, operations related to image compression and decompression.
    Type: Grant
    Filed: February 13, 2002
    Date of Patent: December 5, 2006
    Assignee: Micron Technology, Inc.
    Inventor: Eric M. Dowling
  • Patent number: 7146467
    Abstract: Exemplary systems, methods, and devices employ receiving an operational parameter characteristic of a storage device, and adapting a read cache pre-fetch depth based in part on the operational parameter. An exemplary device includes a read cache memory and a read cache pre-fetch adaptation module operable to generate an operational parameter and vary read cache pre-fetch depth in response to the operational parameter.
    Type: Grant
    Filed: April 14, 2003
    Date of Patent: December 5, 2006
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Brian S. Bearden, David K. Umberger, Guillermo Navarro
  • Patent number: 7143267
    Abstract: A method and multithreaded processor for dynamically reallocating prefetch registers upon the processor switching modes of operation. An execution unit may be coupled to a prefetch engine where the execution unit may be configured to receive prefetch instructions regarding prefetching data. The prefetch engine may comprise a plurality of prefetch registers. The execution unit may further be configured to load the plurality of prefetch registers with information regarding prefetching data obtained from the prefetch instructions. In a single thread mode of operation, the plurality of prefetch registers are allocated to be accessed by either a first or a second thread. In a multithread mode of operation, the plurality of prefetch registers are allocated to be accessed among the first and second threads.
    Type: Grant
    Filed: April 28, 2003
    Date of Patent: November 28, 2006
    Assignee: International Business Machines Corporation
    Inventors: Eric J. Fluhr, Cathy May, Balaram Sinharoy
  • Patent number: 7137111
    Abstract: Operations including inserted prefetch operations that correspond to addressing chains may be scheduled above memory access operations that are likely-to-miss, thereby exploiting latency of the “martyred” likely-to-miss operations and improving execution performance of resulting code. More generally, certain pre-executable counterparts of likely-to-stall operations that form dependency chains may be scheduled above operations that are themselves likely-to-stall.
    Type: Grant
    Filed: November 28, 2001
    Date of Patent: November 14, 2006
    Assignee: Sun Microsystems, Inc.
    Inventors: Peter C. Damron, Nicolai Kosche
  • Patent number: 7120754
    Abstract: A synchronous memory device and its method of operation which can be set to operate at a plurality of supported prefetch modes. The prefetch mode may be set by programming a portion of a mode register of the memory device or by setting one or more programmable elements. For read operations, the synchronous memory device internally reads data corresponding to the largest supported prefetch size, and outputs read data corresponding to the current mode. For write operations the synchronous memory accepts write data corresponding to the selected prefetch mode and writes the received data to the array. Data words corresponding to data not received are masked from writing via a write masking circuit.
    Type: Grant
    Filed: November 8, 2005
    Date of Patent: October 10, 2006
    Assignee: Micron Technology, Inc.
    Inventors: Kevin J. Ryan, Christopher S. Johnson
  • Patent number: 7117332
    Abstract: A window-based flash memory storage system and a management and an access method therefor are proposed. The window-based flash memory storage system includes a window-based region and a redundant reserved region; wherein the window-based region is used to store a number of windows, each window being associated with a number of physical blocks. The redundant reserved region includes a dynamic-link area, a window-information area, a dynamic-link information area, and an boot-information area; wherein the dynamic-link area includes a plurality of dynamic allocation blocks, each being allocatable to any window. The window-information area is used to store a specific window-information set that is dedicated to a certain window within a specific range of data storage space. The dynamic-link information area is used to record the status of the allocation of the dynamic allocation blocks to the windows.
    Type: Grant
    Filed: July 31, 2003
    Date of Patent: October 3, 2006
    Assignee: Solid State System Co., Ltd.
    Inventors: Chun-Hung Lin, Chih-Hung Wang, Chun-Hao Kuo
  • Patent number: 7103757
    Abstract: A system, circuit, and method are presented for adjusting a prefetch rate of a prefetch unit from a first rate to a second rate by determining a probability factor associated with a branch instruction. The circuit and method may determine the probability factor based on a type of disparity associated with the branch instruction. The circuit and method may further be adapted to calculate the second rate based on the probability factor. The ability to adjust the prefetch rate of a prefetch unit advantageously decreases the number of memory transactions, thereby decreasing the power consumption of a processing unit.
    Type: Grant
    Filed: October 22, 2002
    Date of Patent: September 5, 2006
    Assignee: LSI Logic Corporation
    Inventor: Asheesh Kashyap
  • Patent number: 7099995
    Abstract: A data storage control unit is coupled to one or more host devices and to one or more physical storage units. Data is stored in one of the storage units and, for data integrity, copied to another storage unit. An updated state of the copy process (metadata) is maintained and updated in metadata tracks in a memory of the storage controller and periodically destaged to corresponding metadata tracks of a storage unit. If the copy process is interrupted, such as by a power failure, an error handling routine commences. Track state fields associated with each in-memory metadata track are initialized to an ‘invalid’ state and background staging of metadata tracks from the storage unit to the memory. After a track is staged, the associated track state field is changed to a ‘valid’ state. If a request is received to access a track of copy state data and the track has been staged (as indicated by the state of the associated track state field), the track is accessed.
    Type: Grant
    Filed: February 17, 2004
    Date of Patent: August 29, 2006
    Assignee: International Business Machines Corporation
    Inventors: James A. Springer, Yu-Cheng Hsu, Gilad Sharaby, Aaron S. Mahar, Angelique R. Budaya
  • Patent number: 7085916
    Abstract: For use in a processor having an external memory interface, an instruction prefetch mechanism, a method of prefetching instructions and a digital signal processor incorporating the mechanism or the method. In one embodiment, the mechanism includes: (1) a branch predictor that predicts whether a branch is to be taken, (2) prefetch circuitry, coupled to the branch predictor, that prefetches instructions associated with the branch via the external memory interface if the branch is taken and prefetches sequential instructions via the external memory interface if the branch is not taken and (3) a loop recognizer, coupled to the prefetch circuitry, that determines whether a loop is present in fetched instructions and reinstates a validity of instructions in the loop and prevents the prefetch circuitry from prefetching instructions outside of the loop until the loop completes execution.
    Type: Grant
    Filed: October 26, 2001
    Date of Patent: August 1, 2006
    Assignee: LSI Logic Corporation
    Inventor: Hung T. Nguyen
  • Patent number: 7082516
    Abstract: In one embodiment, a digital signal processor includes look ahead logic to decrease the number of bubbles inserted in the processing pipeline. The processor receives data containing instructions in a plurality of buffers and decodes the size of a first instruction. The beginning of a second instruction is determined based on the size of the first instruction. The size of the second instruction is decoded and the processor determines whether loading the second instruction will deplete one of the plurality of buffers.
    Type: Grant
    Filed: September 28, 2000
    Date of Patent: July 25, 2006
    Assignees: Intel Corporation, Analog Devices, Inc.
    Inventors: Thomas Tomazin, William C. Anderson, Charles P. Roth, Kayla Chalmers, Juan G. Revilla, Ravi P. Singh
  • Patent number: 7082499
    Abstract: When the cache memory unit reads the last word of a page of the cache memory, the external memory interface reads ahead data of a prescribed number of pages ahead of the relevant page. Thus, data corresponding to the access request to the external main memory is always held in the cache memory. This prevents degradation of parallel processing capability of the data driven type information processing apparatus.
    Type: Grant
    Filed: October 3, 2002
    Date of Patent: July 25, 2006
    Assignee: Sharp Kabushiki Kaisha
    Inventors: Shingo Kamitani, Tsuyoshi Muramatsu
  • Patent number: 7080209
    Abstract: A processing core using a lock scoreboard mechanism is provided. The lock scoreboard is adapted to manage a load-lock instruction. The load-lock scoreboard includes a plurality of scoreboard entries representing different conditions that must be met before the load-lock instruction can be retired. During execution of the load-lock instruction retirement conditions are speculatively performed, and the scoreboard is updated and checked accordingly. If the scoreboard indicates that one or more retirement conditions are not met, the load-lock instruction is replayed. Otherwise, the load-lock instruction is permitted to retire. Scoreboard management functions routinely update scoreboard contents as retirement conditions are cleared. This enables rapid retirement of load-lock operations.
    Type: Grant
    Filed: December 24, 2002
    Date of Patent: July 18, 2006
    Assignee: Intel Corporation
    Inventors: Herbert H. Hum, Doug Carmean
  • Patent number: 7080212
    Abstract: A method, system, and computer program product are disclosed for dynamically determining and adjusting a number of data blocks to be prestaged in a cache included in the storage device. The storage device receives and processes input/output (I/O) requests. Information about the I/O requests and about the processing of the requests by the storage device is accumulated. The information is then used to dynamically adjust a prestaging policy as the storage device receives and processes requests. The prestaging policy defines a current number of data blocks to be prestaged in the cache.
    Type: Grant
    Filed: December 29, 2003
    Date of Patent: July 18, 2006
    Assignee: Storage Technology Corporation
    Inventors: Shih-Li Hsu, Amar Nath Sinha
  • Patent number: 7065612
    Abstract: A processor having a cache memory structure which improves an operation speed of the processor and a method of managing cache memory of the processor are provided. The cache memory is divided into a cache memory for normal programs which stores instructions required for running normal programs and a cache memory for exception programs. An instruction register fetches and stores instructions from one of the cache memories according to the type of program currently running. The method includes dividing the cache memory into a cache memory for normal programs and a cache memory for exception programs, storing instructions and/or data for running the normal and exception programs in their respective cache memories, determining a type of a currently running program, fetching instructions from either cache memory according to the type of program currently running, and inputting the fetched instructions to the instruction register.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: June 20, 2006
    Inventor: Sung-bae Park
  • Patent number: 7058767
    Abstract: A method and system for speculatively pre-fetching data from a memory. A memory controller on a data bus “snoops” data requests put on the data bus by a bus control logic. Based on information in the header of the data request, such as transaction type, tag, transaction size, etc., a speculative pre-fetch is made to read data from the memory associated with the memory controller. If the speculative fetch turns out to be correct, then the memory controller makes an assumption that the pre-fetch was too conservative (non-speculative), and a pre-fetch for a next data request is performed at an earlier more speculative time. If the speculative fetch turns out to be incorrect, then the memory controller makes an assumption that the pre-fetch was too speculative (made early), and a pre-fetch for a next data request is performed at a later less speculative time.
    Type: Grant
    Filed: April 28, 2003
    Date of Patent: June 6, 2006
    Assignee: International Business Machines Corporation
    Inventors: John Steven Dodson, James Stephen Fields, Jr., Sanjeev Ghai, Jeffrey Adam Stuecheli
  • Patent number: 7047399
    Abstract: A computer system for executing branch instructions and a method of executing branch instructions are described. Two instruction fetchers respectively fetch a sequence of instructions from memory for execution and a sequence of instructions commencing from a target location identified by a set branch instruction in a sequence of instructions being executed. When an effect branch signal is generated, the target instructions are next executed, and the fetcher which was fetching the instructions for execution commences fetching of the target instructions. The effect branch signal is generated separately from the set branch instruction. In another aspect, the effect branch signal is generated on execution of a conditional effect branch instruction, located at the point in the instruction sequence where the branch is to be taken.
    Type: Grant
    Filed: April 25, 2001
    Date of Patent: May 16, 2006
    Assignee: SGS-Thomson Microelectronics Limited
    Inventors: Andrew C. Sturges, Nathan M. Sidwell