руководства Intel для инструкции RDTSC предупреждают, что выполнение вне порядка может измениться, когда выполняется RDTSC, поэтому они рекомендуют вставлять инструкцию CPUID перед ним, потому что CPUID будет сериализовать поток команд (CPUID никогда не выполняется из строя). Мой вопрос прост: если у них была возможность делать сериализацию инструкций, почему они не сделали сериализацию RDTSC? По всей видимости, его цель состоит в том, чтобы получить точное время цикла. Есть ли ситуация, при которой вы не хотели бы предшествовать ей с помощью инструкции сериализации?
Новые процессоры Intel имеют отдельную инструкцию RDTSCP, которая сериализуется. Intel предпочла ввести отдельную инструкцию, а не изменять поведение RDTSC, что говорит мне о том, что должна быть какая-то ситуация, когда потенциально не соответствует срокам заказа. Что это?