Patents by Inventor Kalyan Muthukumar

Kalyan Muthukumar 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: 20070079302
    Abstract: A method and system for optimizing the execution of a software loop is provided. The method involves the determination of an edge in a critical recurrence cycle in the software loop. The edge is a dependency link between two instructions and contains a dependee and a dependent. The dependee is an instruction that produces a result, and the dependent is an instruction that uses the result. The method further involves performing predicate promotion of at least one of the dependee and the dependent if one or more pre-determined conditions are met.
    Type: Application
    Filed: September 30, 2005
    Publication date: April 5, 2007
    Applicant: INTEL CORPORATION
    Inventors: Kalyan Muthukumar, Robyn Sampson, Daniel Lavery
  • Publication number: 20070074186
    Abstract: Various embodiments of the present invention relate to methods and systems for optimizing an intermediate code in a compilation logic. The intermediate code is optimized by performing reassociation in software loops. The intermediate code includes at least one critical recurrence cycle. The performance of reassociation in software loops can reduce a critical recurrence cycle in them, which can speed up their execution. The subject method can include the determination of one or more critical recurrence cycles in a software loop. The method can also include the determination of at least one edge in a critical recurrence cycle, with respect to which reassociation can be performed, if one or more pre-determined criteria are met. The method can further include performing reassociation of a dependee and a dependent of an edge. In an embodiment, when one or more pre-determined criteria are met, the logic of the software loop is maintained after performing reassociation of the dependee and the dependent of the edge.
    Type: Application
    Filed: September 29, 2005
    Publication date: March 29, 2007
    Applicant: Intel Corporation
    Inventors: Kalyan Muthukumar, Daniel Lavery
  • Publication number: 20050283772
    Abstract: Disclosed are embodiments of a method and system for calculating an unrolling factor for software loops. The unrolling factor may be calculated by applying a formula that takes into account issue constraints of a processor. The issue constraints may include the total issue width of the processor, and may also include individual issue constraints for each instruction type. The software loop may be unrolled by the calculated unrolling factor and may be software pipelined. Other embodiments are also described and claimed.
    Type: Application
    Filed: June 22, 2004
    Publication date: December 22, 2005
    Inventors: Kalyan Muthukumar, Jean-Francois Collard
  • Publication number: 20050216899
    Abstract: Disclosed are embodiments of a compiler, methods, and system for resource-aware scheduling of instructions. A list scheduling approach is augmented to take into account resource constraints when determining priority for scheduling of instructions. Other embodiments are also described and claimed.
    Type: Application
    Filed: March 24, 2004
    Publication date: September 29, 2005
    Inventors: Kalyan Muthukumar, Daniel Lavery, Gerolf Hoflehner, Chu-Cheow Lim, Jean-Francois Collard
  • Patent number: 6912709
    Abstract: The present invention provides a mechanism that facilitates speculative execution of instructions within software-pipelined loops. In accordance with one embodiment of the invention, a software-pipelined loop is initialized with a speculative instruction deactivated. At least one initiation interval of the software-pipelined loop is executed, and the speculative instruction is activated. Subsequent initiation intervals of the software-pipelined loop are then executed.
    Type: Grant
    Filed: December 29, 2000
    Date of Patent: June 28, 2005
    Assignee: Intel Corporation
    Inventors: David A Helder, Kalyan Muthukumar
  • Publication number: 20050071607
    Abstract: An efficient method for software-pipelining (SWP) of loops to translate programs, from higher level languages into equivalent object or machine language code for execution on a computer. In one example embodiment, this is accomplished by spilling and filling multiple computed values, in a register, that are live across multiple stages in a software-pipelined loop, using multiple rotating stack memory locations to reduce compiler-time of SWP, and complexity of the implemented SWP.
    Type: Application
    Filed: September 29, 2003
    Publication date: March 31, 2005
    Inventor: Kalyan Muthukumar
  • Patent number: 6839895
    Abstract: Code restructuring or reordering based on profiling information and memory hierarchy is provided by constructing a Program Execution Graph (PEG) corresponding to a level of the memory hierarchy, partitioning this PEG to reduce estimated memory overhead costs below an upper bound, and constructing a PEG for a next level of the memory hierarchy from the partitioned PEG. The PEG is constructed from control flow and frequency information from a profile of the program to be restructured. The PEG is a weighted undirected graph comprising nodes representing basic blocks and edges representing transfer of control between pairs of basic blocks. The weight of a node is the size of the basic block it represents and the weight of an edge is the frequency of transition between the pair of basic blocs it connects.
    Type: Grant
    Filed: October 10, 2000
    Date of Patent: January 4, 2005
    Assignee: International Business Machines Corporation
    Inventors: Dz Ching Ju, Kalyan Muthukumar, Shankar Ramaswamy, Barbara Bluestein Simons
  • Publication number: 20040268334
    Abstract: A method that uses software-pipelining to translate programs, from higher level languages into equivalent object or machine language code for execution on a computer, including sparse arrays/matrices. In one example embodiment, this is accomplished by transforming sparse array matrix source code and software-pipelining the transformed source code to reduce recurrence initiation interval, decrease run time, and enhance performance.
    Type: Application
    Filed: June 30, 2003
    Publication date: December 30, 2004
    Inventors: Kalyan Muthukumar, Gautam Doshi, Dattatraya Kulkarni
  • Patent number: 6820250
    Abstract: A method is provided for processing nested loops that include a modulo-scheduled inner loop within an outer loop. The nested loop is scheduled to execute the epilog stage of the inner loop for a given iteration of the outer loop with the prolog stage of the inner loop for the next iteration of the outer loop. For one embodiment of the invention, this is accomplished by initializing an epilog counter for the inner loop to a value that bypasses draining the software pipeline. This causes the processor to exit the inner loop before it begins draining the inner loop pipeline. The inner loop pipeline is drained during the next iteration of the outer loop, while the inner loop pipeline fills for the next iteration of the outer loop.
    Type: Grant
    Filed: May 9, 2002
    Date of Patent: November 16, 2004
    Assignee: Intel Corporation
    Inventors: Kalyan Muthukumar, Gautam B. Doshi
  • Publication number: 20040088501
    Abstract: A method and apparatus are provided for repacking of memory data. For at least one embodiment, data for a plurality of store instructions in a source code program is loaded from memory into the appropriate sub-location of a proxy storage location. The packed data is then written with a single instruction from the proxy storage location into contiguous memory locations.
    Type: Application
    Filed: November 4, 2002
    Publication date: May 6, 2004
    Inventors: Jean-Francois C. Collard, Kalyan Muthukumar
  • Publication number: 20040015934
    Abstract: A method is provided for processing nested loops that include a modulo-scheduled inner loop within an outer loop. The nested loop is scheduled to execute the epilog stage of the inner loop for a given iteration of the outer loop with the prolog stage of the inner loop for the next iteration of the outer loop. For one embodiment of the invention, this is accomplished by initializing an epilog counter for the inner loop to a value that bypasses draining the software pipeline. This causes the processor to exit the inner loop before it begins draining the inner loop pipeline. The inner loop pipeline is drained during the next iteration of the outer loop, while the inner loop pipeline fills for the next iteration of the outer loop.
    Type: Application
    Filed: May 9, 2002
    Publication date: January 22, 2004
    Inventors: Kalyan Muthukumar, Gautam B. Doshi
  • Patent number: 6615403
    Abstract: The present invention provides a mechanism for implementing compare speculation in software pipelined loops. A data dependency graph (DDG) is generated for a loop that includes a control compare instruction, a compare instruction and a non-speculative instruction that depends directly or indirectly on the compare instruction. A loop-carried edge between the control compare instruction and the compare instruction is replaced by a loop-carried edge between the control compare instruction and the non-speculative instruction. If the compare instruction is speculated when the loop is modulo-scheduled, any load instruction that depends on the compare is converted to a speculative load, and a loop-carried edge is added between the control compare and a check instruction associated with the speculative load. A loop-independent edge is also added between the check instruction and the non-speculative instruction if the non-speculative instruction also depends on the load.
    Type: Grant
    Filed: June 30, 2000
    Date of Patent: September 2, 2003
    Assignee: Intel Corporation
    Inventors: Kalyan Muthukumar, David A Helder
  • Patent number: 6571385
    Abstract: The invention is directed to the transformation of software loops having early exit conditions, thereby allowing the loops to be more effectively converted to a single basic block for software pipelining. The invention assigns a predicate register for each early exit condition of the software loop. The predicate registers are set when the corresponding early exit condition is satisfied. In this manner, when the loop terminates the predicate registers can be examined to indicate which early exit conditions were satisfied. The invention produces loops having a lower recurrence II and resource II than conventional techniques.
    Type: Grant
    Filed: March 22, 1999
    Date of Patent: May 27, 2003
    Assignee: Intel Corporation
    Inventors: Kalyan Muthukumar, Dong-Yuan Chen, Youfeng Wu, Daniel M. Lavery
  • Publication number: 20020129228
    Abstract: The present invention provides a mechanism that facilitates speculative execution of instructions within software-pipelined loops. In accordance with one embodiment of the invention, a software-pipelined loop is initialized with a speculative instruction deactivated. At least one initiation interval of the software-pipelined loop is executed, and the speculative instruction is activated. Subsequent initiation intervals of the software-pipelined loop are then executed.
    Type: Application
    Filed: December 29, 2000
    Publication date: September 12, 2002
    Inventors: David A. Helder, Kalyan Muthukumar
  • Patent number: 6321330
    Abstract: The present invention provides a mechanism for prefetching array data efficiently from within a loop. A prefetch instruction is parameterized by a register from a set of rotating registers. On each loop iteration, a prefetch is implemented according to the parameterized prefetch instruction, and the address targeted by the prefetch instruction is adjusted. The registers are rotated for each loop iteration, and the prefetch instruction parameterized by the rotating register is adjusted accordingly. The number of iterations between prefetches for a given array is determined by the number of elements in the set of rotating register.
    Type: Grant
    Filed: May 28, 1999
    Date of Patent: November 20, 2001
    Assignee: Intel Corporation
    Inventors: Gautam B. Doshi, Kalyan Muthukumar
  • Patent number: 6175957
    Abstract: Code restructuring or reordering based on profiling information and memory hierarchy is provided by constructing a Program Execution Graph (PEG) corresponding to a level of the memory hierarchy, partitioning this PEG to reduce estimated memory overhead costs below an upper bound, and constructing a PEG for a next level of the memory hierarchy from the partitioned PEG. The PEG is constructed from control flow and frequency information from a profile of the program to be restructured. The PEG is a weighted undirected graph comprising nodes representing basic blocks and edges representing transfer of control between pairs of basic blocks. The weight of a node is the size of the basic block it represents and the weight of an edge is the frequency of transition between the pair of basic blocks it connects. The nodes of the PEG are partitioned or clustered into clusters such that the sum of the weights of the nodes in any cluster is no greater than an upper bound.
    Type: Grant
    Filed: December 9, 1997
    Date of Patent: January 16, 2001
    Assignee: International Business Machines Corporation
    Inventors: Dz Ching Ju, Kalyan Muthukumar, Shankar Ramaswamy, Barbara Bluestein Simons