Переименование регистров (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)