In one embodiment a multiprocessing apparatus includes a first processor
and a second processor. Each of the processors have their own data and
instruction caches to support independent operation. In a normal mode the
processors independently execute separate instruction streams. Each of the
processors has a respective signature generator. The system also includes
a compare unit coupled to the signature generators. In a high reliability
mode, both processors execute the same instruction stream. That is, each
processor computes a version of a result for ones of the instructions in
the stream. Responsive to the respective versions, the respective
signature generators assert signatures to the compare unit, so that a
faulting instruction may be detected. In another aspect, each processor
has its own respective commit logic. The compare unit signals the commit
logic in each respective processor that the possibility has been
eliminated of a calculation interrupt arising for that instruction, once
the compare unit receives signatures for corresponding versions of a
result, but only if the signatures match. This permits the commit logic to
commit the result. If the signatures do not match, the compare unit
signals the commit logic that the corresponding instruction has faulted.
The commit logic permits instructions prior to the faulting instruction in
program order to continue execution, but initiates flushing of results
that were produced by the faulting instruction and at least some
instructions subsequent in program order to the faulting instruction.
В одно воплощение прибор мультипроцессирования вклюает первый обработчик и второй обработчик. Каждый из обработчиков имеет их собственные тайники данных и инструкции для того чтобы поддержать независимо деятельность. В нормальном режиме обработчики независимо исполняют отдельно потоки инструкции. Каждый из обработчиков имеет соответственно генератор подписи. Система также вклюает блок сравнивать соединенный к генераторам подписи. В высоком режиме надежности, оба обработчика исполняют такой же поток инструкции. That is , каждый обработчик вычисляет вариант результата для одной из инструкций в потоке. Отзывчиво к соответственно вариантам, соответственно генераторы подписи утверждают подписи к блоку сравнивать, так, что ошибаясь инструкция будет мочь быть обнаружена. В другом аспекте, каждый обработчик имеет свое собственное соответственно поручить логика. Блок сравнивать сигнализирует логику поручать в каждом соответственно обработчике что возможность была исключена interrupt вычисления возникая для той инструкции, раз блок сравнивать получает подписи для соответствуя вариантов результата, но только если подписи сопрягают. Это позволяет логику поручать поручить результат. Если подписи не сопрягают, то блок сравнивать сигнализирует логику поручать что соответствуя инструкция ошибалась. Логика поручать позволяет инструкции до ошибаясь инструкции в заказе программы продолжать исполнение, но топить вновь принятых результатов которые были произведены ошибаясь инструкцией и по крайней мере некоторыми инструкциями затем в заказе программы к ошибаясь инструкции.