Alright, register renaming...
Който внимава каква е производителността на съвременните процесори знае, че в повечето случаи те изпълняват 2-4-8 инструкции на цикъл. За да постигнат това при ограничения като стотици цикли достъп до паметта, и десетина цикъла достъп дори до най-близкия кеш, процесорите изпълняват буквално стотици инструкции едновременно. Да дам пример по-близък до програмирането: това което процесорните инженери са постигнали е да им дадеш еднонишкова програма на C++, и те да я направят автоматично да работи на 20 процесора.
Та, да оставим спекулативното изпълнение и да се концентрираме на най-простия начин да се направят нещата паралелни: register renaming. Имаме само код, който няма branches, basic blocks му казват обикновено. Значи единствения начин да се паралелизира кода е да се изпълняват независими инструкции едновременно. Ограничения брой регистри прави това трудно, защото ако две независими групи инструкции използват AX, втората трябва да чака първата да го освободи. Затова процесорите имат голям брой (стотици) физически регистри, и една от първите стъпки (rename) в изпълнението на инструкция е заменянето на архитектурните регистри с физическите. След rename stage, инструкциите имат стотици регистри, а не само 6-7.
А козоеба е ясно, че нищо няма да разбере, той за една проста "нова технология" за звъ̀нци му трябват месеци.