Переименование регистров (registers renaming) технология цель которой минимизировать задержку конвеера при зависимости по данным. Зависимости по данным: Register renaming WAR (Write after Read) Remove problem RAW (Read after Write) No changes WAW (Write after Write) Remove problem Переименование регистров
![]()
Идея: физичеких регистров больше чем программных регистров процессора мы говорим какой физичекий регистр в какое время отвечает за какой програмный регистр процессора. (как правило Register renaming используется в out-of-order execution).
![]()
---------------------------------------------------------------------- clk S num instruction comment ---------------------------------------------------------------------- [1]EX 1: mov R1,R2 [2]EX 2: mov R2,1234h // WAR [3]WB // нельзя исполнять пока (1) не исполнится // потому что мы испортим R2 [4]EX 3: mov R3,R2 // RAW [5]WB // нельзя исполнять пока (2) не исполнится // нужен результат (2) [6]EX 4: mov R3,R4 // WAW // нельзя исполнять пока (3) не исполнится // a то (3) испортит нам R3 ---------------------------------------------------------------------- Распределяем регистры: ---------------------------------------------------------------------- IR1 IR2 IR3 IR4 IR5 IR6 ---------------------------------------------------------------------- 1: mov R1,R2 R1 R2 R4 2: mov R2,1234h R2 3: mov R3,R2 // RAW R3 4: mov R3,R4 // WAW R3 ---------------------------------------------------------------------- Транслируем: ---------------------------------------------------------------------- clk S num instruction comment ---------------------------------------------------------------------- [1]EX 1: mov IR1,IR2 [1]EX 2: mov IR3,1234h [2]WB [3]EX 3: mov IR5,IR3 // RAW // (3) ждет пока (2) будет готов [1]EX 4: mov IR6,IR4 ---------------------------------------------------------------------- Мы убрали 2 зависимости: В результате конвеер стоит гораздо меньше, т.к. независимые инструкции мы можем исполнить паралельно.
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Регистровые окна (Register Window) Окно регистров Parameters Local Temporary циклические структуры Окна фиксированного размера (SPARC) Регистровые окна
![]()
Окна переменного размера (IA-64)
![]()