Patents by Inventor Jeremy Sugerman

Jeremy Sugerman 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).

  • Patent number: 10152328
    Abstract: One embodiment of the present invention sets forth a technique for efficiently performing voting operations within a multi-threaded parallel-processing system. A group of related parallel program threads executes within a processor core together in parallel. A new instruction, called a “vote” instruction, is introduced that enables a parallel program thread to post an individual vote within the context of the group of related threads and to receive the result of the vote. In this fashion, the vote instruction advantageously reduces overhead associated with inter-thread communication, thereby improving overall system performance.
    Type: Grant
    Filed: May 31, 2012
    Date of Patent: December 11, 2018
    Assignee: NVIDIA CORPORATION
    Inventors: John R. Nickolls, Lars Nyland, Peter C. Mills, Jeremy Sugerman, Timothy Foley, Brian Fahs, Michael Garland, David P. Luebke
  • Patent number: 10025571
    Abstract: In one aspect, a method includes receiving a code block including one or more variables, performing forward data flow analysis for the code block including generating a control flow graph of the code block and for each operation in the control flow graph determining if the operation provides an update regarding the type of one or more of the operations or variables of the code block, the update being based on one or more rules of type inference, updating a type set of each of the operations or variables where the operation provides an update regarding the type, determining if the operation provides an update regarding the location of the variables, the update being based on one or more rules of location inference and updating a location set of each of the variables where the operation provides an update regarding the location set.
    Type: Grant
    Filed: July 17, 2014
    Date of Patent: July 17, 2018
    Assignee: Google LLC
    Inventors: Solomon Boulos, Jeremy Sugerman
  • Publication number: 20180129488
    Abstract: In one aspect, a method for optimizing executing of dynamic language code is provided, the method includes identifying a first dynamic language function call during runtime, the function call including argument values for one or more arguments of the function, calculating a type signature for the one or more argument values of the function, determining if a function associated with the type signature is stored in a cache, looking up the function in the cache when the function associated with the type signature is stored in the cache and dynamically calling the function associated with the type signature when the specialized function for the type signature is not stored in the cache.
    Type: Application
    Filed: January 5, 2018
    Publication date: May 10, 2018
    Inventors: Solomon BOULOS, Jeremy SUGERMAN
  • Patent number: 9389888
    Abstract: A remote proxy in a virtualization layer domain establishes a plurality of logical channels via a network connection. The virtualization layer domain is part of a host system in which a set of virtual machines of a virtual machine domain run on a virtualization layer of the virtualization layer domain. The remote proxy receives first information from a first logical channel in plurality of logical channels and second information from a second logical channel in plurality of logical channels through the network connection. Then, the remote proxy determines that the virtual machine domain should process the first information and forwards the first information from the virtualization layer domain to a virtual machine in the set of virtual machines in the virtual machine domain. Also, the remote proxy determines that the virtualization layer domain should process the second information and forwards the second information to the virtualization layer for processing.
    Type: Grant
    Filed: May 15, 2014
    Date of Patent: July 12, 2016
    Assignee: VMware, Inc.
    Inventors: Matthew David Ginzton, Jeremy Sugerman, Ramesh Dharan
  • Publication number: 20160179489
    Abstract: In one aspect, a method for optimizing execution of dynamic language code is provided, the method includes identifying a first dynamic language function call during runtime, the function call including argument values for one or more arguments of the function, calculating a type signature for the one or more argument values of the function, determining if a function associated with the type signature is stored in a cache, looking up the function in the cache when the function associated with the type signature is stored in the cache and dynamically calling the function associated with the type signature when the specialized function for the type signature is not stored in the cache.
    Type: Application
    Filed: December 16, 2015
    Publication date: June 23, 2016
    Inventors: Solomon BOULOS, Jeremy Sugerman
  • Patent number: 9244665
    Abstract: In one aspect, a method for optimizing execution of dynamic language code is provided, the method includes identifying a first dynamic language function call during runtime, the function call including argument values for one or more arguments of the function, calculating a type signature for the one or more argument values of the function, determining if a function associated with the type signature is stored in a cache, looking up the function in the cache when the function associated with the type signature is stored in the cache and dynamically calling the function associated with the type signature when the specialized function for the type signature is not stored in the cache.
    Type: Grant
    Filed: July 17, 2014
    Date of Patent: January 26, 2016
    Assignee: Google Inc.
    Inventors: Solomon Boulos, Jeremy Sugerman
  • Publication number: 20160019035
    Abstract: in one aspect, a method for optimizing execution of dynamic language code is provided, the method includes identifying a first dynamic language function call during runtime, the function call including argument values for one or more arguments of the function, calculating a type signature for the one or more argument values of the function, determining if a function associated with the type signature is stored in a cache, looking up the function in the cache when the function associated with the type signature is stored in the cache and dynamically calling the function associated with the type signature when the specialized function for the type signature is not stored in the cache.
    Type: Application
    Filed: July 17, 2014
    Publication date: January 21, 2016
    Inventors: Solomon BOULOS, Jeremy SUGERMAN
  • Patent number: 9104449
    Abstract: Program code in a dynamic language is executed through a dynamic execution module that includes an execution context and an execution codebase. The instructions of the program code are translated into machine code that is stored in the execution codebase, and the execution context tracks the runtime state and persistent state of the program through executions and across executions. Using the execution codebase and the execution context the dynamic execution module minimizes duplicative machine code generation, while preserving the dynamic aspects of the program.
    Type: Grant
    Filed: June 18, 2012
    Date of Patent: August 11, 2015
    Assignee: Google Inc.
    Inventors: Solomon Boulos, Jeremy Sugerman
  • Publication number: 20140250437
    Abstract: A remote proxy in a virtualization layer domain establishes a plurality of logical channels via a network connection. The virtualization layer domain is part of a host system in which a set of virtual machines of a virtual machine domain run on a virtualization layer of the virtualization layer domain. The remote proxy receives first information from a first logical channel in plurality of logical channels and second information from a second logical channel in plurality of logical channels through the network connection. Then, the remote proxy determines that the virtual machine domain should process the first information and forwards the first information from the virtualization layer domain to a virtual machine in the set of virtual machines in the virtual machine domain. Also, the remote proxy determines that the virtualization layer domain should process the second information and forwards the second information to the virtualization layer for processing.
    Type: Application
    Filed: May 15, 2014
    Publication date: September 4, 2014
    Applicant: VMware, Inc.
    Inventors: Matthew David Ginzton, Jeremy Sugerman, Ramesh Dharan
  • Patent number: 8732700
    Abstract: A remote proxy provides remote control to a virtualization system. The virtualization system includes a computer having virtualization software executing on the computer, and one or more virtual machines executing on the computer by way of the virtualization software, each of the virtual machines having a guest operating system. The remote proxy receives over a network connection a plurality of logical channels of a multi-channel remote control protocol at a first domain of a plurality of domains of the virtualization system. Each of the logical channels convey information corresponding to one of the domains. For each logical channel, the remote proxy identifies the corresponding domain. Further, for each of the logical channels corresponding to a domain other than the first domain, the remote proxy forwards the logical channel to the corresponding domain.
    Type: Grant
    Filed: December 18, 2008
    Date of Patent: May 20, 2014
    Assignee: VMware, Inc.
    Inventors: Matthew David Ginzton, Jeremy Sugerman, Ramesh Dharan
  • Publication number: 20130339936
    Abstract: Program code in a dynamic language is executed through a dynamic execution module that includes an execution context and an execution codebase. The instructions of the program code are translated into machine code that is stored in the execution codebase, and the execution context tracks the runtime state and persistent state of the program through executions and across executions. Using the execution codebase and the execution context the dynamic execution module minimizes duplicative machine code generation, while preserving the dynamic aspects of the program.
    Type: Application
    Filed: June 18, 2012
    Publication date: December 19, 2013
    Applicant: TALARIA TECHNOLOGIES, INC.
    Inventors: Solomon Boulos, Jeremy Sugerman
  • Patent number: 8281318
    Abstract: A method of data communication between a first virtual machine and a second virtual machine is disclosed. The second virtual machine is executing in a record/replay mode. Data from the first virtual machine is copied to a first queue. The first queue receives the data from the first virtual machine. The first queue has a header section and a data section, wherein the header section being write protected and stores a tail pointer of the data in the first queue. The tail pointer is updated in the header section. This update of the tail pointer causes a page fault, which is handled-through a page fault handler. The handling includes copying the data from the first queue to a second queue. The second queue being configured to receive a copy of the data and to allow the second virtual machine to access the copy of the data.
    Type: Grant
    Filed: July 2, 2008
    Date of Patent: October 2, 2012
    Assignee: VMware, Inc.
    Inventors: Anupam Chanda, Kevin Scott Christopher, Jeremy Sugerman, Petr Vandrovec, Gustav Seth Wibling
  • Publication number: 20120239909
    Abstract: One embodiment of the present invention sets forth a technique for efficiently performing voting operations within a multi-threaded parallel-processing system. A group of related parallel program threads executes within a processor core together in parallel. A new instruction, called a “vote” instruction, is introduced that enables a parallel program thread to post an individual vote within the context of the group of related threads and to receive the result of the vote. In this fashion, the vote instruction advantageously reduces overhead associated with inter-thread communication, thereby improving overall system performance.
    Type: Application
    Filed: May 31, 2012
    Publication date: September 20, 2012
    Inventors: John R. Nickolls, Lars Nyland, Peter C. Mills, Jeremy Sugerman, Timothy Foley, Brian Fahs, Michael Garland, David P. Luebke
  • Patent number: 8214625
    Abstract: One embodiment of the present invention sets forth a technique for efficiently performing voting operations within a multi-threaded parallel-processing system. A group of related parallel program threads executes within a processor core together in parallel. A new instruction, called a “vote” instruction, is introduced that enables a parallel program thread to post an individual vote within the context of the group of related threads and to receive the result of the vote. In this fashion, the vote instruction advantageously reduces overhead associated with inter-thread communication, thereby improving overall system performance.
    Type: Grant
    Filed: November 26, 2008
    Date of Patent: July 3, 2012
    Assignee: NVIDIA Corporation
    Inventors: John R. Nickolls, Lars Nyland, Peter C. Mills, Jeremy Sugerman, Timothy Foley, Brian Fahs, Michael Garland, David P. Luebke
  • Patent number: 8200947
    Abstract: One embodiment of the present invention sets forth a technique for efficiently performing voting operations within a multi-threaded parallel-processing system. A group of related parallel program threads executes within a processor core together in parallel. A new instruction, called a “vote” instruction, is introduced that enables a parallel program thread to post an individual vote within the context of the group of related threads and to receive the result of the vote. In this fashion, the vote instruction advantageously reduces overhead associated with inter-thread communication, thereby improving overall system performance.
    Type: Grant
    Filed: March 24, 2008
    Date of Patent: June 12, 2012
    Assignee: NVIDIA Corporation
    Inventors: John R. Nickolls, Lars Nyland, Peter C. Mills, Jeremy Sugerman, Timothy Foley, Brian Fahs, Michael Garland, David P. Luebke
  • Publication number: 20100162235
    Abstract: A remote proxy provides remote control to a virtualization system. The virtualization system includes a computer having virtualization software executing on the computer, and one or more virtual machines executing on the computer by way of the virtualization software, each of the virtual machines having a guest operating system. The remote proxy receives over a network connection a plurality of logical channels of a multi-channel remote control protocol at a first domain of a plurality of domains of the virtualization system. Each of the logical channels convey information corresponding to one of the domains. For each logical channel, the remote proxy identifies the corresponding domain. Further, for each of the logical channels corresponding to a domain other than the first domain, the remote proxy forwards the logical channel to the corresponding domain.
    Type: Application
    Filed: December 18, 2008
    Publication date: June 24, 2010
    Applicant: VMware, Inc.
    Inventors: Matthew David GINZTON, Jeremy SUGERMAN, Ramesh DHARAN
  • Publication number: 20090249357
    Abstract: A method of data communication between a first virtual machine and a second virtual machine is disclosed. The second virtual machine is executing in a record/replay mode. The method includes copying data from the first virtual machine to a first queue. The first queue is configured to receive the data from the first virtual machine. The first queue has a first queue header section and a first queue data section. The first queue header being write protected and configured to store a tail pointer of the data in the first queue. The tail pointer is updated in the first header section. This update of the tail pointer causes a page fault. The method further includes handling page fault through a page fault handler. The handling includes copying the data from the first queue to a second queue. The second queue being configured to receive a copy of the data and to allow the second virtual machine to access the copy of the data.
    Type: Application
    Filed: July 2, 2008
    Publication date: October 1, 2009
    Applicant: VMWARE, INC.
    Inventors: Anupam CHANDA, Kevin Scott CHRISTOPHER, Jeremy SUGERMAN, Petr VANDROVEC, Gustav Seth WIBLING