например у нас есть код делающий:
R1 = Load A
R2 = Load B
R3 = R1 + R2
и потом идет другое:
R1 = 1
R2 = 1
R3 = R1 + R2
R1 = Load A
R2 = Load B
R3 = R1 + R2
и потом идет другое:
R1 = 1
R2 = 1
R3 = R1 + R2
но out-of-order на это посмотрит и скажет что "а ваще давайте переназначим регистры и сделаем все параллельно)
но возврат данных будет в том порядке как ожидает программа
В высокопроизводильном - все обычно ОоО
Изобрели это ооооочень давно для System/360 Model 91
это иногда называют "динамическое выполнение" (Dynamic Execution)
размер ROB в Skylake - 224 записи например. То есть 224 инструкции могут попасть в очередь на переупорядываченье
разработка цпу стоит миллиарды, занимает в среднем 4 года работы команды из 300 человек. И это только для базового дизайна микроархитектуры.
Примеры OoO процессоров:
Intel i7-2560, IBM Power8E
Intel i7-2560, IBM Power8E
у обоих ROB - 224 записи (в PPC он называется GCT)
есть интерфейс для общения между - называется system call interface (syscalls)
cat /proc/self/maps - покажет как выглядит память с точки зрения cat