Uma maneira de usar o espaço que antes era ocupado pelo
microprograma e os circuitos correspondentes é colocar mais
registradores. Não é incomum ter mais de 500 registradores numa
CPU do tipo RISC.
Em particular o RISC I usa os registradores adicionais para acelerar
a chamada de procedimentos, uma das operações mais usadas em
programas. O conceito usado é o de janelas superpostas de
registradores, explicado a seguir.
Cada programa vê um conjuntos de 32 registradores de 32 bits cada
especialmente usados para chamada de procedimentos: 8 para
variáveis globais, 8 para parâmetros de entrada, 8 para
variáveis locais do procedimento e 8 para parâmetros de
saída que são transmitidos como entrada a outros
procedimentos. Os registradores com variáveis globais devem ser os
mesmos para todos os procedimentos; os outros devem ser mudados para
cada chamada.
A Figura mostra em (a) a situação da primeira chamada de um procedimento. O apontador CWP (``current window pointer'') aponta para o início dos registradores contendo os parâmetors de entrada. O procedimento prepara os parâmetros de saída como mostra a Figura (a). Esse procedimento pode chamar outro procedimento, e os parâmetros de entrada do novo procedimento são exatamente os de saída do primeiro. Assim basta superpor os 8 registradores correspondentes dos dois procedimentos, como mostra a Figura (b).
Desse jeito, a chamada de procedimentos podem em geral ser executadas sem utilizar a pilha na memória. Isso somente seria necessário quando por exemplo o número de parâmetros exceder o limites dos 8 registradores, o que deve acontecer raramente.