Modular redundancy
AssigneeApple Inc.
InventorsRyan J. ALLEN, Christopher Y. BROWN, Jeffrey D. KOFTINOFF, George E. WILLIAMS
Life of this patent
Estimating the term…
Abstract
This disclosure provides more effective and/or efficient techniques for implementing redundancy. For example, some techniques include a voting service that receives output from processes executing on three different hardware devices to determine which output to provide to a consumer of the output. Such techniques are optimized through where the voting service is located, what is received by the voting service, how processes are executed on the three different hardware devices, and how output is provided to the consumer, as further discussed herein. Such techniques optionally complement or replace other methods for implementing redundancy.
Claims11
A method, comprising:
- by a voting service:
- receiving, from a process executing on a first hardware device, first validation data corresponding to execution of a first instance of a first portion of a software program on the first hardware device;
- receiving, from a process executing on a second hardware device different from the first hardware device, second validation data corresponding to execution of a second instance of the first portion of the software program on the second hardware device;
- identifying valid execution data based on a comparison of the first validation data and the second validation data, wherein the valid execution data is output by the first hardware device, the second hardware device, or a third hardware device;
- and
- in response to identifying the valid execution data, causing an operation of the software program to be performed using the valid execution data.
A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for:
- receiving, from a process executing on a first hardware device, first validation data corresponding to execution of a first instance of a first portion of a software program on the first hardware device;
- receiving, from a process executing on a second hardware device different from the first hardware device, second validation data corresponding to execution of a second instance of the first portion of the software program on the second hardware device;
- identifying valid execution data based on a comparison of the first validation data and the second validation data, wherein the valid execution data is output by the first hardware device, the second hardware device, or a third hardware device;
- and
- in response to identifying the valid execution data, causing an operation of the software program to be performed using the valid execution data.
A computer system, comprising:
- one or more processors;
- and
- memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for:
- receiving, from a process executing on a first hardware device, first validation data corresponding to execution of a first instance of a first portion of a software program on the first hardware device;
- receiving, from a process executing on a second hardware device different from the first hardware device, second validation data corresponding to execution of a second instance of the first portion of the software program on the second hardware device;
- identifying valid execution data based on a comparison of the first validation data and the second validation data, wherein the valid execution data is output by the first hardware device, the second hardware device, or a third hardware device;
- and
- in response to identifying the valid execution data, causing an operation of the software program to be performed using the valid execution data.
Dependencies are inferred from the claim text.