Postagens do Blog

RISC & CISC

RISC & CISC

Nos últimos anos da década de 1970, a técnica dominante para projeto de processadores privilegiava as instruções muito complexas, cuja implementação era muito simples com o emprego do interpretador. Os projetistas estavam tentando minimizar o chamado “gap semântico”, a distância entre aquilo que a máquina podia realizar e aquilo que as linguagens de programação de alto nível exigiam. Na época, quase ninguém pensava em projetar máquinas mais simples, assim como hoje ninguém pensa em projetar sistemas operacionais, redes, processadores de texto etc, menos poderosos.
Como havia uma preocupação de alguns projetistas em construir processadores simples (que executavam instruções simples rapidamente), logo ficou clara a importância de se projetarem instruções que pudessem ser iniciadas prontamente (o fato de se iniciar uma nova instrução antes de terminar a execução de outras é de fundamental importância para o bom êxito da técnica de pipeline). Chegaram a ser construídos processadores com um pequeno número de instruções (50) e o que chamou atenção é que os processadores que havia no mercado eram de 200 a 300 instruções. O tempo que uma instrução leva para ser executada passou a importar menos do que a quantidade de instruções que pudessem ser iniciadas em um segundo.
Com efeito, a abreviatura RISC quer dizer Reduced Instruction Set Computer, que contrastava com a técnica CISC (Complex Instruction Set Computer). Os adeptos da filosofia RISC defendiam a tese de que a melhor maneira de se projetar um processador era com um pequeno número de instruções, todas muito simples, capazes de serem executadas em um ciclo do caminho de dados, buscando o conteúdo de dois registradores, operando-os de alguma maneira (por exemplo, adicionando-os ou aplicando-lhes a função AND lógica) e guardando o resultado em um registrador. O argumento dos adeptos do RISC era que, mesmo que uma máquina RISC precisasse de quatro ou cinco instruções para fazer o que uma máquina CISC faria em apenas uma, se as instruções RISC fossem 10 vezes mais rápidas (por não serem interpretadas) a máquina RISC vencia. É importante observar que, naquela época, a velocidade das memórias principais havia alcançado a velocidade das memórias Read-Only, que eram usadas nas memórias de controle, de modo que a penalidade paga pela interpretação cresceu bastante, favorecendo em muito as máquinas RISC. Com base naquilo que acabamos de expor, é lícito pensar que, em função da melhor performance da tecnologia RISC, as máquinas projetadas nessa tecnologia (como, por exemplo, as máquinas com o chip Alpha da DEC) tornar-se-iam um sucesso de vendas, suplantando as máquinas projetadas na tecnologia CISC (como por exemplo, as máquinas com o chip Pentium da Intel). Nada disso aconteceu. Por que não? Em primeiro lugar, existe a questão de compatibilidade com máquinas mais antigas, havendo empresas que têm bilhões de dólares investidos em software para a linha Intel. Portanto mudar de arquitetura significaria, na prática, jogar no lixo este investimento. Em segundo lugar, surpreendentemente, a Intel tem-se esforçado por utilizar as idéias básicas do projeto RISC em suas máquinas cuja filosofia de projeto é CISC. A partir dos 486, a Intel passou a projetar seus processadores com núcleo RISC, núcleo este responsável pela execução de instruções mais simples (e, consequentemente mais frequentes) em um único ciclo do caminho de dados, enquanto as instruções mais complexas são interpretadas, forma clássica de execução das instruções na filosofia CISC. Todas as instruções de máquina RISC são executadas diretamente pelo hardware. Nenhuma delas é interpretada por micro instruções. A eliminação de um nível de interpretação resulta em uma velocidade de execução bastante rápida para a maioria das instruções de uma máquina RISC. Para aqueles processadores cujo conjunto de instruções siga a filosofia CISC, as instruções mais complexas podem ser divididas em várias partes, cada uma das quais sendo executadas por uma sequencia de micro instruções. Esse passo extra, a interpretação, torna a máquina mais lenta, porém, como ela só é empregada nas instruções que ocorrem com menos frequência, isso pode ser tolerado.

OBSERVAÇÕES IMPORTANTES

Exemplos de processadores CISC: 386, 486.
RISC: possuem um menor número de circuitos internos e podem trabalhar a frequências + altas.

Endereçamento apenas por registrador uma das consequências da regra de ouro é na redução drástica dos modos de endereçamento. Ao contrário das máquinas CISC, que possuem muitos modos de endereçamento, as máquinas RISC apresentam apenas o endereçamento por registrador. Assim, não envolvendo acessos à memória, as instruções são executadas uma por ciclo. A pergunta natural que se faz é como carregar e descarregar registradores. A solução é permitir apenas duas instruções, LOAD e STORE, que acessam a memória. Tais instruções em geral não podem ser completadas em um ciclo. Aumentar o ciclo por causa de LOAD e STORE não é recomendado. A solução é o uso de pipelining como veremos a seguir.


RISC guarda o endereço de instruções em um registrador
CISC, guarda o endereço de instruções na stack.
RISC, Operandos sempre em registradores.
CISC, Operandos em memória.

Leia também: Filosofia ARM
TABELA COMPARATIVA

RISC & CISC
REFERÊNCIA BIBLIOGRÁFICA


TANENBAUM, A., Organização Estruturada de Computadores, Prentice Hall do Brasil, 2013

Nenhum comentário:

Postar um comentário

Postagem em Destaque

Maquina Virtual

  O QUE É UMA MÁQUINA VIRTUAL Uma máquina virtual , conhecida como guest, é criada dentro de um ambiente de processamento, chamado host. ...

Postagens Mais Visitadas

Últimas Postagens