Prefetching Patents (Class 712/207)
  • Patent number: 6877068
    Abstract: Disclosed are a method and device (100) for prefetching referenced resources (105) from servers (102, 103, 104). A first resource (106) is scanned for unfetched references (107), which are weighted and prefetched in the order of their weight. The computation of the weight is based on the number of times the resource referenced by the reference has been fetched previously, and on the number of times one or more further resources have been fetched previously from a server that serves the resource referenced by the reference. The device (100) can be realized as a computer program product.
    Type: Grant
    Filed: October 19, 2001
    Date of Patent: April 5, 2005
    Assignee: Koninklijke Philips Electronics N.V.
    Inventor: Simon Blanchard
  • Patent number: 6874067
    Abstract: A multiprocessor computer system employs a number of levels of cache memories with each processor. A cache controller for a lower level cache memory receives a memory block pre-fetch request which requests a particular memory block. The cache controller determines a likelihood that the particular memory block will be invalidated prior to use of the memory block by a processor which issued the pre-fetch request. Based on that determination, the cache controller determines whether to honor the pre-fetch request.
    Type: Grant
    Filed: April 11, 2002
    Date of Patent: March 29, 2005
    Assignee: International Business Machines Corporation
    Inventor: Farnaz Toussi
  • Patent number: 6871273
    Abstract: A processor implementing an improved method for executing load instructions includes execution circuitry, a plurality of registers, and instruction processing circuitry. The instruction processing circuitry fetches a load instruction and a preceding instruction that precedes the load instruction in program order, and in response to detecting the load instruction, translates the load instruction into separately executable prefetch and register operations. The execution circuitry performs at least the prefetch operation out-of-order with respect to the preceding instruction to prefetch data into the processor and subsequently separately executes the register operation to place the data into a register specified by the load instruction. In an embodiment in which the processor is an in-order machine, the register operation is performed in-order with respect to the preceding instruction.
    Type: Grant
    Filed: June 22, 2000
    Date of Patent: March 22, 2005
    Assignee: International Business Machines Corporation
    Inventor: Charles Robert Moore
  • Patent number: 6871247
    Abstract: For use in a processor having separate instruction and data buses, separate instruction and data memories and separate instruction and data units, a mechanism for, and method of, supporting self-modifying code and a digital signal processor incorporating the mechanism or the method. In one embodiment, the mechanism includes: (1) a crosstie bus coupling the instruction bus and the data unit and (2) a request arbiter, coupled between the instruction and data units, that arbitrates requests therefrom for access to the instruction memory.
    Type: Grant
    Filed: November 8, 2001
    Date of Patent: March 22, 2005
    Assignee: LSI Logic Corporation
    Inventors: Hung T. Nguyen, Troy N. Hicks
  • Patent number: 6862680
    Abstract: A microprocessor avoids loss of instructions in a pre-fetch procedure when a branch instruction is received. When a new branch instruction that specifies a branch end is received by a queue buffer, all the instructions preceding the specified branch end are processed as an operand of the branch instruction. Moreover, the instruction word length of the branch instruction including the instruction that has been processed as the operand is output to a program counter, so the queue buffer is not flushed.
    Type: Grant
    Filed: September 21, 2001
    Date of Patent: March 1, 2005
    Assignee: Renesas Technology Corp.
    Inventor: Yoshiyuki Haraguchi
  • Patent number: 6848029
    Abstract: Computer systems are typically designed with multiple levels of memory hierarchy. Prefetching has been employed to overcome the latency of fetching data or instructions from or to memory. Prefetching works well for data structures with regular memory access patterns, but less so for data structures such as trees, hash tables, and other structures in which the datum that will be used is not known a priori. The present invention significantly increases the cache hit rates of many important data structure traversals, and thereby the potential throughput of the computer system and application in which it is employed. The invention is applicable to those data structure accesses in which the traversal path is dynamically determined. The invention does this by aggregating traversal requests and then pipelining the traversal of aggregated requests on the data structure.
    Type: Grant
    Filed: January 3, 2001
    Date of Patent: January 25, 2005
    Inventor: Dirk Coldewey
  • Patent number: 6848030
    Abstract: A processing system has a processor, a cache, and a fetch unit. If there is a miss in the cache, the fetch unit generates a fetch address for the miss in the cache for the purpose of retrieving the requested data from external memory and providing the data to the processor and loading the data in a location in a line in the cache. The fetch unit also generates additional prefetch addresses for addresses consecutive with the fetch address. The prefetch addresses continue to be generated for all of the locations in the line in the cache that are consecutive with the fetch address. The generation of prefetch addresses will be stopped if another requests arrives that is not part of the already generated prefetched addresses. Further, the outstanding prefetches will be terminated if the external memory can handle such termination.
    Type: Grant
    Filed: July 20, 2001
    Date of Patent: January 25, 2005
    Assignee: Freescale Semiconductor, Inc.
    Inventors: Yakov Tokar, Amit Gur, Jacob Efrat, Doron Schupper
  • Patent number: 6842846
    Abstract: An architecture of method for fetching microprocessor's instructions is provided to pre-fetch and pre-decode a next instruction. If the instruction pre-decoded is found a conditional branch instruction, an instruction reading-amount register is set for reading two instructions next to the current instruction in the program memory, or one is read instead if the next instruction is found an instruction other than the conditional branch one so as to waive reading of unnecessary program memory and thereby reduce power consumption.
    Type: Grant
    Filed: December 18, 2001
    Date of Patent: January 11, 2005
    Assignee: National Chiao Tung University
    Inventors: Pao-Lung Chen, Chen-Yi Lee
  • Patent number: 6823406
    Abstract: A microprocessor includes a register and a comparator. The register stores an address area, the address area requiring a guarantee of an access order. The comparator compares an address of the address area held in said register with an address of an address area indicated in an access request from CPU, and outputs a signal to execute an access request succeeding the access request from the CPU after executing an access request preceding the access request from the CPU when the address area indicated in the access request from the CPU matches the address area held in said register.
    Type: Grant
    Filed: March 13, 2002
    Date of Patent: November 23, 2004
    Assignee: Fujitsu Limited
    Inventors: Hitoshi Yoda, Hiroyuki Utsumi, Yasuhiro Yamazaki
  • Patent number: 6823444
    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: July 3, 2001
    Date of Patent: November 23, 2004
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Thomas C. McDonald
  • Patent number: 6820194
    Abstract: In one disclosed embodiment an instruction loop having at least one instruction is identified. For example, each instruction can be a VLIW packet comprised of several individual instructions. The instructions of the instruction loop are fetched from a program memory. The instructions are then stored in a register queue. For example, the register queue can be implemented with a head pointer which is adjusted to select a register in which to write each instruction that is fetched. It is then determined whether the processor requires execution of the instruction loop, for example, by checking a program counter (PC) value corresponding to each instruction. When the processor requires execution of the instruction loop, the instructions are output from the register queue. For example, the register queue can be implemented with an access pointer which is adjusted to select a register from which to output each instruction that is required.
    Type: Grant
    Filed: April 10, 2001
    Date of Patent: November 16, 2004
    Assignee: Mindspeed Technologies, Inc.
    Inventors: Sameer I. Bidichandani, Moataz A. Mohamed
  • Publication number: 20040225866
    Abstract: A data processing system incorporates an instruction prefetch unit 8 including a static branch predictor 12. A static branch prediction cache 30, 32, 34 is provided for storing a most recently encountered static branch prediction such that a subsequent request to fetch the already encountered branch instruction can be identified before the opcode before that branch instruction is returned. The cached static branch prediction can thus redirect the prefetching to the branch target address sooner than the static predictor 12.
    Type: Application
    Filed: May 6, 2003
    Publication date: November 11, 2004
    Inventor: David James Williamson
  • Publication number: 20040216097
    Abstract: Methods and apparatus are disclosed to prefetch memory objects. An example method includes identifying program states associated with an executing program; associating memory profiles with respective ones of the program states; identifying at least one next probable state; and prefetching memory objects associated with the at least one memory profile corresponding to the at least one next probable state.
    Type: Application
    Filed: June 27, 2003
    Publication date: October 28, 2004
    Inventor: Mingqiu Sun
  • Publication number: 20040215935
    Abstract: A simple instruction set processor preferably utilizes six primary components: a fetch unit, and instruction and address register, a controller/decoder, an arithmetic logic unit, an address multiplexer, and a storage multiplexer. The processor utilizes a data stream containing within it the address for a subsequent instruction to be executed by the processor, thereby avoiding the need for registers of the type utilized in prior art processors. As a result, the processor utilizes a minimal number of registers to perform its operations. The processor utilizes an instruction set in which every instruction contains a JUMP to the next instruction. By utilizing JUMPs in every instruction and providing the address to which the processor is to JUMP, there is no need for address counters and register pointers. Also, extremely fast state changes are facilitated the contents of only one register identifying a next address must be saved or restored.
    Type: Application
    Filed: May 14, 2004
    Publication date: October 28, 2004
    Inventor: Dean A. Klein
  • Publication number: 20040193843
    Abstract: A system and method of early branch prediction in a processor to evaluate, typically before a full branch prediction is made, ways in a branch target buffer to determine if any of said ways corresponds to a valid unconditional branch, and upon such determination, to generate a signal to prevent a read of a next sequential chunk.
    Type: Application
    Filed: March 31, 2003
    Publication date: September 30, 2004
    Inventors: Eran Altshuler, Oded Lempel, Robert Valentine, Nicolas Kacevas
  • Patent number: 6799264
    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: February 20, 2001
    Date of Patent: September 28, 2004
    Assignee: Koninklijke Philips Electronics N.V.
    Inventors: Gregory K Goodhue, Ata R Khan, John H. Wharton, Robert Michael Kallal
  • Patent number: 6799263
    Abstract: A method for prefetching instructions into cache memory using a prefetch instruction. The prefetch instruction contains a target field, a count field, a cache level field, a flush field, and a trace field. The target field specifies the address at which prefetching begins. The count field specifies the number of instructions to prefetch. The flush field indicates whether earlier prefetches should be discarded and whether in-progress prefetches should be aborted. The level field specifies the level of the cache into which the instructions should be prefetched. The trace field establishes a trace vector that can be used to determine whether the prefetching operation specified by the operation should be aborted. The prefetch instruction may be used in conjunction with a branch predict instruction to prefetch a branch of instructions that is not predicted.
    Type: Grant
    Filed: October 28, 1999
    Date of Patent: September 28, 2004
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Dale C. Morris, James R. Callister, Stephen R. Undy
  • Patent number: 6795876
    Abstract: An amount of data to be pre-fetched during read operations is adaptively modified based upon the experience of previous reads. If previous reads were terminated before all the data desired was obtained, subsequent read amounts may be increased. The initial amount of pre-fetched data may be pre-set or modified dynamically.
    Type: Grant
    Filed: March 27, 2001
    Date of Patent: September 21, 2004
    Assignee: Intel Corporation
    Inventor: Gary A. Solomon
  • Patent number: 6795899
    Abstract: In some embodiments, the invention includes a system having a memory controller, a bus, and first and second memory devices. The memory controller requests read and write operations and operates with a burst length. The first and second memory devices are coupled to the memory controller through the bus, the first and second memory devices each having a prefetch length that is greater than the burst length, but performing the requested read and write operations with the burst length. Other embodiments are described and claimed.
    Type: Grant
    Filed: March 22, 2002
    Date of Patent: September 21, 2004
    Assignee: Intel Corporation
    Inventors: James M. Dodd, Howard S. David
  • Patent number: 6792496
    Abstract: Prefetching data includes issuing a first request to prefetch data from a memory, receiving a response to the first request from the memory, obtaining a measure of latency between the first request and the response, and controlling issuance of a subsequent request to prefetch other data from the memory based on the measure.
    Type: Grant
    Filed: August 2, 2001
    Date of Patent: September 14, 2004
    Assignee: Intel Corporation
    Inventors: Nagi Aboulenein, Randy B. Osborne
  • Publication number: 20040172518
    Abstract: Provided is an information processing unit including: a prefetch buffer for fetching an instruction through a bus with its width being twice or more as large as an instruction length, to store the prefetched instruction; a decoder for decoding the instruction stored in the prefetch buffer; and an arithmetic unit for executing the decoded instruction. An instruction request control circuit performs a prefetch request to prefetch a branch target instruction when a branch instruction is decoded, otherwise the instruction request control circuit performs the prefetch request sequentially to prefetch the instructions. A prefetch control circuit fetches the branch target instruction to the prefetch buffer when the branch is ensured to occur by executing the branch instruction, while the prefetch control circuit ignores the branch target instruction when a branch does not occur.
    Type: Application
    Filed: October 17, 2003
    Publication date: September 2, 2004
    Applicant: FUJITSU LIMITED
    Inventors: Toshiaki Saruwatari, Seiji Suetake
  • Patent number: 6785772
    Abstract: A data processing system (20) is able to perform parameter-selectable prefetch instructions to prefetch data for a cache (38). When attempting to be backward compatible with previously written code, sometimes performing this instruction can result in attempting to prefetch redundant data by prefetching the same data twice. In order to prevent this, the parameters of the instruction are analyzed to determine if such redundant data will be prefetched. If so, then the parameters are altered to avoid prefetching redundant data. In some of the possibilities for the parameters of the instruction, the altering of the parameters requires significant circuitry so that an alternative approach is used. This alternative but slower approach, which can be used in the same system with the first approach, detects if the line of the cache that is currently being requested is the same as the previous request. If so, the current request is not executed.
    Type: Grant
    Filed: April 26, 2002
    Date of Patent: August 31, 2004
    Assignee: Freescale Semiconductor, Inc.
    Inventors: Suresh Venkumahanti, Michael Dean Snyder
  • Patent number: 6785796
    Abstract: A method and apparatus for altering code to effectively hide main memory latency using software prefetching with non-faulting loads prefetches data from main memory into local cache memory at some point prior to the time when the data is requested by the CPU during code execution. The CPU then retrieves its requested data from local cache instead of directly seeing the memory latency. The non-faulting loads allow for safety and more flexibility in executing the prefetch operation earlier because they alleviate the concern of incurring a segmentation fault, particularly when dealing with linked data structures. Accordingly, the memory access latency that the CPU sees is essentially the cache memory access latency. Since this latency is much less than the memory latency resulting from a cache miss, the overall system performance is improved.
    Type: Grant
    Filed: August 1, 2000
    Date of Patent: August 31, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Peter Damron, Nicolai Kosche
  • Publication number: 20040168042
    Abstract: pipelined CPU includes a pre-fetch (PF) stage for performing branch prediction, and an instruction fetch (IF) stage for fetching instructions that are to be later processed by an execution (EX) stage. The PF stage has a PF address (PFA) register for storing the address of an instruction being processed by the PF stage, and the IF stage has an IF address (IFA) register for storing the address of an instruction to be fetched for later execution. The CPU also includes address register control (ARC) circuitry for setting the contents of the PFA and the IFA. The ARC accepts branch-prediction results from the PF stage to determine the subsequent contents of the PFA and the IFA. If the PF stage predicts no branching, then the ARC sets a next address of the PFA to be sequentially after a current address of the PFA, and sets a next address of the IFA be the current address of the PFA.
    Type: Application
    Filed: February 16, 2003
    Publication date: August 26, 2004
    Inventor: Hung-Yu Lin
  • Publication number: 20040168043
    Abstract: A line predictor caches alignment information for instructions. In response to each fetch address, the line predictor provides alignment information for the instruction beginning at the fetch address, as well as one or more additional instructions subsequent to that instruction. The alignment information may be, for example, instruction pointers, each of which directly locates a corresponding instruction within a plurality of instruction bytes fetched in response to the fetch address. The line predictor may include a memory having multiple entries, each entry storing up to a predefined maximum number of instruction pointers and a fetch address corresponding to the instruction identified by a first one of the instruction pointers. Fetch addresses may be searched against the fetch addresses stored in the multiple entries, and if a match is detected the corresponding instruction pointers may be used.
    Type: Application
    Filed: February 20, 2004
    Publication date: August 26, 2004
    Applicant: Advanced Micro Devices, Inc.
    Inventors: James B. Keller, Puneet Sharma, Keith R. Schakel, Francis M. Matus
  • Publication number: 20040153628
    Abstract: The present invention relates to an instruction control device, and more particularly to an instruction control device which has achieved a high speed operational processing, such as a reduction in the amount of components, so as to enable an out-of-order instruction execution to thereby execute an instruction processing at high speed in an information processor.
    Type: Application
    Filed: December 30, 2003
    Publication date: August 5, 2004
    Applicant: FUJITSU LIMITED
    Inventor: Takeo Asakawa
  • Publication number: 20040153629
    Abstract: The present invention relates to an instruction control device, and more particularly to an instruction control device which has achieved a high speed operational processing, such as a reduction in the amount of components, so as to enable an out-of-order instruction execution to thereby execute an instruction processing at high speed in an information processor.
    Type: Application
    Filed: December 30, 2003
    Publication date: August 5, 2004
    Applicant: FUJITSU LIMITED
    Inventor: Takeo Asakawa
  • Publication number: 20040153622
    Abstract: The present invention relates to an instruction control device, and more particularly to an instruction control device which has achieved a high speed operational processing, such as a reduction in the amount of components, so as to enable an out-of-order instruction execution to thereby execute an instruction processing at high speed in an information processor.
    Type: Application
    Filed: December 30, 2003
    Publication date: August 5, 2004
    Applicant: FUJITSU LIMITED
    Inventor: Takeo Asakawa
  • Patent number: 6772237
    Abstract: The present invention relates to a method and circuit for prefetching direct memory access descriptors from memory of a computer system, and storing the prefetched direct memory access descriptors within a unified descriptor memory for subsequent access by direct memory access controllers. The descriptors are generated by a central processing unit of the computer system while executing software applications. The descriptors define data transfer operations between memory of the computer system and input/output devices via direct memory access controllers. The direct memory access controllers generate requests for descriptors. Upon generation of a request, the unified descriptor memory is checked to determine whether the requested descriptor is contained therein. If the requested descriptor is contained within the unified descriptor memory, the request descriptor is provided to the requesting direct memory access controller.
    Type: Grant
    Filed: November 21, 2001
    Date of Patent: August 3, 2004
    Assignee: Sun Microsystems, Inc.
    Inventor: Josh David Collier
  • Patent number: 6772179
    Abstract: The present invention provides a prefetch system for use with a cache memory associated with a database employing indices. In one embodiment, the prefetch system includes a search subsystem configured to prefetch cache lines containing an index of a node of a tree structure associated with the database. Additionally, the prefetch system also includes a scan subsystem configured to prefetch cache lines based on an index prefetch distance between first and second leaf nodes of the tree structure.
    Type: Grant
    Filed: December 28, 2001
    Date of Patent: August 3, 2004
    Assignee: Lucent Technologies Inc.
    Inventors: Shimin Chen, Phillip B. Gibbons, Todd C. Mowry
  • Patent number: 6766441
    Abstract: In a first aspect of the present invention, a method for prefetching instructions in a superscalar processor is disclosed. The method comprises the steps of fetching a set of instructions along a predicted path and prefetching a predetermined number of instructions if a low confidence branch is fetched and storing the predetermined number of instructions in a prefetch buffer. In a second aspect of the present invention, a system for prefetching instructions in a superscalar processor is disclosed. The system comprises a cache for fetching a set of instructions along a predicted path, a prefetching mechanism coupled to the cache for prefetching a predetermined number of instructions if a low confidence branch is fetched and a prefetch buffer coupled to the prefetching mechanism for storing the predetermined number of instructions. Through the use of the method and system in accordance with the present invention, existing prefetching algorithms are improved with minimal additional hardware cost.
    Type: Grant
    Filed: January 19, 2001
    Date of Patent: July 20, 2004
    Assignee: International Business Machines Corporation
    Inventor: Balaram Sinharoy
  • Publication number: 20040133769
    Abstract: One embodiment of the present invention provides a system that generates prefetches by speculatively executing code during stalls through a technique known as “hardware scout threading.” The system starts by executing code within a processor. Upon encountering a stall, the system speculatively executes the code from the point of the stall, without committing results of the speculative execution to the architectural state of the processor. If the system encounters a memory reference during this speculative execution, the system determines if a target address for the memory reference can be resolved. If so, the system issues a prefetch for the memory reference to load a cache line for the memory reference into a cache within the processor.
    Type: Application
    Filed: December 19, 2003
    Publication date: July 8, 2004
    Inventors: Shailender Chaudhry, Marc Tremblay
  • Patent number: 6760818
    Abstract: As microprocessor speeds increase, performance is more affected by data access operations. A combined solution of hardware and software directed pre-fetching limits additional instructions in a program stream, and minimizes additional hardware resources. In the current invention, the hardware and software directed pre-fetching technique is performed without explicit pre-fetch instructions utilized within the program stream and occupies a minimal amount of additional chip area. To minimize instruction bandwidth of the processor, the software and hardware directed pre-fetching approach uses additional registers located at an architectural level of the processor to specify pre-fetch regions, and a respective stride used for each of the regions. The impact to the instruction bandwidth of processing of instructions by the processor is limited to those additional instructions contained within the application that are required to set these registers.
    Type: Grant
    Filed: May 1, 2002
    Date of Patent: July 6, 2004
    Assignee: Koninklijke Philips Electronics N.V.
    Inventor: Jan-Willem van de Waerdt
  • Patent number: 6760816
    Abstract: A prefetch engine is responsible for prefetching critical data. The prefetch engine operates when a cache miss occurs accessing critical data requested by a processor. The prefetch engine requests cache lines surrounding the cache line satisfying the data request be loaded into the cache.
    Type: Grant
    Filed: September 29, 2000
    Date of Patent: July 6, 2004
    Assignee: Intel Corporation
    Inventors: Dz-ching Ju, Srikanth T. Srinivasan, Christopher B. Wilkerson
  • Publication number: 20040128477
    Abstract: An apparatus and method are provide for precluding stalls in a microprocessor pipeline due to microcode ROM access delay. The apparatus includes a micro instruction queue and early access logic. The micro instruction queue provides a plurality of queue entries to register logic. Each of the plurality of queue entries includes first micro instructions and a microcode entry point. All of the first micro instructions correspond to an instruction. The microcode entry point is coupled to the first micro instructions. The microcode entry point is configured to point to second micro instructions stored within a microcode ROM. The early access logic is coupled to the micro instruction queue.
    Type: Application
    Filed: December 15, 2003
    Publication date: July 1, 2004
    Applicant: IP-First, LLC
    Inventors: G. Glenn Henry, Dinesh K. Jain, Terry Parks
  • Publication number: 20040128448
    Abstract: Processor architectures, and in particular, processor architectures with a cache-like structure to enable memory communication during runahead execution. In accordance with an embodiment of the present invention, a system including a memory; and an out-of-order processor coupled to the memory. The out-of-order processor including at least one execution unit, at least one cache coupled to the at least one execution unit; at least one address source coupled to the at least one cache; and a runahead cache coupled to the at least one address source.
    Type: Application
    Filed: December 31, 2002
    Publication date: July 1, 2004
    Applicant: INTEL CORPORATION
    Inventors: Jared W. Stark, Chris B. Wilkerson, Onur Mutlu
  • Patent number: 6757816
    Abstract: A system and method for recovering from mispredicted paths in pipelined computer architectures. Targets within an instruction window exhibit spatial locality. To exploit this property, a mechanism detects the branch target within the instruction window. A second process eliminates the need for full renaming and re-execution of mispredicted paths by handling a dependency chain of instructions.
    Type: Grant
    Filed: December 30, 1999
    Date of Patent: June 29, 2004
    Assignee: Intel Corporation
    Inventors: Adi Yoaz, Gregory Pribush, Freddy Gabby, Mattan Erez, Ronny Ronen
  • Publication number: 20040123075
    Abstract: Extended loop prediction techniques. One embodiment of an apparatus utilizing disclosed techniques includes at least one execution unit and a prefetcher utilizing a variable length loop detector to fetch a control sequence for the execution unit. The variable length loop detector is capable of predicting branches for loops having changing iterations counts.
    Type: Application
    Filed: December 19, 2002
    Publication date: June 24, 2004
    Inventor: Yoav Almog
  • Patent number: 6751708
    Abstract: A method is disclosed for instructing a computing system to ensure that a line is present in an instruction cache that includes selecting a line-touch instruction, recognizing the line-touch instruction as a type of branch instruction where the branch is not taken, executing the line-touch instruction to fetch a target line from a target address into the instruction cache, and interlocking the execution of the line-touch instruction with the completion of the fetch of the target line in order to prevent execution of the instruction following the line-touch instruction until after the target line has reached the cache.
    Type: Grant
    Filed: January 9, 2002
    Date of Patent: June 15, 2004
    Assignee: International Business Machines Corporation
    Inventors: John S. Liptay, Mark A. Check, Mark S. Farrell, Bruce C. Giamei, Charles F. Webb
  • Patent number: 6751709
    Abstract: One embodiment of the present invention provides a system that uses references within a first object to prefetch a second object into a cache memory. During operation, the system receives a first cache line containing at least a portion of the first object. Next, the system locates a reference to the second object within the first cache line, and uses the reference to perform a prefetching operation for the second object. In a variation on this embodiment, while performing the prefetching operation for the second object, the system examines the cache memory to determine if the second object is already present within the cache memory. If not, the system performs the prefetching operation for the second object.
    Type: Grant
    Filed: May 15, 2002
    Date of Patent: June 15, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Matthew L. Seidl, Gregory M. Wright, Mario I. Wolczko
  • Patent number: 6748521
    Abstract: A data processing system is provided with a digital signal processor which has an instruction for saturating multiple fields of a selected set of source operands and storing the separate saturated results in a selected destination register. A first 32-bit operand (600) and a second 32-bit operand (602) are treated as four 16-bit fields and the sixteen bits in each field are saturated separately. Multi-field saturation circuitry is operable to treat a source operand as a number of fields, such that a multi-field saturated (610) result is produced that includes a number of saturated results each corresponding to each field. One instruction is provided which treats an operand pair as having two packed fields, and another instruction is provided that treats the operand pair has having four packed fields. Saturation circuitry is operable to selectively treat a field as either a signed value or an unsigned value.
    Type: Grant
    Filed: October 31, 2000
    Date of Patent: June 8, 2004
    Assignee: Texas Instruments Incorporated
    Inventor: David Hoyle
  • Patent number: 6742108
    Abstract: A load is executed speculatively as a dismissible load instruction, which does not take exceptions, and a check instruction, which is in the same format as the dismissible load, that when executed determines whether an exception should be taken on the dismissible load. In this manner, a load may be executed speculatively while ensuring that an exception occurs at the same time it would have occurred had the load been executed non-speculatively.
    Type: Grant
    Filed: September 14, 1998
    Date of Patent: May 25, 2004
    Assignee: Intel Corporation
    Inventor: Kent G. Fielden
  • Patent number: 6738867
    Abstract: A dedicated register is provided in an external access controller such that read ahead of operand data is performed. Using a store instruction, a program initiates read ahead by writing the read ahead address to the dedicated register. The read ahead controller stores read ahead data in the dedicated register. When the program issues a load instruction, the read ahead data is transmitted.
    Type: Grant
    Filed: June 2, 2000
    Date of Patent: May 18, 2004
    Assignee: Hitachi, Ltd.
    Inventor: Hiroki Kanai
  • Patent number: 6732260
    Abstract: An instruction prefetch apparatus includes a branch target buffer (BTB), a presbyopic target buffer (PTB) and a prefetch stream buffer (PSB). The BTB includes records that map branch addresses to branch target addresses, and the PTB includes records that map branch target addresses to subsequent branch target addresses. When a branch instruction is encountered, the BTB can predict the dynamically adjacent subsequent block entry location as the branch target address in the record that also includes the branch instruction address. The PTB can predict multiple subsequent blocks by mapping the branch target address to subsequent dynamic blocks. The PSB holds instructions prefetched from subsequent blocks predicted by the PTB.
    Type: Grant
    Filed: March 6, 2000
    Date of Patent: May 4, 2004
    Assignee: Intel Corporation
    Inventors: Hong Wang, Ralph Kling, Edward T. Grochowski, Kalpana Ramakrishnan
  • Patent number: 6728839
    Abstract: An enhanced prefetching technique enables control of internal activities of a cache memory by a processor without relying on conventional algorithms. The cache memory is contained within a processor complex of a programmable arrayed processing engine used to efficiently process data within an intermediate network station of a computer network. The cache may further assume various functions while providing an interface to an external memory of the station via a memory controller. That is, the cache may function as a read buffer, a write buffer and/or a buffer for pending atomic commands, each of which is merged into a single memory bank that can be partitioned in any manner to enable efficient utilization.
    Type: Grant
    Filed: October 28, 1998
    Date of Patent: April 27, 2004
    Assignee: Cisco Technology, Inc.
    Inventor: John William Marshall
  • Patent number: 6728840
    Abstract: Mechanisms and techniques allow a host computer system to control caching operations within a data storage system. In a typical implementation, the system of the invention operates within a host computer system to intercept requests for access to data stored within a data storage system that originate from applications, programs or other processes that perform (e.g., execute) on the host computer system or another computer system. Once intercepted, the host computer can examine such a request for access to data to determine if the request matches any prefetch criteria defined within a prefetch database provided by the system of the invention. As an example, prefetch criteria defined in a prefetch database can specify various requestors (e.g., applications, programs, processes, users, or the like) that can access data (e.g., specific files, databases, volumes, data types or the like) stored within the data storage system according to various data access techniques (e.g.
    Type: Grant
    Filed: October 20, 2000
    Date of Patent: April 27, 2004
    Assignee: EMC Corporation
    Inventors: Arod Shatil, Edith L. Epstein, Stephen A. Ludlum
  • Patent number: 6728873
    Abstract: Disclosed is a method of operation within a processor, that enhances speculative branch processing. A speculative execution path contains an instruction sequence that includes a barrier instruction followed by a load instruction. While a barrier operation associated with the barrier instruction is pending, a load request associated with the load instruction is speculatively issued to memory. A flag is set for the load request when it is speculatively issued and reset when an acknowledgment is received for the barrier operation. Data which is returned by the speculatively issued load request is temporarily held and forwarded to a register or execution unit of the data processing system after the acknowledgment is received. All process results, including data returned by the speculatively issued load instructions are discarded when the speculative execution path is determined to be incorrect.
    Type: Grant
    Filed: June 6, 2000
    Date of Patent: April 27, 2004
    Assignee: International Business Machines Corporation
    Inventors: Guy Lynn Guthrie, Ravi Kumar Arimilli, John Steven Dodson, Derek Edward Williams
  • Patent number: 6718460
    Abstract: In one aspect, a method for managing program flow in a computer system having a processor having a prefetch mechanism and an instruction pipeline includes providing a set of program instructions having a conditional branch instruction and an system fault-causing instruction, prefetching at least one instruction into the instruction pipeline, the instruction including at least a conditional branch instruction, predicting the outcome of the conditional branch instruction; and prefetching instructions into the instruction queue based upon the result of the predicting step. The branch instruction is configured to direct program flow into or beyond the system fault instruction depending on the result of a predetermined condition.
    Type: Grant
    Filed: September 5, 2000
    Date of Patent: April 6, 2004
    Assignee: Sun Microsystems, Inc.
    Inventor: Raj Prakash
  • Patent number: 6718458
    Abstract: A method and apparatus for improving the performance of a superscalar, superpipelined processor by identifying and processing instructions for performing addressing operations is provided. The invention heuristically determines instructions likely to perform addressing operations and assigns those instructions to specialized pipes in a pipeline structure. The invention can assign such instructions to both an execute pipe and a load/store pipe to avoid the occurrence of “bubbles” in the event execution of the instruction requires the calculation capability of the execute pipe. The invention can also examine a sequence of instructions to identify an instruction for performing a calculation where the result of the calculation is used by a succeeding load or store instruction. In this case, the invention controls the pipeline to assure the result of the calculation is available for the succeeding load or store instruction even if both instructions are being processed concurrently.
    Type: Grant
    Filed: March 27, 2003
    Date of Patent: April 6, 2004
    Assignee: Broadcom Corporation
    Inventors: Dan Dobberpuhl, Robert Stepanian
  • Patent number: 6711668
    Abstract: A prefetch buffer is described which supports a computer system having a plurality of different instruction modes. The number of storage locations which are read out of the prefetch buffer during each machine cycle is controlled in dependence on the instruction mode. Thus the prefetch buffer allows a number of different instruction modes to be support and hides memory access latency.
    Type: Grant
    Filed: May 2, 2000
    Date of Patent: March 23, 2004
    Assignee: STMicroelectronics S.A.
    Inventors: Laurent Wojcieszak, Andrew Cofler