Формула
1. Способ выполнения отказоустойчивого вычисления, причем способ содержит следующие этапы:
выполнение первого вычисления для генерирования первого результата;
выполнение второго вычисления с использованием скаляра и первого вычисления для генерирования второго результата, упомянутое второе вычисление включает в себя умножение первого вычисления на скаляр для генерирования масштабированного результата и деление упомянутого масштабированного результата на скаляр для генерирования второго результата; и
индикация того, являются ли упомянутый первый результат и упомянутый второй результат эквивалентными.
2. Способ по п. 1, дополнительно содержащий следующий этап, на котором:
выполняют безопасную операцию, если упомянутый первый результат и упомянутый второй результат не эквивалентны.
3. Способ по п. 1, в котором первое вычисление включает в себя одну или более операций, упомянутые одна или более операций включают в себя итоговую операцию, и при этом упомянутое второе вычисление включает в себя умножение упомянутого скаляра перед упомянутой итоговой операцией.
4. Способ по п. 1, в котором первый результат имеет первое двоичное представление, и упомянутое масштабированное значение имеет второе двоичное представление, и упомянутый скаляр выбирают, чтобы максимизировать разницу между упомянутым первым двоичным представлением и упомянутым вторым двоичным представлением.
5. Способ по п. 1, в котором упомянутый скаляр является целым числом, числом с плавающей точкой или числом двойной точности.
6. Способ по п. 1, в котором упомянутый скаляр является иррациональным числом.
7. Способ по п. 1, в котором разницу между упомянутым скаляром и 1.0 минимизируют, чтобы сохранить разложение масштабированного результата.
8. Способ по п. 1, дополнительно содержащий следующий этап:
добавляют смещения к первому результату, если первый результат определяют равным нулю.
9. Устройство для выполнения отказоустойчивого вычисления для обеспечения работы аппаратного обеспечения (102), причем упомянутое устройство содержит:
электронику (104), сконфигурированную для:
выполнения первого вычисления (212) для генерирования первого результата (214);
выполнения второго вычисления (218) с использованием скаляра (216) и первого вычисления (212) для генерирования второго результата (220), упомянутое второе вычисление (218) включает в себя умножение первого вычисления (212) на скаляр (216) для генерирования масштабированного результата и деление упомянутого масштабированного результата на скаляр (216) для генерирования второго результата (220); и
индикации того, являются ли первый результат (214) и второй результат (220) эквивалентными.
10. Устройство по п. 9, в котором упомянутая электроника (104) дополнительно сконфигурирована для выполнения безопасной операции, если первый результат (214) и второй результат (220) не эквивалентны.
11. Устройство по п. 9, в котором первое вычисление (212) включает в себя одну или более операций, упомянутые одна или более операций включают в себя итоговую операцию, и при этом упомянутое второе вычисление (218) включает в себя умножение упомянутого скаляра (216) перед упомянутой итоговой операцией.
12. Устройство по п. 9, в котором первый результат (214) имеет первое двоичное представление, и упомянутое масштабированное значение имеет второе двоичное представление, и упомянутый скаляр (216) выбирается, чтобы максимизировать разницу между упомянутым первым двоичным представлением и упомянутым вторым двоичным представлением.
13. Устройство по п. 9, в котором упомянутый скаляр (216) является целым числом, числом с плавающей точкой или числом двойной точности.
14. Устройство по п. 9, в котором упомянутый скаляр (216) является иррациональным числом.
15. Устройство по п. 9, в котором разница между упомянутым скаляром (216) и 1.0 минимизируется, чтобы сохранить разложение масштабированного результата.
16. Устройство по п. 9, в котором упомянутая электроника (104) дополнительно сконфигурирована для добавления смещения к первому результату (214), если первый результат (214) определяется равным нулю.
17. Способ компиляции кода для обеспечения работы аппаратного обеспечения отказоустойчивым способом, содержащий следующие этапы:
идентификация первого вычисления, сконфигурированного для генерирования первого результата;
генерирование второго вычисления, включающего в себя первое вычисление и скаляр, упомянутое второе вычисление генерирует второй результат, упомянутое второе вычисление включает в себя умножение первого вычисления на скаляр для генерирования масштабированного результата и деление упомянутого масштабированного результата на скаляр для генерирования второго результата;
генерирование индикации того, являются ли упомянутый первый результат и упомянутый второй результат эквивалентными; и
включение упомянутого первого вычисления, упомянутого второго вычисления и упомянутой индикации в выполняемую программу.
18. Способ по п. 17, в котором генерирование упомянутого второго вычисления, включающего в себя упомянутое первое вычисление и упомянутый скаляр, и генерирование индикации того, являются ли упомянутый первый результат и упомянутый второй результат эквивалентными, включает в себя определение класса.
19. Способ по п. 17, дополнительно содержащий этап, на котором:
сохраняют первый результат и второй результат в удаленных областях памяти.
20. Способ по п. 17, дополнительно содержащий следующий этап:
сохранение упомянутого первого вычисления и упомянутого второго вычисления в удаленных областях памяти.
21. Способ по п. 17, в котором включение упомянутого первого вычисления, упомянутого второго вычисления и упомянутой индикации в выполняемую программу включает в себя компиляцию выполняемой программы для запуска на одном процессоре.
22. Способ по п. 17, в котором включение упомянутого первого вычисления, упомянутого второго вычисления и упомянутой индикации в выполняемую программу включает в себя компиляцию выполняемой программы для использования одной математической библиотеки.
23. Способ по п. 17, дополнительно содержащий этап, на котором:
осуществляют предварительное тестирование математической библиотеки для обнаружения ошибок вычислений.