Patents by Inventor Edmund B. Nightingale
Edmund B. Nightingale 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: 20160183191Abstract: The techniques and systems described herein implement direct memory access in association with a wireless data transfer. In one example, data units are received at a device and it is determined that the data units have been transferred using low-power consumption data transfer and that the data units are to be directly stored in a predetermined memory (e.g., a dedicated memory) of the device. In another example, a first device provides an instruction to a partner device to store data in specific storage location(s) so that the data can be retrieved from the specific storage location(s) without interrupting a main processor of the partner device. The data may also be directly stored in the predetermined memory of the first device without interrupting a main processor of the first device.Type: ApplicationFiled: December 23, 2014Publication date: June 23, 2016Inventors: Anirudh Badam, Edmund B. Nightingale, Ranveer Chandra, Jian Huang
-
Patent number: 9298438Abstract: Application code is analyzed to determine if a hardware library could accelerate its execution. In particular, application code can be analyzed to identify calls to application programming interfaces (APIs) or other functions that have a hardware library implementation. The code can be analyzed to identify the frequency of such calls. Information from the hardware library can indicate characteristics of the library, such as its size, power consumption and FPGA resource usage. Information about the execution pattern of the application code also can be useful. This information, along with information about other concurrent processes using the FPGA resources, can be used to select a hardware library to implement functions called in the application code.Type: GrantFiled: June 20, 2012Date of Patent: March 29, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Edmund B. Nightingale, Brian A. LaMacchia
-
Patent number: 9230091Abstract: Field programmable gate arrays can be used as a shared programmable co-processor resource in a general purpose computing system. Components of an FPGA are isolated to protect the FPGA and data transferred between the FPGA and other components of the computer system. For example, data written by the FPGA to memory is encrypted, and is decrypted within the FPGA when read back from memory. Data transferred between the FPGA and other components such as the CPU or GPU, whether directly or through memory, can similarly be encrypted using cryptographic keys known to the communicating components. Transferred data also can be digitally signed by the FPGA or other component to provide authentication. Code for programming the FPGA can be encrypted and signed by the author, loaded into the FPGA in an encrypted state, and then decrypted and authenticated by the FPGA itself, before programming the FPGA with the code.Type: GrantFiled: June 20, 2012Date of Patent: January 5, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Brian A. LaMacchia, Edmund B. Nightingale, Paul Barham
-
Patent number: 9170892Abstract: A metadata server configured to maintain storage assignment mappings in non-persistent storage is described herein. The tract storage assignment mappings associate servers with storage assignments, the storage assignments representing the data stored on the servers. Responsive to a failure, the metadata server receives the storage assignments from the servers and rebuilds the storage assignment mappings from the storage assignments. The metadata server is also configured to enable clients to operate during a recovery process for a failed server by providing the storage assignment mappings to the clients during the recovery process. Also during the recovery process, the replacement server for the failed server conditionally overwrites stored data with other data received from other servers as part of the recovery process.Type: GrantFiled: May 26, 2011Date of Patent: October 27, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Edmund B. Nightingale, Jeremy E. Elson
-
Publication number: 20150243372Abstract: A system and method for mitigating memory errors in a computer system. Faulty memory is identified and tested by a memory manager of an operating system. The memory manager may perform diagnostic tests while the operating system is executing on the computer system. Regions of memory that are being used by software components of the computer system may also be tested. The memory manager maintains a stored information about faulty memory regions. Regions are added to the stored information when they are determined to be faulty by a diagnostic test tool. Memory regions are allocated to software components by the memory manager after checking the stored information about faulty memory regions. This ensures a faulty memory region is never allocated to a software component of the computer system.Type: ApplicationFiled: April 28, 2015Publication date: August 27, 2015Inventors: Garrett Leischner, Andrew J. Lagattuta, Matthew Jeremiah Eason, Landy Wang, John R. Douceur, Baskar Sridharan, Edmund B. Nightingale
-
Patent number: 9026889Abstract: A system and method for mitigating memory errors in a computer system. Faulty memory is identified and tested by a memory manager of an operating system. The memory manager may perform diagnostic tests while the operating system is executing on the computer system. Regions of memory that are being used by software components of the computer system may also be tested. The memory manager maintains a stored information about faulty memory regions. Regions are added to the stored information when they are determined to be faulty by a diagnostic test tool. Memory regions are allocated to software components by the memory manager after checking the stored information about faulty memory regions. This ensures a faulty memory region is never allocated to a software component of the computer system.Type: GrantFiled: January 7, 2014Date of Patent: May 5, 2015Assignee: Microsoft Technologoy Licensing, LLCInventors: Garrett Leischner, Andrew J. Lagattuta, Matthew Jeremiah Eason, Landy Wang, John R. Douceur, Baskar Sridharan, Edmund B. Nightingale
-
Patent number: 8996611Abstract: A plurality of servers configured to receive a plurality of requests associated with a plurality of byte sequences are described herein. The requests for each byte sequence are received by a single one of the servers. Each server is further configured to serially process the requests it receives while the other servers also perform serial processing of requests in parallel with the server. Also, the requests for each byte sequence are transmitted to the single one of the servers by a plurality of clients, each client independently identifying the single one of the servers for the byte sequence based on system metadata.Type: GrantFiled: January 31, 2011Date of Patent: March 31, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Edmund B. Nightingale, Jeremy E. Elson
-
Patent number: 8984239Abstract: Implementations of a file system that is supported by a non-volatile memory that is directly connected to a memory bus, and placed side by side with a dynamic random access memory (DRAM), are described.Type: GrantFiled: September 6, 2013Date of Patent: March 17, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Jeremy P. Condit, Edmund B. Nightingale, Benjamin C. Lee, Engin Ipek, Christopher Frost, Douglas C. Burger
-
Publication number: 20150052392Abstract: While connected to cloud storage, a computing device writes data and metadata to the cloud storage, indicates success of the write to an application of the computing device, and, after indicating success to the application, writes the data and metadata to local storage of the computing device. The data and metadata may be written to different areas of the local storage. The computing device may also determine that it has recovered from a crash or has connected to the cloud storage after operating disconnected and reconcile the local storage with the cloud storage. The reconciliation may be based at least on a comparison of the metadata stored in the area of the local storage with metadata received from the cloud storage. The cloud storage may store each item of data contiguously with its metadata as an expanded block.Type: ApplicationFiled: August 19, 2013Publication date: February 19, 2015Applicant: Microsoft CorporationInventors: James W. Mickens, Jeremy E. Elson, Edmund B. Nightingale, Bin Fan, Asim Kadav, Osama Khan
-
Patent number: 8898480Abstract: Field programmable gate arrays can be used as a shared programmable co-processor resource in a general purpose computing system. Components of an FPGA are isolated to protect the FPGA and data transferred between the FPGA and other components of the computer system. Transferred data can be digitally signed by the FPGA or other component to provide authentication. Code for programming the FPGA can be encrypted and signed by the author, loaded into the FPGA in an encrypted state, and then decrypted and authenticated by the FPGA itself, before programming the FPGA with the code. This code can be used to change the cryptographic operations performed in the FPGA, including keys, or decryption and encryption algorithms, or both.Type: GrantFiled: June 20, 2012Date of Patent: November 25, 2014Assignee: Microsoft CorporationInventors: Brian A. LaMacchia, Edmund B. Nightingale
-
Publication number: 20140298356Abstract: An illustrative operating system distributes two or more instances of the operating system over heterogeneous platforms of a computing device. The instances of the operating system work together to provide single-kernel semantics to present a common operating system abstraction to application modules. The heterogeneous platforms may include co-processors that use different instruction set architectures and/or functionality, different NUMA domains, etc. Further, the operating system allows application modules to transparently access components using a local communication path and a remote communication path. Further, the operating system includes a policy manager module that determines the placement of components based on affinity values associated with interaction relations between components. The affinity values express the sensitivity of the interaction relations to a relative location of the components.Type: ApplicationFiled: June 16, 2014Publication date: October 2, 2014Applicant: MICROSOFT CORPORATIONInventors: Edmund B. Nightingale, Orion T. Hodson, Galen C. Hunt
-
Patent number: 8776088Abstract: An illustrative operating system distributes two or more instances of the operating system over heterogeneous platforms of a computing device. The instances of the operating system work together to provide single-kernel semantics to present a common operating system abstraction to application modules. The heterogeneous platforms may include co-processors that use different instruction set architectures and/or functionality, different NUMA domains, etc. Further, the operating system allows application modules to transparently access components using a local communication path and a remote communication path. Further, the operating system includes a policy manager module that determines the placement of components based on affinity values associated with interaction relations between components. The affinity values express the sensitivity of the interaction relations to a relative location of the components.Type: GrantFiled: March 30, 2009Date of Patent: July 8, 2014Assignee: Microsoft CorporationInventors: Orion T. Hodson, Galen C. Hunt, Edmund B. Nightingale
-
Publication number: 20140181577Abstract: A system and method for mitigating memory errors in a computer system. Faulty memory is identified and tested by a memory manager of an operating system. The memory manager may perform diagnostic tests while the operating system is executing on the computer system. Regions of memory that are being used by software components of the computer system may also be tested. The memory manager maintains a stored information about faulty memory regions. Regions are added to the stored information when they are determined to be faulty by a diagnostic test tool. Memory regions are allocated to software components by the memory manager after checking the stored information about faulty memory regions. This ensures a faulty memory region is never allocated to a software component of the computer system.Type: ApplicationFiled: January 7, 2014Publication date: June 26, 2014Applicant: Microsoft CorporationInventors: Garrett Leischner, Andrew J. Lagattuta, Matthew Jeremiah Eason, Landy Wang, John R. Douceur, Baskar Sridharan, Edmund B. Nightingale
-
Publication number: 20140025912Abstract: Dynamically replicated memory is usable to allocate new memory space from failed memory pages by pairing compatible failed memory pages to reuse otherwise unusable failed memory pages. Dynamically replicating memory involves detecting and recording memory faults, reclaiming failed memory pages for later use, recovering from detected memory faults, and scheduling access to replicated memory pages.Type: ApplicationFiled: September 23, 2013Publication date: January 23, 2014Applicant: Microsoft CorporationInventors: Engin Ipek, Thomas Moscibroda, Douglas C. Burger, Edmund B. Nightingale, Jeremy P. Condit
-
Patent number: 8627176Abstract: A system and method for mitigating memory errors in a computer system. Faulty memory is identified and tested by a memory manager of an operating system. The memory manager may perform diagnostic tests while the operating system is executing on the computer system. Regions of memory that are being used by software components of the computer system may also be tested. The memory manager maintains a stored information about faulty memory regions. Regions are added to the stored information when they are determined to be faulty by a diagnostic test tool. Memory regions are allocated to software components by the memory manager after checking the stored information about faulty memory regions. This ensures a faulty memory region is never allocated to a software component of the computer system.Type: GrantFiled: November 30, 2010Date of Patent: January 7, 2014Assignee: Microsoft CorporationInventors: Garrett Leischner, Andrew J. Lagattuta, Matthew Jeremiah Eason, Landy Wang, John R. Douceur, Baskar Sridharan, Edmund B. Nightingale
-
Publication number: 20140006701Abstract: Implementations of a file system that is supported by a non-volatile memory that is directly connected to a memory bus, and placed side by side with a dynamic random access memory (DRAM), are described.Type: ApplicationFiled: September 6, 2013Publication date: January 2, 2014Applicant: Microsoft CorporationInventors: Jeremy P. Condit, Edmund B. Nightingale, Benjamin C. Lee, Engin Ipek, Christopher Frost, Douglas C. Burger
-
Publication number: 20130346979Abstract: Application code is analyzed to determine if a hardware library could accelerate its execution. In particular, application code can be analyzed to identify calls to application programming interfaces (APIs) or other functions that have a hardware library implementation. The code can be analyzed to identify the frequency of such calls. Information from the hardware library can indicate characteristics of the library, such as its size, power consumption and FPGA resource usage. Information about the execution pattern of the application code also can be useful. This information, along with information about other concurrent processes using the FPGA resources, can be used to select a hardware library to implement functions called in the application code.Type: ApplicationFiled: June 20, 2012Publication date: December 26, 2013Applicant: MICROSOFT CORPORATIONInventors: Edmund B. Nightingale, Brian A. LaMacchia
-
Publication number: 20130346758Abstract: Field programmable gate arrays can be used as a shared programmable co-processor resource in a general purpose computing system. Components of an FPGA are isolated to protect the FPGA and data transferred between the FPGA and other components of the computer system. For example, data written by the FPGA to memory is encrypted, and is decrypted within the FPGA when read back from memory. Data transferred between the FPGA and other components such as the CPU or GPU, whether directly or through memory, can similarly be encrypted using cryptographic keys known to the communicating components. Transferred data also can be digitally signed by the FPGA or other component to provide authentication. Code for programming the FPGA can be encrypted and signed by the author, loaded into the FPGA in an encrypted state, and then decrypted and authenticated by the FPGA itself, before programming the FPGA with the code.Type: ApplicationFiled: June 20, 2012Publication date: December 26, 2013Applicant: Microsoft CorporationInventors: Brian A. LaMacchia, Edmund B. Nightingale, Paul Barham
-
Publication number: 20130346759Abstract: Field programmable gate arrays can be used as a shared programmable co-processor resource in a general purpose computing system. Components of an FPGA are isolated to protect the FPGA and data transferred between the FPGA and other components of the computer system. Transferred data can be digitally signed by the FPGA or other component to provide authentication. Code for programming the FPGA can be encrypted and signed by the author, loaded into the FPGA in an encrypted state, and then decrypted and authenticated by the FPGA itself, before programming the FPGA with the code. This code can be used to change the cryptographic operations performed in the FPGA, including keys, or decryption and encryption algorithms, or both.Type: ApplicationFiled: June 20, 2012Publication date: December 26, 2013Applicant: Microsoft CorporationInventors: Brian LaMacchia, Edmund B. Nightingale
-
Publication number: 20130346985Abstract: Field programmable gate arrays can be used as a shared programmable co-processor resource in a general purpose computing system. An FPGA can be programmed to perform functions, which in turn can be associated with one or more processes. With multiple processes, the FPGA can be shared, and a process is assigned to at least one portion of the FPGA during a time slot in which to access the FPGA. Programs written in a hardware description language for programming the FPGA are made available as a hardware library. The operating system manages allocating the FPGA resources to processes, programming the FPGA in accordance with the functions to be performed by the processes using the FPGA, and scheduling use of the FPGA by these processes.Type: ApplicationFiled: June 20, 2012Publication date: December 26, 2013Applicant: MICROSOFT CORPORATIONInventor: Edmund B. Nightingale