Patents by Inventor Terence M. Potter

Terence M. Potter 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: 20160055610
    Abstract: Techniques are disclosed relating to scheduling tasks for graphics processing. In one embodiment, a graphics unit is configured to render a frame of graphics data using a plurality of pass groups and the frame of graphics data includes a plurality of frame portions. In this embodiment, the graphics unit includes scheduling circuitry configured to receive a plurality of tasks, maintain pass group information for each of the plurality of tasks, and maintain relative age information for the plurality of frame portions. In this embodiment, the scheduling circuitry is configured to select a task for execution based on the pass group information and the age information. In some embodiments, the scheduling circuitry is configured to select tasks from an oldest frame portion and current pass group before selecting other tasks. This scheduling approach may result in efficient execution of various different types of graphics workloads.
    Type: Application
    Filed: December 17, 2014
    Publication date: February 25, 2016
    Inventors: Robert D. Kenney, Benjiman L. Goodman, Terence M. Potter
  • Patent number: 9264066
    Abstract: Techniques are disclosed relating to type conversion using a floating-point unit. In one embodiment, to convert a floating-point value to a normalized integer format, a floating-point unit is configured to perform an operation to generate a result having a significant portion and an exponent portion, where the operation includes multiplying the floating-point value by a constant. In one embodiment, the apparatus is further configured to add a value to the exponent portion of the result, and set a rounding mode to round to nearest. The constant may be a greatest value less than one that can be represented using the particular number of unsigned bits. The value added to the initial exponent may be equal to the number of unsigned bits of the normalized integer format. The apparatus may perform this conversion in response to a pack instruction.
    Type: Grant
    Filed: July 30, 2013
    Date of Patent: February 16, 2016
    Assignee: Apple Inc.
    Inventors: James S. Blomgren, Terence M. Potter
  • Patent number: 9183611
    Abstract: Techniques are disclosed relating to implementation of gradient-type graphics instructions. In one embodiment, an apparatus includes first and second execution pipelines and a register file. In this embodiment, the register file is coupled to the first and second execution pipelines and configured to store operands for the first and second execution pipelines. In this embodiment, the apparatus is configured to determine that a graphics instruction imposes a dependency between the first and second pipeline. In response to this determination, the apparatus is configured to read a plurality of operands from the register file including an operand assigned to the second execution pipeline and to select the operand assigned to the second execution pipeline as an input operand for the first execution pipeline. The apparatus may be configured such that operands assigned to the second execution pipeline are accessible by the first execution pipeline only via the register file and not from other locations.
    Type: Grant
    Filed: July 3, 2013
    Date of Patent: November 10, 2015
    Assignee: Apple Inc.
    Inventors: Andrew M. Havlir, Terence M. Potter
  • Patent number: 9128697
    Abstract: Various techniques for storing computer numbers such as floating-point numbers. In one embodiment, a data processing unit is configured to represent floating-point numbers using a first precision with a first number of bits and a second precision with a second number of bits, where the second number of bits is greater than the first number of bits. A floating-point type value may be set upon a memory store to indicate whether a first representation of a floating-point number uses the first or the second number of bits. A second representation of the floating-point number and the floating-point type value may be stored accordingly. In some embodiments, the second representation may correspond to the first representation with one or more bits shifted. This format may lead to memory power savings when reading from a memory location of the second precision when the result is indicated as the first precision.
    Type: Grant
    Filed: February 23, 2012
    Date of Patent: September 8, 2015
    Assignee: Apple Inc.
    Inventors: Terence M. Potter, James Wang
  • Publication number: 20150205324
    Abstract: Techniques are disclosed relating to clock routing techniques in processors with both pipelined and non-pipelined circuitry. In some embodiments, an apparatus includes execution units that are non-pipelined and configured to perform instructions without receiving a clock signal. In these embodiments, one or more clock lines routed throughout the apparatus do not extend into the one or more execution units in each pipeline, reducing the length of the clock lines. In some embodiments, the apparatus includes multiple such pipelines arranged in an array, with the execution units located on an outer portion of the array and clocked control circuitry located on an inner portion of the array. In some embodiments, clock lines do not extend into the outer portion of the array. In some embodiments, the array includes one or more rows of execution units. These arrangements may further reduce the length of clock lines.
    Type: Application
    Filed: January 21, 2014
    Publication date: July 23, 2015
    Applicant: Apple Inc.
    Inventors: Andrew M. Havlir, James S. Blomgren, Terence M. Potter
  • Publication number: 20150058573
    Abstract: Instructions may require one or more operands to be executed, which may be provided from a register file. In the context of a GPU, however, a register file may be a relatively large structure, and reading from the register file may be energy and/or time intensive An operand cache may be used to store a subset of operands, and may use less power and have quicker access times than the register file. Selectors (e.g., multiplexers) may be used to read operands from the operand cache. Power savings may be achieved in some embodiments by activating only a subset of the selectors, which may be done by activators (e.g. flip-flops). Operands may also be concurrently provided to two or more locations via forwarding, which may be accomplished via a source selection unit in some embodiments. Operand forwarding may also reduce power and/or speed execution in one or more embodiments.
    Type: Application
    Filed: August 20, 2013
    Publication date: February 26, 2015
    Applicant: Apple Inc.
    Inventors: James S. Blomgren, Terence M. Potter, Timothy A. Olson, Andrew M. Havlir
  • Publication number: 20150058389
    Abstract: Techniques are disclosed relating to performing extended multiplies without a carry flag. In one embodiment, an apparatus includes a multiply unit configured to perform multiplications of operands having a particular width. In this embodiment, the apparatus also includes multiple storage elements configured to store operands for the multiply unit. In this embodiment, each of the storage elements is configured to provide a portion of a stored operand that is less than an entirety of the stored operand in response to a control signal from the apparatus. In one embodiment, the apparatus is configured to perform a multiplication of given first and second operands having a width greater than the particular width by performing a sequence of multiply operations using the multiply unit, using portions of the stored operands and without using a carry flag between any of the sequence of multiply operations.
    Type: Application
    Filed: August 20, 2013
    Publication date: February 26, 2015
    Applicant: Apple Inc.
    Inventors: James S. Blomgren, Terence M. Potter
  • Publication number: 20150058572
    Abstract: Instructions may require one or more operands to be executed, which may be provided from a register file. In the context of a GPU, however, a register file may be a relatively large structure, and reading from the register file may be energy and/or time intensive An operand cache may store a subset of operands, and may use less power and have quicker access times than the register file. In some embodiments, intelligent operand prefetching may speed execution by reducing memory bank conflicts (e.g., conflicts within a register file containing multiple memory banks). An unused operand slot for another instruction (e.g., an instruction that does not require a maximum number of source operands allowed by an instruction set architecture) may be used to prefetch an operand for another instruction in one embodiment. Prefetched operands may be stored in an operand cache, and prefetching may occur based on software-provided information.
    Type: Application
    Filed: August 20, 2013
    Publication date: February 26, 2015
    Applicant: Apple Inc.
    Inventors: Timothy A. Olson, Terence M. Potter, James S. Blomgren, Andrew M. Havlir
  • Publication number: 20150058571
    Abstract: Instructions may require one or more operands to be executed, which may be provided from a register file. In the context of a GPU, however, a register file may be a relatively large structure, and reading from the register file may be energy and/or time intensive An operand cache may be used to store a subset of operands, and may use less power and have quicker access times than the register file. Hint values may be used in some embodiments to suggest that a particular operand should be stored in the operand cache (so that is available for current or future use). In one embodiment, a hint value indicates that an operand should be cached whenever possible. Hint values may be determined by software, such as a compiler, in some embodiments. One or more criteria may be used to determine hint values, such as how soon in the future or how frequently an operand will be used again.
    Type: Application
    Filed: August 20, 2013
    Publication date: February 26, 2015
    Applicant: Apple Inc.
    Inventors: Terence M. Potter, Timothy A. Olson, James S. Blomgren, Andrew M. Havlir, Michael Geary
  • Publication number: 20150039867
    Abstract: Techniques are disclosed relating to specification of instruction operands. In some embodiments, this may involve assigning operands to source inputs. In one embodiment, an instruction includes one or more mapping values, each of which corresponds to a source of the instruction and each of which specifies a location value. In this embodiment, the instruction includes one or more location values that are each usable to identify an operand for the instruction. In this embodiment, a method may include accessing operands using the location values and assigning accessed operands to sources using the mapping values. In one embodiment, the sources may correspond to inputs of an execution block. In one embodiment, a destination mapping value in the instruction may specify a location value that indicates a destination for storing an instruction result.
    Type: Application
    Filed: July 31, 2013
    Publication date: February 5, 2015
    Applicant: Apple Inc.
    Inventors: James S. Blomgren, Terence M. Potter
  • Publication number: 20150039661
    Abstract: Techniques are disclosed relating to type conversion using a floating-point unit. In one embodiment, to convert a floating-point value to a normalized integer format, a floating-point unit is configured to perform an operation to generate a result having a significant portion and an exponent portion, where the operation includes multiplying the floating-point value by a constant. In one embodiment, the apparatus is further configured to add a value to the exponent portion of the result, and set a rounding mode to round to nearest. The constant may be a greatest value less than one that can be represented using the particular number of unsigned bits. The value added to the initial exponent may be equal to the number of unsigned bits of the normalized integer format. The apparatus may perform this conversion in response to a pack instruction.
    Type: Application
    Filed: July 30, 2013
    Publication date: February 5, 2015
    Applicant: Apple Inc.
    Inventors: James S. Blomgren, Terence M. Potter
  • Publication number: 20150035841
    Abstract: Techniques are disclosed relating to a multithreaded execution pipeline. In some embodiments, an apparatus is configured to assign a number of threads to an execution pipeline that is an integer multiple of a minimum number of cycles that an execution unit is configured to use to generate an execution result from a given set of input operands. In one embodiment, the apparatus is configured to require strict ordering of the threads. In one embodiment, the apparatus is configured so that the same thread access (e.g., reads and writes) a register file in a given cycle. In one embodiment, the apparatus is configured so that the same thread does not write back an operand and a result to an operand cache in a given cycle.
    Type: Application
    Filed: July 31, 2013
    Publication date: February 5, 2015
    Applicant: Apple Inc.
    Inventors: Andrew M. Havlir, James S. Blomgren, Terence M. Potter
  • Publication number: 20150009223
    Abstract: Techniques are disclosed relating to implementation of gradient-type graphics instructions. In one embodiment, an apparatus includes first and second execution pipelines and a register file. In this embodiment, the register file is coupled to the first and second execution pipelines and configured to store operands for the first and second execution pipelines. In this embodiment, the apparatus is configured to determine that a graphics instruction imposes a dependency between the first and second pipeline. In response to this determination, the apparatus is configured to read a plurality of operands from the register file including an operand assigned to the second execution pipeline and to select the operand assigned to the second execution pipeline as an input operand for the first execution pipeline. The apparatus may be configured such that operands assigned to the second execution pipeline are accessible by the first execution pipeline only via the register file and not from other locations.
    Type: Application
    Filed: July 3, 2013
    Publication date: January 8, 2015
    Inventors: Andrew M. Havlir, Terence M. Potter
  • Patent number: 7299461
    Abstract: An expansion syntax that creates a set of expressions in software code is disclosed. The syntax includes one or more expansion constructs embedded within a software code expression, interpreted by an expansion function to create a set of expanded expressions. Each construct includes an expansion syntax indicator and a plurality of list parameters, which may be start, end, step, and skip integers, or strings of non-white space. Both constructs may include either default or expressly assigned list names, which serve as iterators during the expansion process. Each expanded expression created includes a list member from each embedded construct. The expansion methodology, and the resulting set of expanded expressions, depends upon the number of unique iterators present in the software code expression and whether any of the embedded constructs include the stride parameter.
    Type: Grant
    Filed: December 16, 2003
    Date of Patent: November 20, 2007
    Assignee: Intrinsity, Inc.
    Inventors: Fritz A. Boehm, Terence M. Potter, James S. Blomgren
  • Patent number: 7053664
    Abstract: Power consumption in NDL designs utilizing FAST14 technology can be controlled via the introduction and propagation of null value 1-of-N signals in selected areas of the logic. A shared logic tree circuit, which might perform an arithmetic function or a multiplexing function, evaluates a 1-of-N input logic signal and produces a 1-of-N output logic signal having a null value if the input has a null value. A null value signal is defined as a valid multiwire 1-of-N signal used in NDL logic having N wires where N is greater than 2, where no one of the N wires of the 1-of-N signal is asserted when the NDL gate evaluates.
    Type: Grant
    Filed: November 20, 2002
    Date of Patent: May 30, 2006
    Assignee: Intrinsity, Inc.
    Inventors: Terence M. Potter, James S. Blomgren
  • Patent number: 6956406
    Abstract: A storage element (100, 200) is capable of statically storing a dynamic input signal, and providing that static signal to dynamic logic gates. The element receives at least two input logic signals (150, 170), one of which is a dynamic signal (150) that may be one wire of a 1-of-N signal used in FAST14 logic from a dynamic logic gate (72) that may be a NDL gate, and generates one or more static logic output signals (190, 192). The element, which may or may not receive a clock signal (160), holds its outputs until its dynamic input (150) switches value on a subsequent evaluate cycle and at least one other input, which may be a write enable signal (170), changes signal value. In an alternative embodiment (200), the element may not change output values until a reset signal (330) is received during a prior clock cycle.
    Type: Grant
    Filed: July 2, 2002
    Date of Patent: October 18, 2005
    Assignee: Intrinsity, Inc.
    Inventors: Michael R. Seningen, Terence M. Potter, James S. Blomgren
  • Patent number: 6911846
    Abstract: The present invention comprises a method and apparatus for an integrated circuit (IC) that uses 1 of N signals to reduce the circuit's wire to wire effective capacitance. The present invention comprises a logic tree circuit coupled to a first 1 of N input signal, a second 1 of N input signal, and a 1 of N output signal where the 1 of N signals' reduce the signal's wire to wire effective capacitance. Other embodiments of the present invention include the use of a 1 of 2 signal, a 1 of 3 signal, a 1 of 4 signal, and a 1 of 8 signal where one and one of the wires of the signal is active.
    Type: Grant
    Filed: February 5, 1998
    Date of Patent: June 28, 2005
    Assignee: Intrinsity, Inc.
    Inventors: James S. Blomgren, Terence M. Potter, Stephen C. Horne, Michael R. Seningen, Anthony M. Petro
  • Publication number: 20040139423
    Abstract: An expansion syntax that creates a set of expressions in software code is disclosed. The syntax includes one or more expansion constructs embedded within a software code expression, interpreted by an expansion function to create a set of expanded expressions. Each construct includes an expansion syntax indicator and a plurality of list parameters, which may be start, end, step, and skip integers, or strings of nonwhite space. Both constructs may include either default or expressly assigned list names, which serve as iterators during the expansion process. Each expanded expression created includes a list member from each embedded construct. The expansion methodology, and the resulting set of expanded expressions, depends upon the number of unique iterators present in the software code expression and whether any of the embedded constructs include the stride parameter.
    Type: Application
    Filed: December 16, 2003
    Publication date: July 15, 2004
    Applicant: Intrinsity, Inc.
    Inventors: Fritz A. Boehm, Terence M. Potter, James S. Blomgren
  • Patent number: 6714045
    Abstract: A static output signal is generated using a static storage element (104) and transmitted to a NDL gate (110) over a transmission path (112) that is characterized by a user-specified multi-cycle timing constraint that is used to create appropriate verification tests of the apparatus. The multi-cycle timing constraint may be a pragma that is interpreted by the compiler of a timing analysis tool such as PATHMILL to automatically check the set-up and hold times of the static signal relative to the rising edge or falling edge of user-specified clock signal pulses. The same pragma is interpreted by the compiler of a functional verification tools such as VIS to create statements that test the behavior of the apparatus during the clock signal pulses other than the user-specified clock signal pulses tested by the timing analysis tool.
    Type: Grant
    Filed: July 1, 2002
    Date of Patent: March 30, 2004
    Assignee: Intrinsity, Inc.
    Inventors: Terence M. Potter, James S. Blomgren, Laura A. Potter, Fritz A. Boehm
  • Publication number: 20040006753
    Abstract: Power consumption in NDL designs utilizing FAST14 technology can be controlled via the introduction and propagation of null value 1-of-N signals in selected areas of the logic. A shared logic tree circuit, which might perform an arithmetic function or a multiplexing function, evaluates a 1-of-N input logic signal and produces a 1-of-N output logic signal having a null value if the input has a null value. A null value signal is defined as a valid multiwire 1-of-N signal used in NDL logic having N wires where N is greater than 2, where no one of the N wires of the 1-of-N signal is asserted when the NDL gate evaluates.
    Type: Application
    Filed: November 20, 2002
    Publication date: January 8, 2004
    Inventors: Terence M. Potter, James S. Blomgren