next up previous
Next: Pricípios de projeto de Up: Máquinas RISC Previous: Máquinas RISC

Evolução da arquitetura de computadores

As primeiras máquinas eram extremamente simples, com relativamente poucas instruções e poucos modos de endereçamento.

Tudo começou a mudar com o conceito de microprogramação (devido a Wilkes) e a introdução do IBM 360, que é microprogramado, possibilitando um conjunto complexo de instruções do nível convencional, conhecidas como instruções de máquina. Dentro de poucos anos, máquinas como VAX tipicamente tem mais de 200 instruções e mais de uma dúzia de modos de endereçamento, todos implementados por um microprograma rodando num hardware simples.

Um outro fator que encorajou a evolução das máquinas CISC é a baixa velocidade de acesso da memória principal RAM, em relação a velocidade de um ROM dentro da CPU. Para ilustrar isso, pense em aplicações COBOL que necessitam de aritmética decimal. Como todas as máquinas internamente são binárias, a aritmética decimal teria que ser simulada. Há duas maneiras possíveis. A primeira é exigir que o programa COBOL chame rotinas de biblioteca armazenadas na memória principal. A segunda é colocar tais rotinas no microprograma (ROM dentro da CPU) e acrescentar instruções do tipo ADD DECIMAL ao repertório de instruções. Devido a baixa velocidade de acesso de memória RAM, a tentação é colocar maior complexidade no microprograma.

A situação começou a mudar com a introdução de memória RAM rápidas, que não são mais cerca de 10 vezes mais lentas que a ROM, como antigamente. A manutenção do microprograma também tem gerado grandes dores de cabeça: consertar um ``bug'' num microprograma gravado em ROM já entregue ao mercado significa visitar todas as instalações de clientes para trocar as ROMs defeituosas.

Um outro acontecimento marcante foi a descoberta de que realmente poucos tipos comandos são usados na maioria dos programas examinados em vários experimentos realizados. Knuth, Wortman, Tanenbaum e Patterson mediram programas escritos em várias linguagens e constataram os seguintes comandos mais usados:

Comando Fortran C Pascal
       
atribuicao := 51% 38% 45%
if 10 43 29
call 5 12 15
loop 9 3 5
goto 9 3 0
outros 16 1 6


Em média, atribuição ``:='', ``if'' e ``call'' constituem 85% dos comandos usados. Mais interessante ainda é a constatação de que 80% das atribuições é do tipo

variável := um só termo (constante ou variável)
como mostra a figura seguinte.

Numero de termos %
1 80
2 15
3 3
4 2
5 ou mais 0


A distribuição de variáveis locais escalares em procedimentos também é interessante: 22 % não tem nenhuma variável local e 80 % tem 4 ou menos variáveis locais, como mostra a figura seguinte.

Numero de variaveis locais %
0 22
1 17
2 20
3 14
4 7
5 ou mais 20


Quanto ao número de parâmetros de procedimentos, 84 % usam 3 parâmetros ou menos, conforme a tabela abaixo:

Numero parametros %
0 41
1 19
2 15
3 9
4 7
5 ou mais 9


A conclusão é simples: na prática os programas realmente escritos consistem de comandos de atribuição (com poucos termos), if's e chamadas de procedimentos com poucos parâmetros e variáveis locais. Essa constatação põe em dúvida a introdução de maior complexidade no microcódigo. Um microprograma complexo significa maior tempo para decodificar e executar uma instrução, muitas das quais raramente são usadas. O número grande de modos de endereçamento significa que a análise de endereço tem que ser feita por um microprocedimento. Assim, cada instrução de dois operandos, por exemplo, teria que chamar tal microprocedimento duas vezes.

A consequência de tudo isso é a constatação de que o computador pode ser mais rápido se jogarmos fora todo o interpretador (microprograma) duma vez por todas.

Uma máquina RISC é, portanto, essencialmente um computador com um pequeno repertório de instruções parecidas com microinstruções verticais. Programas de usuários são compilados em sequencias dessas instruções que são armazenadas na memória principal RAM, buscadas e diretamente executadas por hardware, sem nunhuma interpretação.

A primeira máquina RISC foi o minicomputador 801, construído em 1975 por IBM. Em 1980, uma equipe liderada por dois professores de Berkeley, Patterson e Séquin, projetou a pastilha RISC I e depois RISC II. Em 1981, Hennessy, de Stanford, projetou a pastilha MIPS. A Figura [*] faz uma comparação dessas 3 máquinas RISC com 3 máquinas CISC.

Figure: Máquinas CISC com 3 primeiras RISC

Os três projetos RISC acima mencionados levaram a produtos comerciais: o 801 é o antecessor do IBM PC/RT (Risc Technology); o RISC I inspirou a arquitetura SPARC da Sun Microsystems; a pastilha MIPS levou a formação da empresa MIPS Computer Systems que produz pastilhas RISC da DEC e de alguns outros fabricantes.


next up previous
Next: Pricípios de projeto de Up: Máquinas RISC Previous: Máquinas RISC
Siang Wun Song
2001-09-19