Simultaneous Parallel Fetching Or Executing Of Both Branch And Fall-through Path Patents (Class 712/235)
  • Patent number: 6385719
    Abstract: A transfer tag is generated by the Instruction Fetch Unit and passed to the decode unit in the instruction pipeline with each group of instructions fetched during a branch prediction by a fetcher. Individual instructions within the fetched group for the branch pipeline are assigned a concatenated version (group tag concatenated with instruction lane) of the transfer tag which is used to match on requests to flush any newer instructions. All potential instruction or Internal Operation latches in the decode pipeline must perform a match and if a match is encountered, all valid bits associated with newer instructions or internal operations upstream from the match are cleared. The transfer tag representing the next instruction to be processed in the branch pipeline is passed to the Instruction Dispatch Unit. The Instruction Dispatch Unit queries the branch pipeline to compare its transfer tag with transfer tags of instructions in the branch pipeline.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: May 7, 2002
    Assignee: International Business Machines Corporation
    Inventors: John Edward Derrick, Brian R. Konigsburg, Lee Evan Eisen, David Stephen Levitan
  • Patent number: 6381689
    Abstract: A reorder buffer is configured into multiple lines of storage, wherein a line of storage includes sufficient storage for instruction results regarding a predefined maximum number of concurrently dispatchable instructions. A line of storage is allocated whenever one or more instructions are dispatched. A microprocessor employing the reorder buffer is also configured with fixed, symmetrical issue positions. The symmetrical nature of the issue positions may increase the average number of instructions to be concurrently dispatched and executed by the microprocessor. The average number of unused locations within the line decreases as the average number of concurrently dispatched instructions increases. One particular implementation of the reorder buffer includes a future file. The future file comprises a storage location corresponding to each register within the microprocessor.
    Type: Grant
    Filed: March 13, 2001
    Date of Patent: April 30, 2002
    Assignee: Advanced Micro Devices, Inc.
    Inventors: David B. Witt, Thang M. Tran
  • Patent number: 6370639
    Abstract: A floating-point unit of a computer includes a floating-point computation unit, floating-point registers and a floating-point status register. The floating-point status register may include a main status field and one or more alternate status fields. Each of the status fields contains flag and control information. Different floating-point operations may be associated with different status fields. Subfields of the floating-point status register may be updated dynamically during operation. The control bits of the alternate status fields may include a trap disable bit for deferring interruptions during speculative execution. A widest range exponent control bit in the status fields may be used to prevent interruptions when the exponent of an intermediate result is within the range of the register format but exceeds the range of the memory format. The floating-point data may be stored in big endian or little endian format.
    Type: Grant
    Filed: October 10, 1998
    Date of Patent: April 9, 2002
    Assignee: Institute for the Development of Emerging Architectures L.L.C.
    Inventors: Jerome C. Huck, Peter Markstein, Glenn T. Colon-Bonet, Alan H. Karp, Roger Golliver, Michael Morrison, Gautam B. Doshi, Guillermo Juan Rozas
  • Patent number: 6367004
    Abstract: In one method, a predicted predicate value may be determined. A predicated instruction is then conditionally executed depending on the predicted predicate value. For example, in accordance with one embodiment of the present invention, a predicate table stores historical information corresponding to a predicate. A pipeline coupled to the table receives a predicted predicate value calculated from the historical information. The pipeline may use this predicted predicate value to conditionally execute a predicated instruction. The actual predicate value is provided back to the predicate table from the pipeline.
    Type: Grant
    Filed: December 31, 1998
    Date of Patent: April 2, 2002
    Assignee: Intel Corporation
    Inventors: Edward T. Grochowski, Hans J. Mulder, Vincent E. Hummel
  • Patent number: 6334184
    Abstract: A processor and method of fetching an instruction from a memory are disclosed. According to the method of the present invention, a plurality of target addresses are determined utilizing a plurality of previously fetched instructions, and a sequential address is determined utilizing a last of the plurality of previously fetched instructions. Concurrently with the determination of the target addresses and the sequential address, a select signal specifying one of the plurality of target addresses or the sequential address is generated. The select signal is used to select one of the plurality of target addresses or the sequential address as a memory request address. The memory request address is then transmitted from the processor to the memory so that the memory will supply at least one instruction to the processor. By generating the target addresses and sequential address concurrently with the generation of the selection signal, instruction fetch latency is reduced.
    Type: Grant
    Filed: March 24, 1998
    Date of Patent: December 25, 2001
    Assignee: International Business Machines Corporation
    Inventors: Sang Hoo Dhong, Joel Abraham Silberman
  • Patent number: 6321328
    Abstract: Computer apparatus includes an execution unit for executing a sequence of instructions which may include a speculative load instruction, a memory for storing data required by the instructions for execution, a low latency data cache for holding data accessed in the memory in response to the instructions, a low latency data buffer for holding speculative data accessed in the memory in response to the speculative load instruction, and a controller. The controller loads the speculative data from the memory into the data buffer in response to the speculative load instruction when the speculative data is not present in the data cache or the data buffer, and loads the speculative data from the data buffer into the execution unit. The speculative data may be loaded from the data buffer into the execution unit when the speculative load instruction is executed or when the speculative load instruction is committed.
    Type: Grant
    Filed: March 22, 1999
    Date of Patent: November 20, 2001
    Assignee: Hewlett-Packard Company
    Inventors: Alan H. Karp, Rajiv Gupta
  • Publication number: 20010037447
    Abstract: A pipelined, simultaneous and redundantly threaded (“SRT”) processor configured to detect transient faults during program execution by executing instructions in at least two redundant copies of a program thread and wherein misspeculation caused by incorrectly predicting the outcomes of branch instructions in a second program thread is avoided by using the actual outcomes of branch instructions in a first program thread to correctly predict the outcome of branch instructions in the second program thread. The SRT processor comprises a branch predictor for speculating the outcomes of branch instructions in the first program thread and a branch outcome queue for storing the actual outcomes of branch instructions in the first program thread. The processor uses the branch outcome queue and not the branch predictor to predict the outcomes of branch instructions in the second program thread.
    Type: Application
    Filed: April 19, 2001
    Publication date: November 1, 2001
    Inventors: Shubhendu S. Mukherjee, Steven K. Reinhardt
  • Patent number: 6298436
    Abstract: A method and system for atomic memory accesses in a processor system, wherein the processor system is able to issue and execute multiple instructions out of order with respect to a particular program order. A first reservation instruction is speculatively issued to an execution unit of the processor system. Upon issuance, instructions queued for the execution unit which occur after the first reservation instruction in the program order are flushed from the execution unit, in response to detecting any previously executed reservation instructions in the execution unit which occur after the first reservation instruction in the program order.
    Type: Grant
    Filed: June 8, 1999
    Date of Patent: October 2, 2001
    Assignee: International Business Machines Corporation
    Inventors: James Allan Kahle, Hung Qui Le, Larry Edward Thatcher, David James Shippy
  • Patent number: 6289442
    Abstract: A method and circuit is disclosed for tagging and invalidating speculatively executed instructions. The method includes fetching a first plurality of instructions which includes a conditional branch instruction which identifies a target address if the branch is taken. The conditional branch instruction is detected and in response thereto first and second instruction tags are generated. At least a first instruction is tagged with the first instruction tag wherein the first instruction is included in the first plurality of instructions and wherein the first instruction sequentially follows the first conditional branch instruction in program order. Thereafter, a second plurality of instructions are fetched wherein the second plurality of instructions corresponds to the target address of the conditional branch instruction. At least one of these second plurality of instructions is tagged with the second instruction tag. Thereafter, the conditional branch instruction is executed and resolved.
    Type: Grant
    Filed: October 5, 1998
    Date of Patent: September 11, 2001
    Assignee: Advanced Micro Devices, Inc.
    Inventor: Creigton Asato
  • Patent number: 6289445
    Abstract: A circuit and method is provided which allows a microprocessor to implement speculative load instructions with implicit exception checking. In one embodiment of the method, exception information is generated in response to a memory access exception caused by a speculative load instruction for loading one of a plurality of first registers with data from memory. The exception information, once generated, is stored within one of a plurality of second registers. Each of the second registers corresponds to at least one of the plurality of first registers and is configured to store exception information. Thereafter, an instruction for operating on data stored in a first register is received and decoded by the microprocessor. In response, a second register corresponding to the first register is accessed. If this second register contains exception information, then the microprocessor initiates the exception routine.
    Type: Grant
    Filed: July 21, 1998
    Date of Patent: September 11, 2001
    Assignee: LSI Logic Corporation
    Inventor: Hartvig Ekner
  • Publication number: 20010014941
    Abstract: In one embodiment of the invention, a processor includes an execution pipeline to concurrently execute at least portions of threads, wherein at least one of the threads is dependent on at least another one of the threads. The processor also includes detection circuitry to detect speculation errors in the execution of the threads. In another embodiment, the processor includes thread management logic to control dynamic creation of threads from a program.
    Type: Application
    Filed: December 29, 2000
    Publication date: August 16, 2001
    Inventors: Haitham Akkary, Kingsum Chow
  • Patent number: 6269439
    Abstract: A signal processor for pipeline processing which can effectively avoid deterioration of the processing efficiency caused by branch instructions and methods thereof: wherein when obtaining a result that an instruction decoded in an ID module is a branch instruction, determination is made as to branch existence in an EX module in the next cycle, and an instruction in a branch destination and an instruction in a non-branch destination are fetched simultaneously in an IF module; consequently, in the next cycle, in response to the result of the branch existence, one of the fetched instructions of the branch destination or the non-branch destination is selected and is then decoded in an ID module.
    Type: Grant
    Filed: June 12, 1998
    Date of Patent: July 31, 2001
    Assignee: Sony Corporation
    Inventor: Hirokazu Hanaki
  • Patent number: 6256727
    Abstract: A system and method for fetching noncontiguous blocks of instructions in a data processing system is disclosed. The system comprises an instruction cache means for providing a first plurality of instructions and branch logic means for receiving the first plurality of instructions and for providing branch history information about the first plurality of instructions. The system further includes an auxiliary cache means for receiving a second plurality of instructions based upon the branch history information. The auxiliary cache means overlays at least one of the second plurality of instructions if there is a branch in the first plurality of instructions and the branch is to the second plurality of instructions.
    Type: Grant
    Filed: May 12, 1998
    Date of Patent: July 3, 2001
    Assignee: International Business Machines Corporation
    Inventor: Robert Greg McDonald
  • Patent number: 6247117
    Abstract: The use of checking instructions to detect special and exceptional cases of a defined data format in a microprocessor is disclosed. Generally speaking, a checking instruction is included with the microcode of floating-point instructions to detect special and exceptional cases of operand values for the floating-point instructions. A checking instruction is configured to set one or more flags in a flags register if it detects a special or exceptional case for an operand value. A checking instruction may also set the result or results of a floating-point instruction to a result value if a special or exceptional case is detected. In addition, a checking instruction may be configured to set one or more bits in status register if a special or exceptional case is detected. After a checking instruction completes execution, a subsequent microcode instruction can be executed to determine if one or more flags were set by the checking instruction.
    Type: Grant
    Filed: March 8, 1999
    Date of Patent: June 12, 2001
    Assignee: Advanced Micro Devices, Inc.
    Inventor: Norbert Juffa
  • Patent number: 6243805
    Abstract: A microprocessor for executing exact branch targeting is disclosed. A microprocessor contains a fetch stage for fetching and receiving instructions from memory at a memory address specified by a program counter. The instructions received by the fetch state include conditional branch instructions and conditional branch calculation instructions. The conditional branch calculation instructions underlie the conditional branch instructions in that the conditional branch is taken or not depending upon the results of the conditional branch calculation instructions. An execution stage within the microprocessor executes the conditional branch calculation instructions once decoded by a decode stage. Once executed, the execution stage writes the results thereof into a branch FIFO buffer contained within a branch target circuit coupled to the fetch stage. Subsequent thereto, the fetch stage receives a conditional branch instruction.
    Type: Grant
    Filed: August 11, 1998
    Date of Patent: June 5, 2001
    Assignee: Advanced Micro Devices, Inc.
    Inventor: Eric W. Mahurin
  • Patent number: 6219784
    Abstract: A processor is configured to detect a branch instruction have a forward branch target address within a predetermined range of the branch fetch address of the branch instruction. If the branch instruction is predicted taken, instead of canceling subsequent instructions and fetching the branch target address, the processor allows sequential fetching to continue and selectively cancels the sequential instructions which are not part of the predicted instruction sequence (i.e. the instructions between the predicted taken branch instruction and the target instruction identified by the forward branch target address). Instructions within the predicted instruction sequence which may already have been fetched prior to predicting the branch instruction taken may be retained within the pipeline of the processor, and yet subsequent instructions may be fetched.
    Type: Grant
    Filed: November 16, 1998
    Date of Patent: April 17, 2001
    Assignee: Advanced Micro Devices, Inc.
    Inventor: David B. Witt
  • Patent number: 6195740
    Abstract: A processor for decoding and executing an instruction includes: an instruction register 10 for storing an instruction; a format decoder 21 for decoding a format code located in the P0.0 field 11 of the instruction stored in the instruction register 10; a constant storage unit including a storage region; a constant register control unit 32 which, when the format decoder 21 has referred to the format code and decoded that an operation field includes a constant to be stored in the constant register 36, transfers the constant from the instruction register 10 to the constant storage unit 36; and a constant register output unit 41 which, when the format decoder 21 has referred to the format code and decoded that an operation field includes an operation code showing an operation that should be executed and a piece of an operand that should be used for the operation, links the constant stored in the constant register 36 with the piece of the operand.
    Type: Grant
    Filed: July 29, 1998
    Date of Patent: February 27, 2001
    Assignee: Matsushita Electric Industrial Co., Ltd.
    Inventors: Taketo Heishi, Nobuo Higaki, Akira Tanaka, Tetsuya Tanaka, Shuichi Takayama, Kensuke Odani, Shinya Miyaji
  • Patent number: 6192461
    Abstract: One aspect of the invention relates to an apparatus for processing a store instruction on a superscalar processor that employs in-order completion of instructions, the processor having an instruction dispatch unit, an architected register file, a rename register file, a load store unit, a completion unit and cache memory. In one embodiment of the invention, the apparatus includes a pointer queue having an entry corresponding to the store instruction, the entry containing a pointer to the entries in the architected and rename register files that contain data required by the store instruction; and a multiplexer coupled to read ports on the architected and rename register files so that data can be passed from one of the register files into an entry in a data queue, the data queue being coupled to the cache memory.
    Type: Grant
    Filed: January 30, 1998
    Date of Patent: February 20, 2001
    Assignee: International Business Machines Corporation
    Inventors: Barry D. Williamson, Jim E. Phillips, Dq Nguyen
  • Patent number: 6185668
    Abstract: An apparatus and method are described for implementing handling of exceptions caused by speculated instructions in a CPU having speculative execution capabilities. A CPU implementing speculative execution contains a speculative bit register file. Each speculative bit in the speculative bit register file is logically associated with a particular general purpose register, while remaining physically separate. This is accomplished through the use of a physically separate register file (the speculative bit register file) and register selection circuitry allowing simultaneous access to the two register files. The present invention provides instruction execution hardware supporting speculative execution with minimal impact on computational and structural complexity.
    Type: Grant
    Filed: December 21, 1995
    Date of Patent: February 6, 2001
    Assignee: Intergraph Corporation
    Inventor: Siamak Arya
  • Patent number: 6182210
    Abstract: In one embodiment of the invention, a processor includes an execution pipeline to concurrently execute at least portions of threads, wherein at least one of the threads is dependent on at least another one of the threads. The processor also includes detection circuitry to detect speculation errors in the execution of the threads. In another embodiment, the processor includes thread management logic to control dynamic creation of threads from a program.
    Type: Grant
    Filed: December 16, 1997
    Date of Patent: January 30, 2001
    Assignee: Intel Corporation
    Inventors: Haitham Akkary, Kingsum Chow
  • Patent number: 6167506
    Abstract: The processor is configured to predecode instruction bytes prior to their storage within an instruction cache. During the predecoding, relative branch instructions are detected. The displacement included within the relative branch instruction is added to the address corresponding to the relative branch instruction, thereby generating the target address. The processor replaces the displacement field of the relative branch instruction with an encoding of the target address, and stores the modified relative branch instruction in the instruction cache. The branch prediction mechanism may select the target address from the displacement field of the relative branch instruction instead of performing an addition to generate the target address. In one embodiment, relative branch instructions having eight bit and 32-bit displacement fields are included in the instruction set executed by the processor.
    Type: Grant
    Filed: April 23, 1998
    Date of Patent: December 26, 2000
    Assignee: Advanced Micro Devices, Inc.
    Inventor: David B. Witt
  • Patent number: 6167510
    Abstract: An apparatus including a banked instruction cache and a branch prediction unit is provided. The banked instruction cache allows multiple instruction fetch addresses (comprising consecutive instruction blocks from the predicted instruction stream being executed by the microprocessor) to be fetched concurrently. The instruction cache provides an instruction block corresponding to one of the multiple fetch addresses to the instruction processing pipeline of the microprocessor during each consecutive clock cycle, while additional instruction fetch addresses from the predicted instruction stream are fetched. Preferably, the instruction cache includes at least a number of banks equal to the number of clock cycles consumed by an instruction cache access. In this manner, instructions may be provided during each consecutive clock cycle even though instruction cache access time is greater than the clock cycle time of the microprocessor.
    Type: Grant
    Filed: April 23, 1998
    Date of Patent: December 26, 2000
    Assignee: Advanced Micro Devices, Inc.
    Inventor: Thang M. Tran
  • Patent number: 6161174
    Abstract: A pipelined processor for simultaneously performs one of a plurality of successive operations on each of a plurality of successive instructions within the pipeline, the successive operations including at least an instruction fetch stage, an operand address stage, an operand fetch stage, an execution stage and a result handling stage. The processor also maintains a plurality of indicators which are selectively updated during the result handling stage for a given instruction to reflect the results obtained during the execution stage thereof. When the second instruction of first and second successively fetched instructions is a conditional transfer, a determination is made as to which indicators may be affected by the execution of the first instruction, and a determination is also made as to which indicator the conditional transfer is to test to decide whether there is a GO or a NOGO condition.
    Type: Grant
    Filed: November 5, 1998
    Date of Patent: December 12, 2000
    Inventor: John E. Wilhite
  • Patent number: 6131154
    Abstract: Herein disclosed is a microcomputer MCU adopting the general purpose register method. The microcomputer is enabled to have a small program capacity or a high program memory using efficiency and a low system cost, while enjoying the advantage of simplification of the instruction decoding as in the RISC machine having a fixed length instruction format of the prior art, by adopting a fixed length instruction format having a power of 2 but a smaller bit number than that of the maximum data word length fed to instruction execution means. And, the control of the coded division is executed by noting the code bits.
    Type: Grant
    Filed: July 23, 1997
    Date of Patent: October 10, 2000
    Assignees: Hitachi, Ltd., Hitachi VLSI Engineering Corp., Hitachi Microcomputer System, Ltd.
    Inventors: Shumpei Kawasaki, Eiji Sakakibara, Kaoru Fukada, Takanaga Yamazaki, Yasushi Akao, Shiro Baba, Toshimasa Kihara, Keiichi Kurakazu, Takashi Tsukamoto, Shigeki Masumura, Yasuhiro Tawara, Yugo Kashiwagi, Shuya Fujita, Katsuhiko Ishida, Noriko Sawa, Yoichi Asano, Hideaki Chaki, Tadahiko Sugawara, Masahiro Kainaga, Kouki Noguchi, Mitsuru Watabe
  • Patent number: 6119220
    Abstract: An apparatus for supplying instructions to a processor has an instruction cache (1) and a branch target buffer (33). The branch target buffer stores instructions in order of execution achievable if a branch instruction is taken. The instructions in the branch target buffer are arranged before a branch predictor (35) makes a prediction whether or not the branch instruction is taken. If the prediction tells that the branch instruction will be taken, the instructions in the branch target buffer are supplied to an instruction decoder (9). If the prediction tells that the branch instruction will not be taken, instructions in the instruction cache are supplied to the instruction decoder.
    Type: Grant
    Filed: January 29, 1998
    Date of Patent: September 12, 2000
    Assignee: Kabushiki Kaisha Toshiba
    Inventor: Toshinori Sato
  • Patent number: 6112300
    Abstract: Multi-way branching is implemented via a single instruction by providing a computer system with a hardware token-to-address table, loading the table with branch target data correlating to the multi-way branch instruction, including software for execution with at least one multi-way branch instruction executing that branch instruction by accessing the table. The computer system is conventionally supplied with branch logic and general purpose register stack with a multi-ported output interface. The hardware resource added implementing the multi-way branch operation includes the table in the form of addressable storage comprising a plurality of multi-byte locations with a write data input and a read data output. A decoder is connected between one port of the general purpose register interface with an output to select one of the multi-byte locations for an input or output operation. The write data input of the addressable storage or table is connected to another port of the general purpose register interface.
    Type: Grant
    Filed: June 3, 1998
    Date of Patent: August 29, 2000
    Assignee: International Business Machines Corporation
    Inventors: Thomas E. Cook, Yu-Chung C. Liao, Peter A. Sandon
  • Patent number: 6112296
    Abstract: A floating point unit capable of executing multiple instructions in a single clock cycle using a central window and a register map is disclosed. The floating point unit comprises: a plurality of translation units, a future file, a central window, a plurality of functional units, a result queue, and a plurality of physical registers. The floating point unit receives speculative instructions, decodes them, and then stores them in the central window. Speculative top of stack values are generated for each instruction during decoding. Top of stack relative operands are computed to physical registers using a register map. Register stack exchange operations are performed during decoding. Instructions are then stored in the central window, which selects the oldest stored instructions to be issued to each functional pipeline and issues them. Conversion units convert the instruction's operands to an internal format, and normalization units detect and normalize any denormal operands.
    Type: Grant
    Filed: December 18, 1997
    Date of Patent: August 29, 2000
    Assignee: Advanced Micro Devices, Inc.
    Inventors: David B. Witt, Derrick R. Meyer
  • Patent number: 6092188
    Abstract: A processor architecture with an instruction set having a predict instruction, the predict instruction providing static prediction information and a statically predicted target address to the processor for a branch instruction. The processor decodes a predict instruction to obtain an associated pair of addresses comprising a predicted target address and a referenced instruction address, and fetches a predicted target instruction having an instruction address matching the predicted target address when a fetched and decoded branch instruction has an instruction address matching the referenced instruction address.
    Type: Grant
    Filed: July 7, 1999
    Date of Patent: July 18, 2000
    Assignee: Intel Corporation
    Inventors: Michael P. Corwin, Tse-Yu Yeh, Mircea Poplingher, Carl C. Scafidi
  • Patent number: 6092186
    Abstract: The present invention minimizes unneeded memory accesses by providing a digital processor having control circuit for terminating on-going memory accesses, and by a data transfer circuit that allow jump instructions to be detected sooner in the decode unit. The digital processor includes a decode unit, fetch unit and a memory controller. When the decode unit of the present invention processor determines that a discontinuity must occur in the instruction fetch sequence, it asserts a "jump taken" signal to the fetch unit to indicate that any pre-fetched instruction codes are to be discarded and that fetching is to resume at a new fetch program counter (FPC) value. If the fetch unit is currently stalled because of an outstanding request to the memory controller unit, then the fetch unit asserts an "abort" signal to the memory controller.
    Type: Grant
    Filed: May 7, 1996
    Date of Patent: July 18, 2000
    Assignee: Lucent Technologies Inc.
    Inventors: Michael Richard Betker, Trevor Edward Little
  • Patent number: 6067616
    Abstract: An improved branch prediction cache (BPC) scheme that utilizes a hybrid cache structure. The BPC provides two levels of branch information caching. The fully associative first level BPC is a shallow but wide structure (36 32-byte entries), which caches full prediction information for a limited number of branch instructions. The second direct mapped level BPC is a deep but narrow structure (256 2-byte entries), which caches only partial prediction information, but does so for a much larger number of branch instructions. As each branch instruction is fetched and decoded, its address is used to perform parallel look-ups in the two branch prediction caches.
    Type: Grant
    Filed: April 26, 1996
    Date of Patent: May 23, 2000
    Assignee: Advanced Micro Devices, Inc.
    Inventors: David R. Stiles, John G. Favor, Korbin S. Van Dyke
  • Patent number: 6065115
    Abstract: A microprocessor for efficient processing of instructions in a program flow including a conditional program flow control instruction, such as a branch instruction. The conditional program flow control instruction targets a first code section to be processed if the condition is resolved to be met, and a second code section to be processed if the condition is resolved to be not met. A fetch unit fetches instructions to be processed and branch prediction logic coupled to the fetch unit predicts the resolution of the condition. The branch prediction logic of the invention also determines whether resolution of the condition is unlikely to be predicted accurately. Stream management logic responsive to the branch prediction logic directs speculative processing of instructions from both the first and second code sections prior to resolution of the condition if resolution of the condition is unlikely to be predicted accurately.
    Type: Grant
    Filed: April 10, 1998
    Date of Patent: May 16, 2000
    Assignee: Intel Corporation
    Inventors: Harshvardhan P. Sharangpani, Gary N. Hammond, Hans J. Mulder, Judge K. Arora
  • Patent number: 6055628
    Abstract: A microprocessor 1 has an instruction fetch/decode unit 10a-c, a plurality of execution units, including an arithmetic and load/store unit D1, a multiplier M1, an ALU/shifter unit S1, an arithmetic logic unit ("ALU") L1, a shared multiport register file 20a from which data are read and to which data are written, and a memory 22. These units form an instruction execution pipeline that operates without interlocks so that nestable delayed branch instructions are provided. The control circuitry for the instruction execution pipeline is operable to begin processing a second branch instruction having a second target address on a pipeline phase immediately after beginning processing of a first branch instruction having a first target address.
    Type: Grant
    Filed: January 23, 1998
    Date of Patent: April 25, 2000
    Assignee: Texas Instruments Incorporated
    Inventors: Natarajan Seshan, Laurence R. Simar, Jr.
  • Patent number: 6052776
    Abstract: A method of effecting a branch operation without the need of instruction fetching is carried out according to the taken/untaken branch with respect to a program containing plural branch instructions, and the method is performed by an apparatus information processing. By detecting a branch instruction stored in an instruction buffer, determining its branch distance and branch condition, and if the branch distance is less than a predetermined positive distance, by then providing that branch condition as an execution condition for the instruction located within said predetermined distance to store in an instruction register, a series of instructions succeeding that branch instruction can be processed into a conditional instruction in the apparatus. The instructions may be continuously executed without refetching instructions, in both cases that a branch condition is taken and untaken. Also, the penalty of miss-prediction of a branch will be minimized.
    Type: Grant
    Filed: October 16, 1997
    Date of Patent: April 18, 2000
    Assignee: Hitachi, Ltd.
    Inventors: Yoshio Miki, Kentaro Shimada, Makoto Hanawa
  • Patent number: 6038658
    Abstract: The invention comprises in several embodiments a pipeline and a method of operating the pipeline. The pipeline comprises first and second stages each having an output. The first stage is located earlier in the pipeline than the second stage. A first isolation device has an input coupled to the output of the first stage. The first isolation device is for storing data received from the first stage. A second isolation device has an input coupled to the output of the second stage. The second isolation device is for storing data received from the second stage. A stall control is for sending a signal to the first and second isolation devices. The signal is to stall the isolation devices. At least one delay element is connected between the stall control and the second isolation device and is to delay receipt of the signal by the second isolation device.
    Type: Grant
    Filed: November 3, 1997
    Date of Patent: March 14, 2000
    Assignee: Intel Corporation
    Inventor: Michael Y. Chow
  • Patent number: 6035392
    Abstract: A computer for executing programs and having a structure for fetching instructions and/or operands along a path which may not be taken by a process being executed by a computer processor having a hierarchical memory structure with data being loaded into cache lines of a cache in the structure, and having block line fetch signal selection logic and computational logic with hedge selection logic for generating line fetch block signals for control of hedging by fetching instructions and/or operands along a path which may not be taken by a process being executed and making selected hedge fetches sensitive to whether the data is in the cache so as to gain the best performance advantage with a selected hedge fetch signal which accompanies each fetch request to the cache to identify whether a line should be loaded if it misses the cache to indicate a selected hedge fetch when this signal is ON, and rejecting a fetch request in the event the selected hedge fetch signal is turned ON if the data is not in the cache, th
    Type: Grant
    Filed: February 20, 1998
    Date of Patent: March 7, 2000
    Assignee: International Business Machines Corporation
    Inventors: John Stephen Liptay, Mark Anthony Check, Barry Watson Krumm, Jennifer Almoradie Navarro, Charles Franklin Webb
  • Patent number: 6035391
    Abstract: A system for processing a floating point instruction includes a stack, virtual registers, a stack pointer pointing to one of the virtual registers as top of stack, physical registers, and a reference table mapping the virtual registers to the physical registers, entries of the reference table pointing to physical register locations. An instruction unit generates a plurality of instructions, and a decode unit having a plurality of decoders receives the plurality of instructions from the instruction unit, respectively. The decode unit decodes the plurality of instructions and determines whether any one of the instructions contains a floating point instruction including a floating point exchange instruction. A logic unit is coupled to the reference table and includes a plurality of logic devices coupled to the plurality of decoders in the decode unit, respectively.
    Type: Grant
    Filed: February 23, 1999
    Date of Patent: March 7, 2000
    Assignee: STMicroelectronics, Inc.
    Inventor: David L. Isaman
  • Patent number: 6026488
    Abstract: A computer for executing programs and having a structure for fetching instructions and/or operands along a path which may not be taken by a process being executed by a computer processor having a hierarchical memory structure with data being loaded into cache lines of a cache in the structure, and having block line fetch signal selection logic and computational logic with hedge selection logic for generating line fetch block signals for control of hedging by fetching instructions and/or operands along a path which may not be taken by a process being executed and making selected hedge fetches sensitive to whether the data is in the cache so as to gain the best performance advantage with a selected hedge fetch signal which accompanies each fetch request to the cache to identify whether a line should be loaded if it misses the cache to indicate a selected hedge fetch when this signal is ON, and rejecting a fetch request in the event the selected hedge fetch signal is turned ON if the data is not in the cache, th
    Type: Grant
    Filed: February 20, 1998
    Date of Patent: February 15, 2000
    Assignee: International Business Machines Corporation
    Inventors: John Stephen Liptay, Mark Anthony Check, Barry Watson Krumm, Jennifer Almoradie Navarro, Charles Franklin Webb
  • Patent number: 6026477
    Abstract: An improved branch recovery mechanism includes an instruction fetch unit, an instruction decode stage, a branch prediction unit coupled to the decode stage for predicting whether the branch instruction will be taken, and an instruction pool for receiving and storing micro-ops. After a mispredicted branch is detected, micro-ops corresponding to a correct path are loaded into the instruction pool without waiting for the mispredicted branch instruction to be retired. By immediately loading the correct path into the instruction pool, Front End stall time can be reduced. Micro-ops in the instruction pool are distinguished based on path information for each micro-op stored in the instruction pool. The micro-ops corresponding to the mispredicted path are deleted as quickly as possible without committing their execution results to architectural state.
    Type: Grant
    Filed: December 31, 1997
    Date of Patent: February 15, 2000
    Assignee: Intel Corporation
    Inventors: Alan B. Kyker, Darrell D. Boggs
  • Patent number: 6021489
    Abstract: A microprocessor that includes first and second Instruction Fetch Units (IFU) coupled therebetween is provided. The first IFU implements a first Instruction Set Architecture (ISA). The second IFU implements a second ISA. The microprocessor further includes a shared branch prediction unit coupled to the first and second IFU. The shared branch prediction unit stores prediction-related information. In the same paragraph, the present invention also provides a method of performing branch prediction. According to this method, an instruction pointer is provided to a branch prediction unit that stores information shared by first and second IFU. The instruction pointer is generated by one of the first and second IFU that is active. Determination is made of whether an instruction corresponding to the instruction pointer, provided to the branch prediction unit, is a branch instruction, and if so, it is determined if a branch is predicted taken.
    Type: Grant
    Filed: June 30, 1997
    Date of Patent: February 1, 2000
    Assignee: Intel Corporation
    Inventor: Mircea Poplingher
  • Patent number: 6021487
    Abstract: A method and apparatus to divide a signed integer by a constant power of two using conditionally-executed instructions to choose between a first result in the event that the dividend is a negative signed integer and a second result in the event that the dividend is a positive signed integer, wherein values associated with the first result and the second result are generated simultaneously.
    Type: Grant
    Filed: December 16, 1996
    Date of Patent: February 1, 2000
    Assignee: Intel Corporation
    Inventor: Richard L. Maliszewski
  • Patent number: 6018798
    Abstract: A floating point unit capable of executing multiple instructions in a single clock cycle using a central window and a register map is disclosed. The floating point unit comprises: a plurality of translation units, a future file, a central window, a plurality of functional units, a result queue, and a plurality of physical registers. The floating point unit receives speculative instructions, decodes them, and then stores them in the central window. Speculative top of stack values are generated for each instruction during decoding. Top of stack relative operands are computed to physical registers using a register map. Register stack exchange operations are performed during decoding. Instructions are then stored in the central window, which selects the oldest stored instructions to be issued to each functional pipeline and issues them. Conversion units convert the instruction's operands to an internal format, and normalization units detect and normalize any denormal operands.
    Type: Grant
    Filed: December 18, 1997
    Date of Patent: January 25, 2000
    Assignee: Advanced Micro Devices, Inc.
    Inventors: David B. Witt, Derrick R. Meyer
  • Patent number: 5991872
    Abstract: Microprocessors use a conditional branch instruction so as to change processing in accordance with conditions. According to the prior art, a NOP instruction, which causes no operation, is used when a condition is satisfied, and the use of the NOP instruction inevitably lengthens the processing time. According to the present invention, a conditional transfer instruction is included in the instruction set of a microprocessor, and a flag decoder is additionally employed. The flag decoder determines whether a condition is satisfied or not, and outputs a control signal on the basis of the determination. The control signal is supplied to the instruction decoder of the processor to make a data transfer operation effective or ineffective. Accordingly, it is not necessary to use a NOP instruction, and the processing time can be as short as possible.
    Type: Grant
    Filed: October 9, 1997
    Date of Patent: November 23, 1999
    Assignee: Kabushiki Kaisha Toshiba
    Inventors: Mikio Shiraishi, Masaki Saitou, Yuji Okuda
  • Patent number: 5961632
    Abstract: A processor processes a plurality of instructions according to a disclosed method. First, the method receives (32) an instruction from the plurality of instructions. Second, the method determines (34) whether the received instruction is preceded by an instruction path leading code. Third, the method passes (36 or 38) the received instruction along at least one instruction path in a plurality of instruction paths. Fourth, in response to determining that the received instruction is preceded by an instruction path leading code, the method executes a machine word corresponding to the received instruction and selected from one of the plurality of instruction paths. Specifically, the selected instruction path is selected in response to the instruction path leading code.
    Type: Grant
    Filed: July 25, 1997
    Date of Patent: October 5, 1999
    Assignee: Texas Instruments Incorporated
    Inventors: Jonathan H. Shiell, Donald E. Steiss
  • Patent number: 5961637
    Abstract: A computer system for executing branch instructions and a method of executing branch instructions are described. Tow 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: June 21, 1995
    Date of Patent: October 5, 1999
    Assignee: SGS-Thomson Microelectronics Limited
    Inventors: Andrew C. Sturges, Nathan M. Sidwell
  • Patent number: 5928357
    Abstract: The pipeline architecture minimizes delays incurred during execution of branch instructions. While a first instruction is executing, a second instruction is fetched and is ready for execution at the beginning of the next clock cycle. Control logic examines the fetched instruction during the first clock cycle to determine whether the instruction is a branch instruction which may indicate that the address of the next instruction is not the next sequential address. Flags which indicate the state of the system are examined to determine if the address of the instruction is the next sequential address or the address indicated in the branch instruction. As this is performed during the fetch clock cycle of the branch instruction, during execution of the branch instruction, the instruction at the address selected is fetched and is ready for execution without delay.
    Type: Grant
    Filed: June 19, 1997
    Date of Patent: July 27, 1999
    Assignee: Intel Corporation
    Inventors: Keith Frederick Underwood, Richard Joseph Durante