Мне известно два алгоритма внеочередного исполнения команд:
инженера IBM Tomasulo и
доска ресурсов.
Первый включает в себя второй и содержит ещё и переименование регистров. Это приводит к необходимости иметь пусть и небольшую, но чрезвычайно ассоциативную память. Которая жрёт транзисторы и энергию.
Второй много проще. Этап "записи в регистровый файл" сообщает блоку выдачи команд, какой регистр имеет установленное значение. Команда cmd dest, srca, srcb запустится, только если регистры srca и srcb установленны. На время выполнения команды регистр dest будет считаться не установленным.
Этот алгоритм легко реализуется на битовых операциях над битовым вектором размером с количество регистров. Заметные изменения касаются только блока выдачи команд и они нисколько не революционны.