Patents by Inventor Craig Hansen

Craig Hansen 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: 20090089540
    Abstract: A programmable processor and method for improving the performance of processors by expanding at least two source operands, or a source and a result operand, to a width greater than the width of either the general purpose register or the data path width. The present invention provides operands which are substantially larger than the data path width of the processor by using the contents of a general purpose register to specify a memory address at which a plurality of data path widths of data can be read or written, as well as the size and shape of the operand. In addition, several instructions and apparatus for implementing these instructions are described which obtain performance advantages if the operands are not limited to the width and accessible number of general purpose registers.
    Type: Application
    Filed: October 31, 2007
    Publication date: April 2, 2009
    Applicant: MicroUnity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20090083498
    Abstract: A programmable processor and method for improving the performance of processors by expanding at least two source operands, or a source and a result operand, to a width greater than the width of either the general purpose register or the data path width. The present invention provides operands which are substantially larger than the data path width of the processor by using the contents of a general purpose register to specify a memory address at which a plurality of data path widths of data can be read or written, as well as the size and shape of the operand. In addition, several instructions and apparatus for implementing these instructions are described which obtain performance advantages if the operands are not limited to the width and accessible number of general purpose registers.
    Type: Application
    Filed: February 3, 2006
    Publication date: March 26, 2009
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20090031105
    Abstract: A programmable processor and method for improving the performance of processors by expanding at least two source operands, or a source and a result operand, to a width greater than the width of either the general purpose register or the data path width. The present invention provides operands which are substantially larger than the data path width of the processor by using the contents of a general purpose register to specify a memory address at which a plurality of data path widths of data can be read or written, as well as the size and shape of the operand. In addition, several instructions and apparatus for implementing these instructions are described which obtain performance advantages if the operands are not limited to the width and accessible number of general purpose registers.
    Type: Application
    Filed: October 31, 2007
    Publication date: January 29, 2009
    Applicant: MicroUnity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Patent number: 7483935
    Abstract: The present invention provides a system and method for improving the performance of general-purpose processors by implementing a functional unit that computes the product of a matrix operand with a vector operand, producing a vector result. The functional unit fully utilizes the entire resources of a 128b by 128b multiplier regardless of the operand size, as the number of elements of the matrix and vector operands increase as operand size is reduced. The unit performs both fixed-point and floating-point multiplications and additions with the highest-possible intermediate accuracy with modest resources.
    Type: Grant
    Filed: September 4, 2002
    Date of Patent: January 27, 2009
    Assignee: Microunity Systems Engineering, Inc.
    Inventors: Craig Hansen, Bruce Bateman, John Moussouris
  • Patent number: 7464252
    Abstract: A programmable processor and system for improving the performance of processors by incorporating an execution unit operable to decode and execute single instructions specifying three registers each containing a plurality of data elements, the execution unit operable to multiply the first and second registers and add the third register to produce a catenated result containing a plurality of data elements. Additional instructions provide group floating-point subtract, add, multiply, set less, and set greater equal operations. The set less and set greater equal operations produce alternatively zero or an identity element for each element of a catenated result, the result facilitating alternative selection of individual data elements using bitwise Boolean operations and without requiring conditional branch operations.
    Type: Grant
    Filed: January 16, 2004
    Date of Patent: December 9, 2008
    Assignee: Microunity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris
  • Publication number: 20080235918
    Abstract: A fastener for joining a first and a second article includes a head for being restrained by the first article and a retaining element having a first and second end point. The retaining element is inserted through the first and second article and is restrained by the second article. A filament connects the head and the retaining element and defines a first and second arm length of the retaining element from the respective first and second end point to the center-line of a root of the filament. The retaining element has a structure such that the first arm length is greater than the second arm length.
    Type: Application
    Filed: April 30, 2007
    Publication date: October 2, 2008
    Inventors: Laura Mooney, Craig Hansen
  • Patent number: 7430655
    Abstract: A system and software for improving the performance of processors by incorporating an execution unit configurable to execute a plurality of instruction streams from the plurality of threads, wherein each instruction stream includes a group instruction that operates on a plurality of data elements in partitioned fields of at least one of the registers to produce a catenated result.
    Type: Grant
    Filed: January 15, 2004
    Date of Patent: September 30, 2008
    Assignee: Microunity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris
  • Publication number: 20080222398
    Abstract: A programmable processor that comprises a general purpose processor architecture, capable of operation independent of another host processor, having a virtual memory addressing unit, an instruction path and a data path; an external interface; a cache operable to retain data communicated between the external interface and the data path; at least one register file configurable to receive and store data from the data path and to communicate the stored data to the data path; and a multi-precision execution unit coupled to the data path. The multi-precision execution unit is configurable to dynamically partition data received from the data path to account for an elemental width of the data and is capable of performing group floating-point operations on multiple operands in partitioned fields of operand registers and returning catenated results. In other embodiments the multi-precision execution unit is additionally configurable to execute group integer and/or group data handling operations.
    Type: Application
    Filed: August 29, 2006
    Publication date: September 11, 2008
    Inventors: Craig Hansen, John Moussouris
  • Publication number: 20080189512
    Abstract: A programmable processor and method for improving the performance of processors by expanding at least two source operands, or a source and a result operand, to a width greater than the width of either the general purpose register or the data path width. The present invention provides operands which are substantially larger than the data path width of the processor by using the contents of a general purpose register to specify a memory address at which a plurality of data path widths of data can be read or written, as well as the size and shape of the operand. In addition, several instructions and apparatus for implementing these instructions are described which obtain performance advantages if the operands are not limited to the width and accessible number of general purpose registers.
    Type: Application
    Filed: October 31, 2007
    Publication date: August 7, 2008
    Applicant: MicroUnity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20080177986
    Abstract: Methods and software are presented for processing data in a programmable processor, involving (a) decoding instructions for execution using an execution unit operable to execute instructions by partitioning data stored in registers in a register file into multiple data elements, the instructions selected from an instruction set that includes group arithmetic instructions and group data handling instructions, (b) in response to decoding different group arithmetic instructions, executing a plurality of different group floating-point and group integer arithmetic operations that each arithmetically operates on multiple data elements stored in registers in the register file to produce a catenated result that is returned to a register in the register file, wherein the catenated result comprises a plurality of individual results, and (c) in response to decoding different group data handling instructions, executing group data handling operations that re-arrange data elements in different ways.
    Type: Application
    Filed: July 27, 2007
    Publication date: July 24, 2008
    Applicant: MICROUNITY SYSTEMS
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20080162882
    Abstract: Systems and apparatuses are presented relating a programmable processor comprising an execution unit that is operable to decode and execute instructions received from an instruction path and partition data stored in registers in the register file into multiple data elements, the execution unit capable of executing a plurality of different group floating-point and group integer arithmetic operations that each arithmetically operates on multiple data elements stored registers in a register file to produce a catenated result that is returned to a register in the register file, wherein the catenated result comprises a plurality of individual results, wherein the execution unit is capable of executing group data handling operations that re-arrange data elements in different ways in response to data handling instructions.
    Type: Application
    Filed: July 27, 2007
    Publication date: July 3, 2008
    Applicant: MICROUNITY SYSTEMS
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Patent number: 7386706
    Abstract: A system and software for improving the performance of processors by incorporating an execution unit operable to decode and execute single instructions in an instruction set comprising (a) group instructions that operate on a plurality of data elements in partitioned fields of a register to produce a catenated result, (b) aligned memory operations that move data between memory and register where the memory operand is aligned, and (c) unaligned memory operations where the memory operand is unaligned.
    Type: Grant
    Filed: November 20, 2003
    Date of Patent: June 10, 2008
    Assignee: Microunity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris
  • Publication number: 20080104375
    Abstract: A programmable processor and method for improving the performance of processors by expanding at least two source operands, or a source and a result operand, to a width greater than the width of either the general purpose register or the data path width. The present invention provides operands which are substantially larger than the data path width of the processor by using the contents of a general purpose register to specify a memory address at which a plurality of data path widths of data can be read or written, as well as the size and shape of the operand. In addition, several instructions and apparatus for implementing these instructions are described which obtain performance advantages if the operands are not limited to the width and accessible number of general purpose registers.
    Type: Application
    Filed: August 20, 2007
    Publication date: May 1, 2008
    Applicant: MicroUnity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20080104376
    Abstract: Systems and apparatuses are presented relating a programmable processor comprising an execution unit that is operable to decode and execute instructions received from an instruction path and partition data stored in registers in the register file into multiple data elements, the execution unit capable of executing a plurality of different group floating-point and group integer arithmetic operations that each arithmetically operates on multiple data elements stored registers in a register file to produce a catenated result that is returned to a register in the register file, wherein the catenated result comprises a plurality of individual results, wherein the execution unit is capable of executing group data handling operations that re-arrange data elements in different ways in response to data handling instructions.
    Type: Application
    Filed: October 29, 2007
    Publication date: May 1, 2008
    Applicant: MicroUnity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris
  • Publication number: 20080092884
    Abstract: A vest for a human body has an air core coupled to a pulsator operable to subject the vest to pulses of air which applies and releases high frequency pressure forces to the body. The pulsator has two diaphragms connected to a brushless electric dc motor with rotary to reciprocating linear motion transmitting mechanisms comprising scotch yokes having anti-lash assemblies operable to generate air pulses in an air pulsing chamber. The diaphragms also increase the pressure in a manifold chamber. A check valve connects the manifold chamber with a pulsing chamber to allow pressurized air to flow from the manifold chamber into the pulsing chamber. An air flow control valve in communication with the manifold chamber is used to adjust the pressure of the air in the manifold and pulsing chambers. A programmable motor controller adjusts the duration of operation and speed of the motor to vary the operational time and frequency of the air pulses.
    Type: Application
    Filed: October 25, 2007
    Publication date: April 24, 2008
    Inventors: Craig Hansen, Paul Cross, Lonnie Helgeson
  • Publication number: 20080091925
    Abstract: Methods and software are presented for processing data in a programmable processor, involving (a) decoding instructions for execution using an execution unit operable to execute instructions by partitioning data stored in registers in a register file into multiple data elements, the instructions selected from an instruction set that includes group arithmethic instructions and group data handling instructions, (b) in response to decoding different group data handling instructions, executing group data handling operations that re-arrange data elements in different ways, and (c) in response to decoding different group arithmethic instructions, executing a plurality of different group floating-point and group integer arithmetic operations that each arithmetically operates on the multiple data elements stored in registers in the register file to produce a catenated result that is returned to a register in the register file, wherein the catenated result comprises a plurality of individual results.
    Type: Application
    Filed: July 27, 2007
    Publication date: April 17, 2008
    Applicant: MICROUNITY SYSTEMS
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20080091758
    Abstract: Systems and apparatuses are presented relating a programmable processor comprising an execution unit that is operable to decode and execute instructions received from an instruction path and partition data stored in registers in the register file into multiple data elements, the execution unit capable of executing group data handling operations that re-arrange data elements in different ways in response to data handling instructions, the execution unit further capable of executing a plurality of different group floating-point and group integer arithmetic operations that each arithmetically operates on the multiple data elements stored in registers in the register file to produce a catenated result that is returned to a register in the register file, wherein the catenated result comprises a plurality of individual results.
    Type: Application
    Filed: July 27, 2007
    Publication date: April 17, 2008
    Applicant: MICROUNITY SYSTEMS
    Inventors: Craig Hansen, John Moussouris, Alexia Massalin
  • Publication number: 20080086062
    Abstract: A vest for a human body has an air core coupled to a pulsator operable to subject the vest to pulses of air which applies and releases high frequency pressure forces to the body. The pulsator has two diaphragms connected to a brushless electric dc motor with rotary to reciprocating linear motion transmitting mechanisms comprising scotch yokes having anti-lash assemblies operable to generate air pulses in an air pulsing chamber. The diaphragms also increase the pressure in a manifold chamber. A check valve connects the manifold chamber with a pulsing chamber to allow pressurized air to flow from the manifold chamber into the pulsing chamber. An air flow control valve in communication with the manifold chamber is used to adjust the pressure of the air in the manifold and pulsing chambers. A programmable motor controller adjusts the duration of operation and speed of the motor to vary the operational time and frequency of the air pulses.
    Type: Application
    Filed: October 30, 2007
    Publication date: April 10, 2008
    Inventors: Craig Hansen, Paul Cross, Lonnie Helgeson
  • Patent number: 7353367
    Abstract: A programmable processor and method for improving the performance of processors by incorporating an execution unit operable to decode and execute single instructions specifying both a shift amount and a register containing a plurality of data elements, wherein the execution unit is operable to shift a subfield of each of the plurality of data elements by the shift amount to produce a second plurality of data elements; and provide the second plurality of data elements as a catenated result.
    Type: Grant
    Filed: November 14, 2003
    Date of Patent: April 1, 2008
    Assignee: Microunity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris
  • Publication number: 20080072020
    Abstract: Systems and apparatuses are presented relating a programmable processor comprising an execution unit that is operable to decode and execute instructions received from an instruction path and partition data stored in registers in the register file into multiple data elements, the execution unit capable of executing a plurality of different group floating-point and group integer arithmetic operations that each arithmetically operates on multiple data elements stored registers in a register file to produce a catenated result that is returned to a register in the register file, wherein the catenated result comprises a plurality of individual results, wherein the execution unit is capable of executing group data handling operations that re-arrange data elements in different ways in response to data handling instructions.
    Type: Application
    Filed: August 20, 2007
    Publication date: March 20, 2008
    Applicant: MicroUnity Systems Engineering, Inc.
    Inventors: Craig Hansen, John Moussouris