Patents by Inventor Keith E. Diefendorff

Keith E. Diefendorff 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: 20080288744
    Abstract: A method for performing parallel operations in a computer system when one or more memory hazards may be present, which may be implemented by a processor, is described. During operation, the processor receives instructions for detecting conflict between memory addresses in vectors when memory operations are performed in parallel using at least a portion of the vectors, and tracking positions in at least one of the vectors of any detected conflict between the memory addresses. Next, the processor executes the instructions for detecting the conflict between the memory addresses and tracking the positions.
    Type: Application
    Filed: July 11, 2008
    Publication date: November 20, 2008
    Applicant: APPLE INC.
    Inventors: Jeffry E. Gonion, Keith E. Diefendorff
  • Publication number: 20080288745
    Abstract: A method for performing parallel operations in a computer system when one or more memory hazards may be present, which may be implemented by a processor, is described. During operation, the processor receives instructions for detecting conflict between memory addresses in vectors when operations are performed in parallel using at least a portion of the vectors, and generating one or more predicate values corresponding to any detected conflict between the memory addresses, where a given predicate value indicates elements in at least the portion of the vector that can be processed in parallel. Next, the processor executes the instructions for detecting the conflict between the memory addresses and generating the one or more predicate values.
    Type: Application
    Filed: July 11, 2008
    Publication date: November 20, 2008
    Applicant: APPLE INC.
    Inventors: Jeffry E. Gonion, Keith E. Diefendorff
  • Publication number: 20080288759
    Abstract: A processor that is configured to perform parallel operations in a computer system where one or more memory hazards may be present is described. An instruction fetch unit within the processor is configured to fetch instructions for detecting one or more critical memory hazards between memory addresses if memory operations are performed in parallel on multiple addresses corresponding to at least a partial vector of addresses. Note that critical memory hazards include memory hazards that lead to different results when the memory addresses are processed in parallel than when the memory addresses are processed sequentially. Furthermore, an execution unit within the processor is configured to execute the instructions for detecting the one or more critical memory hazards.
    Type: Application
    Filed: May 14, 2007
    Publication date: November 20, 2008
    Inventors: Jeffry E. Gonion, Keith E. Diefendorff
  • Publication number: 20080288754
    Abstract: A method for performing parallel operations in a computer system when one or more memory hazards may be present, which may be implemented by a processor, is described. During operation, the processor receives instructions for detecting conflict between memory addresses in vectors when operations are performed in parallel using at least a portion of the vectors, and generating one or more stop indicators corresponding to any detected conflict between the memory addresses, where a given stop indicator indicates a memory hazard. Next, the processor executes the instructions for detecting the conflict between the memory addresses and generating the one or more stop indicators.
    Type: Application
    Filed: July 11, 2008
    Publication date: November 20, 2008
    Applicant: APPLE INC.
    Inventors: Jeffry E. Gonion, Keith E. Diefendorff
  • Publication number: 20080114968
    Abstract: One embodiment of the present invention provides a processor which is configured to execute load-swapped instructions, which are possibly directed to unaligned source address. The processor is configured to execute the load-swapped instruction by loading a vector from a naturally-aligned memory region encompassing the source address, and in doing so rotating the bytes of the vector to cause the byte at the specified source address to reside at the least-significant byte position within the vector for a little-endian memory transaction, or causing said byte to be positioned at the most-significant byte position within the vector for a big-endian memory transaction.
    Type: Application
    Filed: November 1, 2006
    Publication date: May 15, 2008
    Inventors: Jeffry E. Gonion, Keith E. Diefendorff
  • Publication number: 20080114969
    Abstract: One embodiment of the present invention provides a processor that is configured to execute load-swapped-partial instructions. An instruction fetch unit within the processor is configured to fetch the load-swapped-partial instruction to be executed. Note that the load-swapped-partial instruction specifies a source address in a memory, which is possibly an unaligned address. Furthermore, an execution unit within the processor is configured to execute the load-swapped-partial instruction. This involves loading a partial-vector-sized datum from a naturally-aligned memory region encompassing the source address.
    Type: Application
    Filed: January 18, 2007
    Publication date: May 15, 2008
    Inventors: Jeffry E. Gonion, Keith E. Diefendorff
  • Patent number: 7194582
    Abstract: A microprocessor with multiple stream prefetch engines each executing a stream prefetch instruction to prefetch a complex data stream specified by the instruction in a manner synchronized with program execution of loads from the stream is provided. The stream prefetch engine stays at least a fetch-ahead distance (specified in the instruction) ahead of the program loads, which may randomly access the stream. The instruction specifies a level in the cache hierarchy to prefetch into, a locality indicator to specify the urgency and ephemerality of the stream, a stream prefetch priority, a TLB miss policy, a page fault miss policy, a protection violation policy, and a hysteresis value, specifying a minimum number of bytes to prefetch when the stream prefetch engine resumes prefetching. The memory subsystem includes a separate TLB for stream prefetches; or a joint TLB backing the stream prefetch TLB and load/store TLB; or a separate TLB for each prefetch engine.
    Type: Grant
    Filed: May 30, 2003
    Date of Patent: March 20, 2007
    Assignee: MIPS Technologies, Inc.
    Inventors: Keith E. Diefendorff, Thomas A. Petersen
  • Patent number: 7177985
    Abstract: A microprocessor with multiple stream prefetch engines each executing a stream prefetch instruction to prefetch a complex data stream specified by the instruction in a manner synchronized with program execution of loads from the stream is provided. The stream prefetch engine stays at least a fetch-ahead distance (specified in the instruction) ahead of the program loads, which may randomly access the stream. The instruction specifies a level in the cache hierarchy to prefetch into, a locality indicator to specify the urgency and ephemerality of the stream, a stream prefetch priority, a TLB miss policy, a page fault miss policy, a protection violation policy, and a hysteresis value, specifying a minimum number of bytes to prefetch when the stream prefetch engine resumes prefetching. The memory subsystem includes a separate TLB for stream prefetches; or a joint TLB backing the stream prefetch TLB and load/store TLB; or a separate TLB for each prefetch engine.
    Type: Grant
    Filed: May 30, 2003
    Date of Patent: February 13, 2007
    Assignee: MIPS Technologies, Inc.
    Inventor: Keith E. Diefendorff
  • Patent number: 5375216
    Abstract: A circuit for allowing greater user control over a cache memory is implemented in a data processor (20). Cache control instructions have been implemented to perform touch load, flush, and allocate operations in data cache (54) of data cache unit (24). The control instructions are decoded by both instruction cache unit (26) and sequencer (34) to provide necessary control and address information to load/store unit (28). Load/store unit (28) sequences execution of each of the instructions, and provides necessary control and address information to data cache unit (24) at an appropriate point in time. Cache control logic (60) subsequently processes both the address and control information to provide external signals which are necessary to execute each of the cache control instructions. Additionally, cache control logic (60) provides an external transfer code signal which allows a user to know when a cache transaction is performed.
    Type: Grant
    Filed: February 28, 1992
    Date of Patent: December 20, 1994
    Assignee: Motorola, Inc.
    Inventors: William C. Moyer, John H. Arends, Christopher E. White, Keith E. Diefendorff
  • Patent number: 5329489
    Abstract: A random access array memory device which uses a static buffer as a cache for speeding the access times achievable for data retrieval from the device. The static buffer is operationally divided into two or more blocks so that each block holds a block of data from a different row of the array. The division of a single buffer into several operational blocks significantly increases the "hit" probability of the cache, allowing fast access from the buffer. A control system stores the row address (TAG) of each of the multiple blocks and compares that address to the row address of the data desired and signals the result of that comparison. Random access memory arrays of the multiple line cache configuration are employed in data processing systems including a CPU, address and data buses, control logic, and multiplexers.
    Type: Grant
    Filed: March 13, 1992
    Date of Patent: July 12, 1994
    Assignee: Texas Instruments Incorporated
    Inventor: Keith E. Diefendorff
  • Patent number: 5268995
    Abstract: A method for performing graphics Z-compare and pixel merge operations, for use in a Z-buffering system to remove hidden surfaces when displaying a three-dimensional image, is provided. The data processing system includes a main memory for storing data and instructions, and a graphics execution unit for executing graphics instructions. The graphics execution units are connected to an instruction sequencer, which provides instructions and data operands to the execution units, via a communications bus. In response to receiving Z-compare and pixel merge instructions, the graphics execution unit compares one or more Z-axis coordinates within a first data operand to one or more Z-axis coordinates in a corresponding bit-field position within a second data operand to determine a relative Z-axis position of each of the one or more pixels associated with the one or more Z-axis coordinates.
    Type: Grant
    Filed: November 21, 1990
    Date of Patent: December 7, 1993
    Assignee: Motorola, Inc.
    Inventors: Keith E. Diefendorff, William C. Anderson
  • Patent number: 4868765
    Abstract: A porthole window system for computer displays allows a user to look at a portion of a window which could otherwise not be seen. A porthole window acts as an opening in a window of the usual type through which underlying windows may be seen. A porthole window can have different features as desired, including links to selected source and target windows, real time movement on the display screen, and the ability to be updated when a target window is updated. The porthole system runs concurrently with the normal window handling system of the computer.
    Type: Grant
    Filed: January 2, 1986
    Date of Patent: September 19, 1989
    Assignee: Texas Instruments Incorporated
    Inventor: Keith E. Diefendorff
  • Patent number: 4646298
    Abstract: The present invention relates to a self testing data processing system which includes a communications bus enabling communication between nonintelligent data processing circuits and a plurality of intelligent data processing circuits. The communications bus has connection slots, each connection slot having a unique electrically readable slot number. Each data processing circuit connects to the communications bus via one of the connection slots. Each data processing circuit has an identity memory which indicates whether or not that circuit can be a system test master. In addition, all intelligent data processing circuits include within their identity memory an indication of whether or not they have passed a circuit self test. Upon initial application of electric power or upon system reset, each intelligent data processing circuit performs a circuit self test and then sets the identity memory to indicate whether or not they have passed this self test.
    Type: Grant
    Filed: May 1, 1984
    Date of Patent: February 24, 1987
    Assignee: Texas Instruments Incorporated
    Inventors: Gerald E. Laws, Keith E. Diefendorff
  • Patent number: 4633466
    Abstract: The present invention relates to a self testing data processing system which includes a communications bus for communication between a number of slots, at least one nonintelligent data processing circuit connected to one of those slots and at least one intelligent data processing circuit connected to another of those slots. Each nonintelligent data processing circuit includes a test memory which is readable from the communication bus. The test memory has a diagnostic program stored therein for testing that nonintelligent data processing circuit. This diagnostic program is written in an intermediate level interpretable test language. Each of the intelligent data processing circuits includes an interpreter program for interpreting the intermediate level interpretable test language into the native code of the intelligent data processing circuit.
    Type: Grant
    Filed: May 1, 1984
    Date of Patent: December 30, 1986
    Assignee: Texas Instruments Incorporated
    Inventors: Gerald E. Laws, Keith E. Diefendorff