Patents by Inventor Dale Morris

Dale Morris has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20040210811
    Abstract: A method for comparing bit field contents for bit fields comprising less than a full complement of the source is provided. The method includes creating a mask covering the bit field in the source, setting bit positions within the mask that are outside the bit field in the source to predetermined values, combining the source against the mask to form an intermediate result, and comparing bits in the intermediate result to provide a final result. Alternately, the method may form a mask, combining the bit field with a comparison value to form an intermediate value, and perform a combined function using the mask to select bits from the intermediate value, or fixed zero or one values, and comparing this result with zero.
    Type: Application
    Filed: April 15, 2003
    Publication date: October 21, 2004
    Inventors: Sverre Jarp, Dale Morris
  • Publication number: 20040210886
    Abstract: A method for coding a switch based on a variable is provided. The method includes copying a nonzero bit from a setting register to a corresponding bit in a rotating predicate register by moving said bit into the rotating predicate register, and performing a single case function computation based on the corresponding bit in the rotating predicate register. Alternately, the method may comprise using a register rename base value modulo summed with a virtual predicate file to rename the predicate register. In certain conditions, the design may include testing values being moved into the static predicate or rotating predicate register to determine whether the value exceeds an acceptable range.
    Type: Application
    Filed: April 15, 2003
    Publication date: October 21, 2004
    Inventors: Sverre Jarp, Dale Morris
  • Publication number: 20040193850
    Abstract: Parallel table lookups are implemented using variable Mux instructions to reorder data. Table data can be represented in a “table” register, while the desired ordering can be represented in an “Index” register. A direct variable Mux instruction can specify the table register and the index register as arguments, along with a result register. The instruction writes at least some of the data from the table register into the result register as specified in the index register. If the entire table cannot fit within a single register, entries can be divided between two or more table registers. An indirect variable Mux instruction can specify both a table-register-select register and a subword-location-select register. Both the direct and indirect Mux instructions can be used with entry data that is divided in accordance with significance between registers. In that case, plural Mux instructions are used with UnPack instructions that concatenate portions of the table entries.
    Type: Application
    Filed: March 31, 2003
    Publication date: September 30, 2004
    Inventors: Ruby B. Lee, Dale Morris
  • Publication number: 20040190619
    Abstract: Motion estimation uses tally (Population Count) and XOR (or other bit-wise comparison) operations to obtain a block-match measure for reference and predicted blocks to identify motion vectors for use in video compression. The XOR operations can be performed on absolute or relative luminance data. For example, a one-bit-per-pixel representation of a block can indicate for each pixel its luminance relative to a local average luminance. The performance improvement offered by the invention (relative to methods using the absolute value of the differences of absolute luminance values) can more than offset a penalty in block-match accuracy due to loss of information in luminance data reduction and/or the ignoring of bit significance due to the bit-wise comparison.
    Type: Application
    Filed: March 31, 2003
    Publication date: September 30, 2004
    Inventors: Ruby B. Lee, Dale Morris
  • Publication number: 20040193847
    Abstract: Intra-register subword add instructions yield results that are a function of a sum having as at least some of its addends unary functions of at least two subwords stored in the same register. For example, one “TreeAdd” instruction yields a sum of all subwords in a register. A “parallel accumulate” PAcc instruction yields a result with four 2-byte result subwords. Each result subword is the sum of 2-byte value in a first operand register and two of eight 1-byte subwords in a second operand register. A “Parallel Accumulate Magnitude” PAccMagLR also yields a result with four 2-byte subwords. Each of these subwords is the sum of a 2-byte value in a first operand register and the absolute values of two 1-byte values in a second operand register. These instructions provide for substantial performance enhancements for motion estimation used in video compression.
    Type: Application
    Filed: March 31, 2003
    Publication date: September 30, 2004
    Inventors: Ruby B. Lee, Dale Morris
  • Publication number: 20040168045
    Abstract: In addition to speculatively executing normal (non-speculative) load instructions in advance of their program order, an out-of-order processor executes the speculative (advanced) load instructions originally compiled for in-order processors. Both the speculative-load instructions and the corresponding check instructions can be executed out-of-order. The speculative-load instructions are treated like normal-load instructions while in the instruction queue. When a speculative-load instruction is retired from the instruction queue, it is transferred to a speculative load instruction manager. Execution of the corresponding check instruction can then check the validity of the speculative-load instruction.
    Type: Application
    Filed: February 21, 2003
    Publication date: August 26, 2004
    Inventors: Dale Morris, Matthew Howard Reilly
  • Publication number: 20040158600
    Abstract: A method and system is used to determine the correct rounding of a floating point function. The method involves performing the floating point function to a higher precision than required and examining the portion of extra precision in the result known as the discriminant. If a critical pattern is found in the discriminant, this indicates that standard rounding may give an incorrect result and further calculation is needed. The method can work for various rounding modes and types of floating point representations. The method can be implemented in a system as part of a processor instruction set or any combination of hardware, microcode, and software.
    Type: Application
    Filed: February 12, 2003
    Publication date: August 12, 2004
    Applicant: Hewlett Packard Company
    Inventors: Peter Markstein, Dale Morris, James M. Hull
  • Publication number: 20040123081
    Abstract: A mechanism for increasing the performance of control speculation comprises executing a speculative load, returning a data value to a register targeted by the speculative load if it hits in a cache, and associating a deferral token with the speculative load if it misses in the cache. The mechanism may also issue a prefetch on a cache miss to speed execution of recovery code if the speculative load is subsequently determined to be on the control flow path.
    Type: Application
    Filed: December 20, 2002
    Publication date: June 24, 2004
    Inventors: Allan Knies, Kevin Rudd, Achmed Rumi Zahir, Dale Morris, Jonathan K. Ross
  • Publication number: 20040123087
    Abstract: In a symmetric multiprocessing system using processors (DP0-DP7) of different capabilities (instruction sets), a processor responds (S11) to a query regarding its capabilities (instruction set) with its “active” capability, which is the intersection of its native capability and a common capability across processors determined (S04) during a boot sequence (13). The querying application (29) can select (S12) a program variant optimized for the active capability of the selected processor. If the application is subsequently subjected to a blind transfer to another processor, it is more likely than it would otherwise be (if the processors responded with their native capabilities) that the previously selected program variant runs without encountering unimplemented instructions.
    Type: Application
    Filed: December 19, 2002
    Publication date: June 24, 2004
    Inventor: Dale Morris
  • Publication number: 20040064677
    Abstract: A data processor includes program registers with individual byte-location write enables. Bypass networks allow a precision pipeline to respond to read requests by accessing a program register or pipeline stage on a byte-by-byte basis. The data processor can thus write to individual byte locations without overwriting other byte locations within the same register. The data processor has an instruction set with instructions that combine two operands and yield a one-byte result that is stored in a specified byte location of a specified result register. Eight instances of this instruction can pack eight results into a single 64-bit result register without additional packing instructions and without using a read port to read the result register before writing to it. As plural functional units can write concurrently to different subwords of the same result register, a system with four functional units can pack eight results into a result register in two instruction cycles.
    Type: Application
    Filed: September 30, 2002
    Publication date: April 1, 2004
    Inventor: Dale Morris
  • Publication number: 20040054873
    Abstract: A data processor includes an instruction decoder, an execution unit, a general-purpose register file, and an index-register file. The instruction set for the data processor includes indirect-indexing instructions to facilitate table lookups. When executing such an instruction, the execution unit reads an index stored at an index-register location specified by the instruction. The index refers to a general-purpose register location, which is then read and copied to a general-purpose register location as specified by the instruction. The disclosed execution unit includes four functional units, each with two read ports and a write port so that eight table lookups can be performed in parallel.
    Type: Application
    Filed: September 17, 2002
    Publication date: March 18, 2004
    Inventor: Dale Morris
  • Publication number: 20040019768
    Abstract: A method and system for determining, at run-time, whether or not to defer an exception that arises during execution of a control-speculative load instruction based on a recent history of execution of that control-speculative load instruction. The method and system relies on recent execution history stored in a speculative-load-accelerated-deferral table. If an exception arises during execution of a control-speculative load instruction, then the speculative-load-accelerated-deferral table is searched for an entry corresponding to the control-speculative load instruction. If an entry is found, then the exception is deferred, since the speculative-load-accelerated-deferral table indicates that a recent exception arising from execution of the control-speculative load instruction was not recovered via a chk.is-mediated branch to a recovery block, and not otherwise used by a non-speculative instruction.
    Type: Application
    Filed: July 29, 2002
    Publication date: January 29, 2004
    Inventors: Jonathan K. Ross, Dale Morris
  • Publication number: 20040015967
    Abstract: A method for application managed CPU context switching. The method includes determining whether state data of a CPU is valid for a process. The determining is performed by the process itself. If the state data of the CPU is not valid for the process, the process accesses functional hardware of the CPU to load new state data into the CPU. The process then continues to execute on the CPU using the new state data. If a context switch occurs, the existing state data of the CPU is invalidated. The state data of the CPU can be invalidated by an operating system without storing the state data in main memory.
    Type: Application
    Filed: May 3, 2002
    Publication date: January 22, 2004
    Inventor: Dale Morris
  • Publication number: 20030233643
    Abstract: A method of efficient code generation for modulo scheduled uncounted loops includes: assigning a given stage predicate to each instruction in each stage, including assigning a given stage predicate to each instruction in each speculative stage; and using the stage predicate to conditionally enable or disable the execution of an instruction during the prologue and epilogue execution.
    Type: Application
    Filed: June 18, 2002
    Publication date: December 18, 2003
    Inventors: Carol L. Thompson, Uma Srinivasan, Richard E. Hank, Dale Morris
  • Publication number: 20030188137
    Abstract: The present invention provides for parallel subword instructions that cause results to be non-contiguously stored in a result register. For example, a targeting-type instruction can specify (implicitly or explicitly) a bit position and the result of each of the parallel subword compare operations can be stored at that bit position within the respective subword location of a result register. Alternatively, for a shifting-type instruction, pre-existing contents of a result register can be shifted one bit toward greater significance while the results are of the present operation are stored in the least-significant bits of respective result-register subword locations. This approach provides the results of multiple parallel subword compare instructions to be combined with relatively few instructions and reduces the maximum lateral movement of information—both of which can enhance performance.
    Type: Application
    Filed: March 30, 2002
    Publication date: October 2, 2003
    Inventor: Dale Morris
  • Patent number: 6611910
    Abstract: A branch operation is processed using a branch predict instruction and an associated branch instruction. The branch predict instruction indicates a predicted direction, a target address, and an instruction address for the associated branch instruction. When the branch predict instruction is detected, the target address is stored at an entry indicated by the associated branch instruction address and a prefetch request is triggered to the target address. The branch predict instruction may also include hint information for managing the storage and use of the branch prediction information.
    Type: Grant
    Filed: October 12, 1998
    Date of Patent: August 26, 2003
    Assignee: Idea Corporation
    Inventors: Harshvardhan Sharangpani, Tse-Yu Yeh, Michael Paul Corwin, Millind Mittal, Kent G. Fielden, Dale Morris, Rajiv Gupta, Michael Schlansker, Mircea Poplingher
  • Patent number: 6438682
    Abstract: A loop branch prediction system is provided to predict a final iteration of a loop and resteer an associated fetch module to an appropriate target address. The loop prediction system includes a counter and an end of loop (EOL) module. In one mode, the counter tracks loop branches in process. When a termination condition is detected, the counter switches to a second mode to track the number of loop branches still to be issued. The EOL module compares the number of loop branches still to be issued with one or more threshold values and generates a resteer signal when a match is detected.
    Type: Grant
    Filed: October 12, 1998
    Date of Patent: August 20, 2002
    Assignee: Intel Corporation
    Inventors: Dale Morris, Mircea Poplingher, Tse-Yu Yeh, Michael P. Corwin, Wenliang Chen
  • Publication number: 20020095566
    Abstract: A branch operation is processed using a branch predict instruction and an associated branch instruction. The branch predict instruction indicates a predicted direction, a target address, and an instruction address for the associated branch instruction. When the branch predict instruction is detected, the target address is stored at an entry indicated by the associated branch instruction address and a prefetch request is triggered to the target address. The branch predict instruction may also include hint information for managing the storage and use of the branch prediction information.
    Type: Application
    Filed: October 12, 1998
    Publication date: July 18, 2002
    Inventors: HARSHVARDHAN SHARANGPANI, TSE-YU YEH, MICHAEL PAUL CORWIN, MILLAND MITTAL, KENT FIELDEN, DALE MORRIS
  • Publication number: 20020083310
    Abstract: A loop branch prediction system is provided to predict a final iteration of a loop and resteer an associated fetch module to an appropriate target address. The loop prediction system includes a counter and an end of loop (EOL) module. In one mode, the counter tracks loop branches in process. When a termination condition is detected, the counter switches to a second mode to track the number of loop branches still to be issued. The EOL module compares the number of loop branches still to be issued with one or more threshold values and generates a resteer signal when a match is detected.
    Type: Application
    Filed: October 12, 1998
    Publication date: June 27, 2002
    Inventors: DALE MORRIS, MIRCEA POPLINGHER, TSE-YU YEH, MICHAEL PAUL CORWIN, WENLIANG CHEN
  • Patent number: 6237077
    Abstract: A method for processing one or more branch instructions in an instruction bundle is provided. The instructions are ordered in an execution sequence within the bundle, with the branch instructions ordered last in the sequence. The bundled instructions are transferred to execution units indicated by a template field that is associated with the bundle. The first branch instruction in the bundle's execution sequence that is resolved taken is determined, and retirement of subsequent instructions in the execution sequence is suppressed.
    Type: Grant
    Filed: October 13, 1997
    Date of Patent: May 22, 2001
    Assignee: Idea Corporation
    Inventors: Harshvardhan Sharangpani, Michael Paul Corwin, Dale Morris, Kent Fielden, Tse-Yu Yeh, Hans Mulder, James Hull