next up previous
Next: Desempenho das máquinas RISC Up: Máquinas RISC Previous: Trabalho do Compilador

Acelerar a chamada de procedimentos

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).

Figure: Janelas de registradores superpostas
\begin{figure}
\vspace{4.5in}
\end{figure}

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.


next up previous
Next: Desempenho das máquinas RISC Up: Máquinas RISC Previous: Trabalho do Compilador
Siang Wun Song
2001-09-19