Patents by Inventor Douglas C. Burger

Douglas C. Burger 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: 20160378499
    Abstract: Apparatus and methods are disclosed for implementing bad jump detection in block-based processor architectures. In one example of the disclosed technology, a block-based processor includes one or more block-based processing cores configured to fetch and execute atomic blocks of instructions and a control unit configured to, based at least in part on receiving a branch signal indicating a target location is received from one of the instruction blocks, verify that the target location is a valid branch target.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Applicant: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Douglas C. Burger, Aaron L. Smith, Jan S. Gray
  • Publication number: 20160378484
    Abstract: A processor core in an instruction block-based microarchitecture utilizes instruction blocks having headers that include an index to a size table that may be expressed using one of memory, register, logic, or code stream. A control unit in the processor core determines how many instructions to fetch for a current instruction block for mapping into an instruction window based on the block size that is indicated from the size table. As instruction block sizes are often unevenly distributed for a given program, utilization of the size table enables more flexibility in matching instruction blocks to the sizes of available slots in the instruction window as compared to arrangements in which instruction blocks have a fixed sized or are sized with less granularity. Such flexibility may enable denser instruction packing which increases overall processing efficiency by reducing the number of nops (no operations, such as null functions) in a given instruction block.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Inventors: Douglas C. Burger, Aaron Smith, Jan Gray
  • Publication number: 20160380819
    Abstract: Aspects extend to methods, systems, and computer program products for (re)configuring acceleration components over a network. (Re)configuration can be implemented for any of a variety of reasons, including to address an error in functionality at the acceleration component or to update functionality at the acceleration component. During (re)configuration, connectivity can be maintained for any other functionality at the acceleration component untouched by the (re)configuration. Network (re)configuration of acceleration components facilitates management of acceleration components and accelerated services from a centralized service. Network (re)configuration of acceleration components also relieves host components from having to store (potentially diverse and numerous) image files.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Inventor: Douglas C. Burger
  • Publication number: 20160379137
    Abstract: A method is provided for processing on an acceleration component a machine learning classification model. The machine learning classification model includes a plurality of decision trees, the decision trees including a first amount of decision tree data. The acceleration component includes an acceleration component die and a memory stack disposed in an integrated circuit package. The memory die includes an acceleration component memory having a second amount of memory less than the first amount of decision tree data. The memory stack includes a memory bandwidth greater than about 50 GB/sec and a power efficiency of greater than about 20 MB/sec/mW.
    Type: Application
    Filed: June 29, 2015
    Publication date: December 29, 2016
    Inventors: Douglas C. Burger, Derek Chiou, Eric Chung, Andrew R. Putnam
  • Publication number: 20160378479
    Abstract: A processor core in an instruction block-based microarchitecture is configured so that an instruction window and operand buffers are decoupled for independent operation in which instructions in the block are not tied to resources such as control bits and operands that are maintained in the operand buffers. Instead, pointers are established among instructions in the block and the resources so that control state can be established for a refreshed instruction block (i.e., an instruction block that is reused without re-fetching it from an instruction cache) by following the pointers. Such decoupling of the instruction window from the operand space can provide greater processor efficiency, particularly in multiple core arrays where refreshing is utilized (for example when executing program code that uses tight loops), because the operands and control bits are pre-validated.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Inventors: Douglas C. Burger, Aaron Smith, Jan Gray
  • Publication number: 20160378493
    Abstract: A processor core in an instruction block-based microarchitecture includes a control unit that allocates instructions into an instruction window in bulk by fetching blocks of instructions and associated resources including control bits and operands at once. Such bulk allocation supports increased efficiency in processor core operations by enabling consistent management and policy implementation across all the instructions in the block during execution. For example, when an instruction block branches back on itself, it may be reused in a refresh process rather than being re-fetched from the instruction cache. As all of the resources for that instruction block are in one place, the instructions can remain in place and only valid bits need to be cleared. Bulk allocation also facilitates operand sharing by instructions in a block and explicit messaging among instructions.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Inventors: Douglas C. Burger, Aaron Smith, Jan Gray
  • Publication number: 20160378661
    Abstract: Apparatus and methods are disclosed for throttling processor operation in block-based processor architectures. In one example of the disclosed technology, a block-based instruction set architecture processor includes a plurality of processing cores configured to fetch and execute a sequence of instruction blocks. Each of the processing cores includes function resources for performing operations specified by the instruction blocks. The processor further includes a core scheduler configured to allocate functional resources for performing the operations. The functional resources are allocated for executing the instruction blocks based, at least in part, on a performance metric. The performance metric can be generated dynamically or statically based on branch prediction accuracy, energy usage tolerance, and other suitable metrics.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Applicant: Microsoft Technology Licensing, LLC
    Inventors: Jan S. Gray, Douglas C. Burger, Aaron L. Smith
  • Publication number: 20160378460
    Abstract: Aspects extend to methods, systems, and computer program products for partially reconfiguring acceleration components. Partial reconfiguration can be implemented for any of a variety of reasons, including to address an error in functionality at the acceleration component or to update functionality at the acceleration component. During partial reconfiguration, connectivity can be maintained for any other functionality at the acceleration component untouched by the partial reconfiguration. Partial reconfiguration is more efficient to deploy than full reconfiguration of an acceleration component.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Inventors: Derek T. Chiou, Sitaram V. Lanka, Adrian M. Caulfield, Andrew R. Putnam, Douglas C. Burger
  • Publication number: 20160378491
    Abstract: Methods and apparatus are disclosed for eliminating explicit control flow instructions (for example, branch instructions) from atomic instruction blocks according to a block-based instructions set architecture (ISA). In one example of the disclosed technology, an explicit data graph execution (EDGE) ISA processor is configured to fetch instruction blocks from a memory and execute at least one of the instruction blocks, each of the instruction blocks being encoded to have one or more exit points determining a target location of a next instruction block. Processor control circuitry evaluates one or more predicates for instructions encoded within a first one of the instruction blocks, and based on the evaluating, transfers control of the processor to a second instruction block at a target location that is not specified by a control flow instruction in the first instruction block.
    Type: Application
    Filed: June 26, 2015
    Publication date: December 29, 2016
    Applicant: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Douglas C. Burger, Aaron L. Smith, Jan S. Gray
  • Patent number: 9507066
    Abstract: An optical display system configured to transmit light along a light path to a user's eye, the display system comprising a circular polarizing reflector configured to reflect light with a first polarization from an image source, a quarter wave plate downstream of the circular polarizing reflector in the light path and configured to rotate the polarization of the light to a second polarization, and a curved linear polarizing reflector downstream of the quarter wave plate and configured to reflect the light back through the quarter wave plate along the light path in the direction of the circular polarizing reflector. The quarter wave plate further configured to rotate the polarization of the light received from the curved linear polarizing reflector to a third polarization and the circular polarizing reflector further configured to receive said light from the quarter wave plate and transmit the light toward the user's eye.
    Type: Grant
    Filed: June 30, 2014
    Date of Patent: November 29, 2016
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Joel S. Kollin, Jaron Lanier, Douglas C. Burger
  • Patent number: 9480398
    Abstract: Methods and systems for determining a physiological parameter of a subject through interrogation of an eye of the subject with an optical signal are described. Interrogation is performed unobtrusively. The physiological parameter is determined from a signal sensed from the eye of a subject when the eye of the subject is properly aligned with regard to an interrogation signal source and/or response signal sensor.
    Type: Grant
    Filed: September 26, 2014
    Date of Patent: November 1, 2016
    Assignee: Elwha LLC
    Inventors: Allen L. Brown, Jr., Douglas C. Burger, Eric Horvitz, Roderick A. Hyde, Edward K. Y. Jung, Jordin T. Kare, Chris Demetrios Karkanias, Eric C. Leuthardt, John L. Manferdelli, Craig J. Mundie, Nathan P. Myhrvold, Barney Pell, Clarence T. Tegreene, Willard H. Wattenburg, Charles Whitmer, Lowell L. Wood, Jr., Richard N. Zare
  • Patent number: 9482737
    Abstract: Systems and methods are described relating to detecting an indication of a person within a specified proximity to at least one mobile device; and presenting an indication of location of the at least one mobile device at least partially based on the indication of the person within the specified proximity. Additionally, systems and methods are described relating to means for detecting an indication of a person within a specified proximity to at least one mobile device; and means for presenting an indication of location of the at least one mobile device at least partially based on the indication of the person within the specified proximity.
    Type: Grant
    Filed: December 30, 2011
    Date of Patent: November 1, 2016
    Assignee: Elwha LLC
    Inventors: Paramvir Bahl, Douglas C. Burger, Ranveer Chandra, Matthew G. Dyor, William Gates, Roderick A. Hyde, Muriel Y. Ishikawa, Pablos Holman, Jordin T. Kare, Royce A. Levien, Richard T. Lord, Robert W. Lord, Mark A. Malamud, Craig J. Mundie, Nathan P. Myhrvold, John D. Rinaldo, Jr., Desney S. Tan, Clarence T. Tegreene, Charles Whitmer, Victoria Y. H. Wood, Tim Paek, Lowell L. Wood, Jr., Lin Zhong
  • Publication number: 20160306674
    Abstract: A service mapping component (SMC) is described herein for processing requests by instances of tenant functionality that execute on software-driven host components (or some other components) in a data processing system. The SMC is configured to apply at least one rule to determine whether a service requested by an instance of tenant functionality is to be satisfied by at least one of: a local host component, a local hardware acceleration component which is locally coupled to the local host component, and/or at least one remote hardware acceleration component that is indirectly accessible to the local host component via the local hardware acceleration component. In performing its analysis, the SMC can take into account various factors, such as whether or not the service corresponds to a line-rate service, latency-related considerations, security-related considerations, and so on.
    Type: Application
    Filed: May 20, 2015
    Publication date: October 20, 2016
    Inventors: Derek T. Chiou, Sitaram V. Lanka, Douglas C. Burger
  • Publication number: 20160306668
    Abstract: A data processing system is described herein that includes two or more software-driven host components that collectively provide a software plane. The data processing system further includes two or more hardware acceleration components that collectively provide a hardware acceleration plane. The hardware acceleration plane implements one or more services, including at least one multi-component service. The multi-component service has plural parts, and is implemented on a collection of two or more hardware acceleration components, where each hardware acceleration component in the collection implements a corresponding part of the multi-component service. Each hardware acceleration component in the collection is configured to interact with other hardware acceleration components in the collection without involvement from any host component. A function parsing component is also described herein that determines a manner of parsing a function into the plural parts of the multi-component service.
    Type: Application
    Filed: May 20, 2015
    Publication date: October 20, 2016
    Inventors: Stephen F. Heil, Adrian M. Caulfield, Douglas C. Burger, Andrew R. Putnam, Eric S. Chung
  • Publication number: 20160306667
    Abstract: A data processing system is described herein that includes two or more software-driven host components. The two or more host components collectively provide a software plane. The data processing system also includes two or more hardware acceleration components (such as FPGA devices) that collectively provide a hardware acceleration plane. A common physical network allows the host components to communicate with each other, and which also allows the hardware acceleration components to communicate with each other. Further, the hardware acceleration components in the hardware acceleration plane include functionality that enables them to communicate with each other in a transparent manner without assistance from the software plane.
    Type: Application
    Filed: May 20, 2015
    Publication date: October 20, 2016
    Inventors: Douglas C. Burger, Andrew R. Putnam, Stephen F. Heil
  • Publication number: 20160306701
    Abstract: Aspects extend to methods, systems, and computer program products for locally restoring functionality at acceleration components. A role can be locally restored at an acceleration component when an error is self-detected at the acceleration component (e.g., by local monitoring logic). Locally restoring a role can include resetting internal state (application logic) of the acceleration component providing the role. Self-detection of errors and local restoration of a role is less resource intensive and more efficient than using external components (e.g., high-level services) to restore functionality at an acceleration component and/or to reset an entire graph. Monitoring logic at multiple acceleration components can locally reset roles in parallel to restore legitimate behavior of a graph.
    Type: Application
    Filed: June 26, 2015
    Publication date: October 20, 2016
    Inventors: Stephen F. Heil, Sitaram V. Lanka, Adrian M. Caulfield, Eric S. Chung, Andrew R. Putnam, Douglas C. Burger, Yi Xiao
  • Publication number: 20160306700
    Abstract: Aspects extend to methods, systems, and computer program products for reassigning service functionality between acceleration components. Reassigning service functionality can be used to recover service acceleration for a service. Service acceleration can exhibit operate improperly caused by performance degradation at an acceleration component. A role at the acceleration component having degrade performance can be assigned to another acceleration component to restore service acceleration for the service.
    Type: Application
    Filed: June 26, 2015
    Publication date: October 20, 2016
    Inventors: Stephen F. Heil, Sitaram V. Lanka, Adrian M. Caulfield, Eric S. Chung, Andrew R. Putnam, Douglas C. Burger, Yi Xiao
  • Publication number: 20160308718
    Abstract: The present invention extends to methods, systems, and computer program products for reconfiguring an acceleration component among interconnected acceleration components. Aspects of the invention facilitate reconfiguring an acceleration component among interconnected acceleration components using a higher-level software service. A manager or controller isolates an acceleration component by sending a message to one or more neighbor acceleration components instructing the one or more neighbor acceleration components to stop accepting communication from the acceleration component. The manager or controller can then shut down an application layer at the acceleration component for at least partial reconfiguration and closes input/output (I/O) portions.
    Type: Application
    Filed: June 26, 2015
    Publication date: October 20, 2016
    Inventors: Sitaram V. Lanka, Adrian M. Caulfield, Eric S. Chung, Andrew R. Putnam, Douglas C. Burger, Derek T. Chiou
  • Publication number: 20160306772
    Abstract: A hardware acceleration component is provided that includes a plurality of hardware clusters, each hardware cluster comprising a plurality of soft processor cores and a functional circuit. The plurality of soft processor cores share the functional circuit.
    Type: Application
    Filed: June 20, 2015
    Publication date: October 20, 2016
    Inventors: Douglas C. Burger, Stephen F. Heil, Sitaram V. Lanka, Andrew R. Putnam, Aaron Smith
  • Publication number: 20160308719
    Abstract: Aspects extend to methods, systems, and computer program products for changing between different roles at acceleration components. Changing roles at an acceleration component can be facilitated without loading an image file to configure or partially reconfigure the acceleration component. At configuration time, an acceleration component can be configured with a framework and a plurality of selectable roles. The framework also provides a mechanism for loading different selectable roles for execution at the acceleration component (e.g., the framework can include a superset of instructions for providing any of a plurality of different roles). The framework can receive requests for specified roles from other components and switch to a subset of instructions for the specified roles. Switching between subsets of instructions at an acceleration component is a lower overhead operation relative to reconfiguring or partially reconfiguring an acceleration component by loading an image file.
    Type: Application
    Filed: June 26, 2015
    Publication date: October 20, 2016
    Inventors: Andrew R. Putnam, Douglas C. Burger, Michael David Haselman, Stephen F. Heil, Yi Xiao, Sitaram V. Lanka