Неопределенные инструкции процессора без выполнения вызывают ошибки?
Сейчас я пытаюсь отправлять коды динамически, например, SSE, AVX и так далее. В двоичном файле все коды, которые будут отправлены во время выполнения, связаны.
Я беспокоюсь, что неопределенные инструкции ЦП в пути кода, которые не будут выполняться в ЦП, вызывают непреднамеренное поведение из-за спекулятивного выполнения или других действий.
Тогда у меня есть два вопроса.
- Будет ли ошибка отчета ЦП происходить в умозрительном исполнении обычно?
- Неопределенные инструкции процессора без выполнения вызывают ошибки?
1 ответ
Вы слишком беспокоитесь. Спекулятивное выполнение называется спекулятивным, потому что ЦП выполняет некоторый код только в том случае, если считает, что оно того стоит, но не может предположить, что код не вызовет каких-либо исключений ЦП. Выполнение машинного кода имеет строгую последовательную семантику "инструкция за инструкцией", поэтому ЦП не может законно сообщать о проблемах из (спекулятивного) будущего относительно (логически) текущего указателя инструкций.