Современные x86 процессоры устроены очень сложно. Они имеют внутри себя микропрограмму для декомпозиции и преобразования поступающих машинных слов на ещё более низкоуровневые опкоды (микроопкоды). Они включают в себя конвейерную архитектуру, когда независимые друг от друга команды исполняются частично параллельно. Есть специализированные SSE, MMX, AVX команды (да и Floating-point тоже сюда), их исполнение производится на сопроцессорах и также может быть произведено одновременно с исполнением основных команд (а ещё могут одновременно исполняться на частях сопроцессора, так возможно одновременное исполнение сразу двух MMX команд). Медленная работа с памятью ускоряется кэшированием, но все равно может быть отложена "в фон" в угоду более быстрым командам. Предикция переходов "угадывает", куда пойдёт исполнение логического ветвления, процессор может вычислить часть команд ещё до того, как туда дойдёт исполнение... Всё ради того, чтобы вы посидели вконтактике без тормозов.
Сейчас сложно сказать, сколько команд выполняет процессор за такт. В зависимости от самой исполняемой программы, некоторые Intel или AMD x86 процесоры способны выполнять
до 32 floating-point инструкций за один такт и
до 6 "стандартных" микроопкодов за такт.
К примеру, цифровой сигнальный процессор архитектуры TMS320 по документации умеет исполнять 8 команд за такт, и компиляторы это учитывают, расставляют флаги зависимостей, стараются оптимизировать параллельное исполнение.