Universo Online
Web Sites Pessoais

CISC x RISC

Nota: Os textos a seguir são traduções livres de livros e revistas, portanto podem conter erros de tradução.

1. O Aparecimento do Circuito Integrado

2. Um Sistema Típico de Computação

3. Dentro da Memória

4. Dentro do Processador

5. Um Programa Simples

6. Os Dispositivos Periféricos

7. Mapeamento de memória de I/O

8. Instruções de I/O

9. Processador de I/O

10. Acelerando o Sistema

11. Memória Cache

12. CISC e RISC

13. CISC

14. O que é CISC?

15. CISC filosofia 1: Uso de Microcódigo

16. CISC filosofia 2: Construindo um "rico" conjunto de instruções

17. CISC pilosofia 3: Construindo conjunto de instruções de alto nível

18. O crescimentos do CISC

19. Características do projeto CISC

20. Conjunto de Instruções CISC

21. Arquitetura de hardware CISC

22. A máquina CISC Ideal

23. A máquina CISC Real

24. CISC e a Equação de Performace Clássica

25. CISC Pros e Contras

26. O Que é RISC?

27. Princípios Técnicos de Máquinas RISC

28. Uma Instrução por Ciclo da Via de Dados

29. Arquitetura LOAD/STORE

30. PIPELINING

31. Características e Funcionamento da Arquitetura RISC

32. Pipelined: Uma Técnica Fundamental

33. Diferenças entre Arquiteturas RISC e CISC

34. Conjunto de instruções de um processador RISC

35. Acesso a operandos em memória em CISC e RISC

36. Vantagens e Desvantagens do RISC

37. Projeto de Sistema

38. Resumo

1. O Aparecimento do Circuito Integrado

Durante os anos 60, os circuitos integrados entraram em cena. Centenas de transistores, diodos, e resistores puderam ser colocados em um único chip, resultando em velocidades operacionais mais altas, capacidade aumentada, maior confiabilidade...e diminuição dos custos. Isto permitiu que os projetistas construissem sistemas de computação usando componentes comerciais e ajudou a padronizarusing os projetos dos modernos sistemas de computação.

Volta

2. Um Sistema Típico de Computação

Todo sistema de computação moderno consiste de tres seções básicas : Um processador, alguma memória, e dispositivos periféricos (entrada e saída).

Volta

O trabalho do processador é aceitar as instruções vindas da memória e executar estas instruções. A maioria das instruções dizem para o processador levar dados da memória ou de dispositivos periféricos e então muda estes dados ou o escreve na memória ou em um dispositivo periférico.

Volta

3. Dentro da Memória

A Memória de um computados é dividida em 2 tipos básicos: Random Access Memory (RAM), que o processador pode ler e escrever e Read-Only Memory (ROM) que o processador nunca pode mudar. Read-Only Memory (ROMs) retêm a sua informação até mesmo quando a energia é desligada. Isto faz ROMs ser útil para a tarefa de iniciar o computador quando a energia é ligada.

A Random Access Memory do computador é usada para trocar informações ou para carregar programas do disco (ou de outro periférico) antes de rodá-los. Este tipo de memória não perserva seu conteúdo quando a eletricidade é desligada.

O conteúdo da RAM e da ROM são organizados da mesma maneira. Cada tipo de memória possui várias células (também conhecidas como localizações de armazenamentoalso), e cada célula possui um único endereço. O menor endereço é tipicamente o 0, e o maior endereço permitido é determinado pelo processador --- este range de endereços é conhecido como espaço de endereçamento da máquina.

Volta

Observe que o chip de memória de muitos sistemas são organizados em células de 8 bits (1 byte), que fornece para cada byte um único endereço.

Quando o computador quer ler ou escrever uma localização na memória, ele precisa de 2 coisas: especificar um endereço e ler ou escrever na localização especificada. O computador faz isto colocando primeiro o endereço no barramento de endereços, onde é levado para a memória. Circuitos especiais determinam qual chip deverá satisfazer o pedido, e que chip esta habilitado.

O processador também especifica se quer ler ou escrever na localização especificada. Se o processador sinalizar uma operação de leitura, então a memória copia o conteúdo da localização especificada para o barramento de dados. Se o processador sinalizar uma operação de escrita, então o processador é responsável por colocar a informaçào no barramento de dados, e a memória copia a informação do barramento de dados para o local especificado na memória.

Neste exemplo, os dados e as instruções podem ser armazenados na mesma memória --- fazendo desta uma máquina de arquitetura Von Neumann. As instruções e os dados são transferidos do mesmo barramento de dados e residem no mesmo espaço de endereçamento.

Note que o processador sabe que está pedindo algo como uma instrução ou requisitando um dado, e encaminhará a informação adequadamente.

Volta

4. Dentro do Processador

Volta

A figura acima mostra unidades funcionais dentro de um hipotético precessador, que combina com as partes mais comuns dos microprocessadores modernos:

Volta

5. Um Programa Simples

O examplo de um programa na linguagem assembly,abaixo, conta de 1 até 10, colocando o resultado na localização de memória 0. (Nós escolhemos escrever o resultado na localização zero porque imprimindo o resultado ou enviando para outro periférico poderia envolver uma série longo de instruções)

         PUT 1 INTO Register 1
         PUT 4 INTO Register 2
LOOP:    COMPARE Register 1 WITH Register 2
         IF EQUAL BRANCH TO "END"
         ADD 1 TO Register 1
         BRANCH TO "LOOP"
END:     STOP
Um programa semelhante em linguagem de alto nível leria:

FOR I = 1 TO 10
  PRINT I
END
Este programa na verdade implementa um simples "loop for ", que está repetindo parte de um programa que conta para cima ou para baixo o valor entre dois números.

As primeiras 2 instruções inicializa, ou set up, registradores 1 e 2. Registrador 1 é o contador do loop , e caontado o valor entre 1 e 10. Registrador 2 possui o valor final do loop --- O contador do loop esta testando continuamente este valor para determinar o loop deve ser encerrado.

Instruções 3-7 (do label LOOP: para a instrução "BRANCH TO "LOOP"" ) compoem o corpo do loop:

Se o resultado da subtração é zero, então os dois valores são equivalentes e o "Equal" bit é colocado para TRUE na condição do code register. Se o resultado é maior que zero, o "MAIOR QUE" bit seria colocado. Semelhantemente, se o resultado fosse menor que zero, o "MENOR QUE" bit seria colocado.

Trabalhando juntas, instruções 4 e 5 determinam se o loop deveria parar ou repetir.

Volta

6. Os Dispositivos Periféricos

A última parte do nosso sistema hipotético são os dispositivos periféricos (também conhecidos simplesmente por ""periféricos".) Os periféricos dos sistemas do computador comunica-se com o "mundo exterior" ou mantém as informações por um longo tempo. Periféricos se encaixam em várias classes básicas:

Volta

O projetista de computador têm várias opções quando projeta um periférico para um sistema, incluindo tçnicas como mapeamento de memória de I/O , uso de instruções especiais de I/O dentro do processador principal, ou uso de um processador de I/O separado.

Volta

7. Mapeamento de Memória de I/O

Mapeamento de Memória faz o periférico parecer um bloco de RAM (dentro de uma faixa de endereço separando da memória peincipal) para o processador principal. Se o processador escreve um valor em um destes endereços, a informação é enviada para o periférico. De modo similar, se o processador ler de um destes endereços, alguma informação é lida deste periférico e entregue ao processador.

Volta

Observe que o processador esta em controle diresto sobre o dispositivo periférico, i.e. informação somente é transferida quando o processador ler ou escreve de um destes endereços especiais. Esta técnica é usada inteiramente pelos computadores Macintosh e Apple II para coisas como portas seriais e monitores. Esta técnica é um modo barato e confiável de controlar periféricos, mas gasta bastante tempo do processador principal esperando por dispositivos periféricos.

Volta

8. Instruções de I/O

Alguns processadores possuem instruções especiais de I/O para o suporte de dispositivos periféricos. Estes processadores transferem os dados dos periféricos usando o barramento de dados, mas possui um barramento de endereçamento separado só para os periféricos ou um sinal especial que indica o endereço atual que deveria ser usado por um periférico em lugar da memória.

Volta

9. Processador de I/O

O mais eficiente modo de conectar um dispositivo periférico a um sistema é através de um processador de I/O. Estes são dispositivos separados que lêem e escrevem para um periférico sem a intervenção do processador principal.

Por exemplo, em uma máquina como o Quadra 900 que usa um processador de I/O separado para a porta serial, o processador principal coloca o dado para ser enviado no bloco de RAM e então envia uma solicitação ao processador de I/O para que o dado saia. O processador de I/O então ler cada byte da area especificada na memória e envia a toda informação para a porta serial enquanto o processador principal continua execuntando nosso programa.

Volta

10. Acelerando o Sistema

Uma das algumas constantes na indústria de computadores é o desejo de sistemas de computadores sempre mais rápidos. Há vários ítens que pode-se manipular para acelerar um sistema, incluindo a memória, o processador, a conexão para os dispositivos periféricos, ou nos periféricos atuais.

Volta

11. Memória Cache

Memória é um dos melhores lugares para acelerar um sistema pelo uso de caches.

A memória cache é um bloco de RAM rápida localizada entre o processador e a memória mais lenta como a memória principal ou o disco rígido.Quando o processador precisa ler alguma informação da memória lenta, aquela informação também é copiada no cache onde, se a informação é novamente necessária, pode ser lida novamente da memória cache que é mais rápida.

Alguns caches mantém localizações individuais separadas, enquanto outros caches armazenam blocos de localizações (onde cada bloco é conhecido como um cache line.) Em um sistema que usa cache lines, o circuito de cache lerá uma sussução de localizações que começam com ou ao redor da localização especificada quando o processador executa uma instrução lida para um endereço que não é do cache.

Muitos caches são montados diretamente sobre o chip do processador ; estes são conhecidos como caches de pimeiro-nível (first-level) ou simplesmente de L1.

Volta

12. CISC e RISC

Acelerar o resto do sistema envolve várias outras diferentes estratégias. Nós ja discutimos que o uso de de processadores de I/O acelera os periféricos, e que cada periférico possui um pequeno buffer de memória que mantém os dados enviados do sistema principal. (Isto é similar ao conceito de cache.)

Porém, o lugar mais frutífero para acelerar o sistema está no projeto de processadores mais rápidos. Os próximos parágrafos mostram como os projetistas de computador tem tentado fazer isto.

Volta

  13. CISC

Os Processadores AMD são exemplos de CISC

Volta

Descreveremos a arquitetura de computadores "CISC", que é a mais utilizada atualmente.

Conteúdo:

Volta

14. O que é CISC?

CISC, é uma sigla para Complex Instruction Set Computer, é uma filosofia de projeto de chips que são fáceis de programar e fazem uso mais eficiente da memória. Cada instrução dentro do conjunto de instruções CISC pode executar uma série de operações dentro do processador. Isto reduz o número de instruções requirido para implementar um determinado programa, e permite o programador aprender um pequeno mas flexível conjunto de instruções.

Considerando que as primeiras máquinas foram programadas em linguagem assembly e a memória era lenta e cara, a filosofia de CISC fez sentido, e foi comumente implementada em tais grandes computadores como os PDP-11 e o DECsystem 10 e 20 máquinas.

A maioria dos projetos de microprocessadores comum --- inclusive as séries Intel(R) 80x86 e Motorola 68K ---também segue a filosofia de CISC.

Como nós veremos, recentes mudanças nos software e na tecnologia do hardware forçaram um re-exame do CISC. Mas primeiro, daremos uma olhada nas decisões que conduziram ao CISC.

Volta

15. CISC filosofia 1: Uso de Microcódigo

Os projetos dos primeiros processadores usaram lógica (hardwire) dedicada para decodificar e executar cada instrução no conjunto de instruções do processador. Isto trabalhou bem para projetos simples com poucos registradores, mas fizeram arquiteturas mais complexas, difíceis de construir, como o controle do caminho lógico pode ser difícil de implementar. Assim, os projetistas trocaram as táticas--- eles construíram algumas lógicas simples para controlar os caminhos de dados entre os vários elementos do processador, e usaram uma simplificada instrução de microcódico para controlar a lógica do caminho de dados. Este tipo de implementação é conhecida como uma implementação de microprogramas.

Em um sistema de microprogramas, o processador principal tem alguma memória embutida (tipicamente ROM) que contém grupos de instruções de microcódigo que correspondem com cada instrução em linguagem de máquina. Quando uma instrução em linguagem de máquina chega ao processador central, o processador executa a série correspondente de instruções em microcódico.

Volta

Porque as instruções podem ser retornadas até 10 vezes mais rapidamente de um ROM local que da memória principal, projetistas começaram a pôr tantas instruções quanto possível em microcódico. De fato, alguns processadores poderiam ser ordenados com microcódico customizável que substituiria as freqüentemente usadas mas lentas rotinas em certa aplicação.

Existe algumas vantagens reais para uma implementação com microcódico:

Volta

Usando um conjunto de instruções microcodificadas, a serie IBM 360 foi capaz de de oferecer o mesmo modelo de programação através de um range de diferentes configurações de hardware.

Algumas máquinas foram aperfeiçoadas para computação científica, enquanto outras foram aperfeiçoadas para computação empresarial. Porém, Elas todas tudo compartilharam o mesmo conjunto de instruções, programas podem ser movidos de máquina para máquina sem re-compilação (mas com um possível aumento ou diminuição de desempenho que depende do hardware subjacente.)

Este tipo de flexibilidade e poder fazem da microcodificaçãong o caminho preferido para construir novos computadores por algum tempo.

Volta

16. CISC filosofia 2: Construindo um "rico" conjunto de instruções

Uma das consequências do uso de projetos microprogramados é que os projetistas puderam pôr mais funcionalidade em cada instrução. Isto não só consumido menos do número total de instruções que exige a implementação de um programa, e também fazendo uso mais eficiente da lenta memória principal, mas isto também fez a vida do programador de limguagem assembly mais simples.

Logo, projetistas estavam aumentando os conjuntos de instrução deles com instruções especificamente direcionadas ao programador de limguagem assembly. Tais realces incluíram operações de manipulação de strings, construção de loops especiais, e modos de endereçamento especiais para indexar por tabelas na memória.

Poe exemplo:

ABCD Add Decimal with Extend

ADDA Add Address

ADDX Add with Extend

ASL Arithmentic Shift Left

CAS Compare and Swap Operands

NBCD Negate Decimal with Extend

EORI Logical Exclusive OR Immediate

TAS Test Operand and Set

Volta

17. CISC pilosofia 3: Construindo conjunto de instruções de alto nível

Uma vez que os projetistas começaram a construção de conjuntos de instruções amigáveis ao programador, o próximo passo lógico era construir conjuntos de instruções que traçam diretamente das linguagens de alto nível. Não que fazer só isto simplifique a tarefa do escritor de compilador, mas também permite para os compiladores emitir menos instruções por linha de código de fonte.

Microprocessadores CISC modernos, como os 68000, implementam várias dessas instruções, inclusive rotinas para criar e remover pilha com uma única chamada.

Por exemplo:

    DBcc   Test Condition, Decrement and Branch
    ROXL   Rotate with Extend Left
    RTR    Return and Restore Codes
    SBCD   Subtract Decimal with Extend
    SWAP   Swap register Words
    CMP2   Compare Register against Upper and Lower Bounds
 Volta

18. O crescimentos do CISC

Decisões dos projetistas CISC:

Conduzidas juntas, estas três decisões conduziram à filosofia CISC a dirigir todos os desígnios dos computadores até os recentes 1980, e ainda está em uso hoje.

Volta

19. Características do projeto CISC

Enquanto os chips que emergiram dos anos setenta e oitenta seguiram os próprios caminhos de projetos, a maioria estava presa pelo que nós chamamos de " Decisões de Projeto CISC ". Estes chips têm um conjunto de instruções e arquiteturas de hardware semelhantes.

Em termos gerais, o conjunto de instruções são projetados de acordo com a necessidade do programador de linguagem assembly e do projetista de hardware designs e são bastante complexas.

 

Volta

20. Conjunto de Instruções

Os constrangimentos do projeto que conduziram ao desenvolvimento do CISC (pequenas quantidades de memória lenta, e o fato que a maioria das primeiras máquinas foram programadas em linguagem assembly), forneceu ao conjunto de instruções CISC algumas características comuns:

Volta

21. Arquitetura de hardware

A maioria das arquiteturas de hardware CISC tem várias características em comum:

Volta

22. A máquina CISC Ideal

Os processadores CISC foram projetados para executar cada instrução completamente antes de começar a próxima instrução. Mesmo assim, a maioria dos processadores quebra a execução de uma instrução em várias fases definidas; assim que uma fase seja acabada, o processador passa o resultado para a próxima fase:

Em uma máquina CISC ideal, cada instrução completa requereria só um ciclo de clock (no qual cada fase seria completada em uma fração de um ciclo.) de fato, esta é a velocidade máxima possível para uma máquina que executa 1 instrução de cada vez.

Volta

23. A máquina CISC Real

Na realidade, algumas instruções podem requerer mais de um clock por fase, como os shows de animação. Porém, o projeto CISC pode tolerar esta diminuição desde que a idéia atrás do CISC é manter o número total de pequenos ciclos tendo que coisas complicadas aconteçam dentro de cada ciclo.

Volta

24. CISC e a Equação de Performace Clássica

A equação usual para determinar a performace é a soma de todas as instruções de (o número de ciclos por instrução * tempo de ciclo de instruções) = tempo de execução.

Volta

Isto lhe permite acelerar um processador de 3 modos diferentes--- use menos instruções para uma determinada tarefa, reduza o número de ciclos para algumas instruções, ou acelere o clock (diminuição do tempo de ciclo.)

CISC tenta reduzir o número de instruções para um programa, e (como nós veremos) RISC tenta reduzir os ciclos por instrução.

Volta

25. CISC Pros e Contras

As vantagens do CISC

Na hora do desenvolvimento inicial delas, máquinas CISC usam tecnologias disponíveis para aperfeiçoar o desempenho do computador.

Volta

As desvantagens do CISC

Rápido, os projetistas perceberam logo que a filosofia CISC tem seus próprios problemas, incluindo:

Volta

26. O QUE É RISC?

Durante grande parte da história dos computadores pessoais, o modelo predominante dos microprocessadores tem sido da Intel Corporation. O primeiro processador no IBM PC foi o Intel 8088. As gerações seguintes de processadores Intel foram da família 80X86 – 8086, 80286, 80386, 80486.A partir do 80586, a Intel entrou na justiça para patentear seu processador, pois os concorrentes AMD. Cyrix e Texas Instruments estavam ganhando terreno na disputa pelo processador de ponta. Depois do Pentium, a Intel já lançou o Pentium MMX, Pentium Celeron, Pentium Pró, Pentium III e Pentium IV, este último com clock de 1 GHz. Todos eram versões elaboradas do 8088 original, mas com desempenho melhorado de duas maneiras – operando mais rapidamente ou processando mais dados simultaneamente. O 8088, por exemplo, operava a 4,7 Mhz – ou 4,7 milhões de oscilações por segundo – e alguns chips como o Pentium IV de 1 GHz vão tão rápido quanto 133 MHz. O 8088 conseguia processar 8 bits de dados por vez, enquanto o Pentium IV processa 64 bits internamente.

Apesar das mudanças, os processadores Intel até o 80486 eram baseados em uma filosofia de projeto denominada CISC, do Inglês Complex Instruction Set Computing. O padrão CISC usa comandos que incorporam muitas instruções mínimas para executar uma simples operação. É como se ele fosse um facão que corta dados e códigos. Ou ainda, por comparação, como um bisturi que corta pedaços cada vez menores e mais delicados de dados e códigos. Esse bisturi é chamado RISC, do Inglês Reduced Instruction Set Computing. Projetos RISC são encontrados em processadores mais novos, entre eles o DEC Alpha, o RISC 6000 da IBM, o processador Power PC e, embora a Intel não chame os processadores Pentium de chips RISC, eles têm muito em comum com o padrão RISC de executar códigos.

O RISC é um projeto menos complicado que usa muitas instruções mais simples para executar uma operação comparável e em menos tempo que um processador CISC que executa um comando maior e mais complicado. Os chips RISC podem ser fisicamente menores que os chips CISC. E pelo fato de usarem menos transistores, geralmente sua fabricação é mais barata e produzem menos calor.

A primeira máquina RISC moderna foi o minicomputador 801 construído pela IBM, começando em 1975, Entretanto, a IBM não publicou nada a seu respeito até 1982. Em 1980, um grupo em Berkeley, liderado por David Patterson e Carlo Séquin, começou a projetar pastilhas RISC VLSI. Eles criaram o termo RISC e batizaram sua pastilha de CPU de RISC I, seguida de perto pela RISC II. Um pouco mais tarde, em 1981, do outro lado da baía de São Francisco, em Stanfor, John Hennessy projetou e fabricou uma pastilha RISC um pouco diferente, que ele chamou de MIPS.

Esta três máquinas RISC são comparadas a três máquinas CISC na Tab. 3.1. Cada uma delas levou diretamente a importantes produtos comerciais. O 801 foi o ancestral do IBM PC/RT, o RISC I foi a inspiração do projeto SPARC da Sun Microsystems, e a pastilha MIPS de Stanford levou à formação da MIPS Computer Systems.

 

CISC

RISC

Modelo

IBM 370/168

VAX 11/780

Xerox Dorado

IBM 801

Berkeley RISC I

Stanford MIPS

Ano em que ficou pronto

1973

1978

1978

1980

1981

1983

Instruções

208

303

270

120

3

55

Tamanho do Microcódigo

54K

61K

17K

0

0

0

Tamanho da Instrução

2-6

2-57

1-3

4

4

4

Modelo de Execução

Reg-reg Reg-mem Mem-mem

Reg-reg Reg-mem Mem-mem

Pilha

Reg-reg

Reg-reg

Reg-reg

Tabela 1. Comparação entre três máquinas CISC típicas com as três primeiras máquinas RISC. Os tamanhos de instrução e de microcódigo estão bytes.

Volta


Muitas previsões vêm afirmando que o futuro dos processadores caminha para um projeto RISC, e provavelmente eles estejam corretas. Mas não tem havido um movimento de venda em massa do RISC, por duas razões. A mais importante delas é manter a compatibilidade com o vasto número de software aplicativo, desenvolvido para trabalhar com os processadores Intel CISC mais antigos. A Segunda razão é que você não recebe todos os benefícios da arquitetura RISC, a não ser que esteja usando um sistema operacional e programas que tenham sido criados e compilados especificamente para tirar vantagens das operações RISC. É a clássica situação do ovo e da galinha. Alguns fabricantes de computadores estão oferecendo processadores RISC para se projetarem como líderes em tecnologia. Eles executam os antigos programas CISC somente através da emulação de um processador CISC, o que acaba negando as vantagens do RISC. Ao mesmo tempo, os criadores de software relutam em converter seus programas para versões compiladas RISC quando ainda não há muitas pessoas usando PCs baseados em RISC.

O Pentium mudou isso. Os técnicos podem argumentar se o Pentium pode ser um verdadeiro chip RISC. É um cômodo comprometimento. O Pentium executa antigos aplicativos e sistemas operacionais e ao mesmo tempo oferece vantagens na velocidade de programas criados especialmente para usar a capacidade do padrão Pentium. E com um sistema operacional avançado como o Windows NT, você pode colocar mais de um microprocessador Pentium no computador para dobrar o poder de processamento.

Volta

27. Princípios Técnicos de Máquinas RISC

Vamos primeiro apresentar uma breve descrição da filosofia básica de projeto RISC. Projetar uma máquina RISC tem cinco passos básicos:

O coração de qualquer computador é a sua via de dados, que contém os registradores, a ALU e os barramentos que os conectam. Este circuito deve ser otimizado para a linguagem ou aplicações em questão. O tempo requerido para buscar os operandos a partir de seus registradores, executá-los através da ALU e armazenar o resultado de volta em um registrador, chamado de tempo de ciclo da via de dados, deve ser o mais curto possível.

O próximo passo é projetar as instruções de máquina que façam bom uso da via de dados. Apenas algumas instruções e modos de endereçamento são tipicamente são tipicamente necessários. Instruções adicionais devem apenas ser adicionadas se elas forem freqüentemente utilizadas e não reduzirem o desempenho das mais importantes. A Regra de Ouro número 1 diz:

Sacrifique tudo para reduzir o tempo de ciclo da via de dados

Sempre que se resolver adicionar uma nova instrução ao processador, ela deve ser examinada sob esta luz: como ela afeta o tempo de ciclo da via de dados? Se ela aumentar o tempo de ciclo, provavelmente não vale a pena tê-la.

Finalmente, o mesmo processo deve ser repetido para todos os outros recursos dentro da CPU, tais como memória cache, gerenciamento de memória, co-processadores de ponto flutuante, e assim por diante.

Máquinas RISC podem diferir de suas concorrente CISC de oito formas críticas, como listado na Tabela 2.

 

RISC

CISC

1

Instruções simples levando 1 ciclo

Instruções complexas levando múltiplos ciclos

2

Apenas LOADs/STOREs referenciam a memória

Qualquer Instrução pode referenciar a memória

3

Altamente pipelined

Não tem pipeline, ou tem pouco

4

Instruções executadas pelo hardware

Instruções executadas pelo microprograma

5

Instruções com formato fixo

Instruções de vários formatos

6

Poucas instruções e modos

Muitas instruções e modos

7

A complexidade está no compilador

A complexidade está no microprograma

8

Múltiplos conjuntos de registradores

Conjunto único de registradores

Volta


28.
Uma Instrução por Ciclo da Via de Dados

Em certo sentido, nome Reduced Instruction Set Computer, não é um bom nome. Enquanto é verdade que a maioria das máquinas RISC têm relativamente poucas instruções, a característica única mais importante que as distingue das máquinas CISC é que as instruções RISC são completadas em um único ciclo da via de dados.

Uma conseqüência do princípio de que toda instrução RISC deve gastar um ciclo é que qualquer operação que não possa ser completada em um ciclo não pode ser incluída no conjunto de instruções Assim, muitas máquinas RISC não possuem instruções para multiplicação ou divisão. Na prática, a maioria das multiplicações são formadas por pequenas constantes conhecidas em tempo de compilação, de modo que elas podem ser simuladas por seqüências de somas e deslocamentos. Instruções de ponto flutuante são executadas por um co-processador.

Volta

29. Arquitetura LOAD/STORE

Dado o desejo de ter toda instrução gastando um ciclo de relógio, é claro que as instruções que referenciam a memória vão ser um problema. Instruções que buscam seus operandos de registradores e armazenam seus resultados em registradores podem ser manipuladas em um ciclo, mas instruções que carregam a partir de ou armazenam em memória levam muito tempo. Aumentar o ciclo de relógio por um fator de dois ou três para acomodar cargas e armazenamentos a viola a Regra de Ouro 1 do projeto RISC.

Como algumas instruções têm que referenciar memória, instruções especiais LOAD e STORE são adicionadas à arquitetura. Apenas estas instruções podem referenciar a memória.

Volta

30. PIPELINING


É claro que proibir que as instruções comuns acessem a memória não resolve o problema de como fazer com que LOADs e STOREs operem em um ciclo. A solução está em um pouco de truque. Vamos agora relaxar nosso objetivos ligeiramente. Em vez de requerer que toda instrução deva ser executada em um ciclo, vamos meramente insistir que seremos capazes de começar uma instrução a cada ciclo, sem levar em consideração quando é que ela termina. Se, em n ciclos, conseguirmos iniciar n instruções, na média teremos atingido uma instrução por ciclo, o que é suficientemente bom.

Para atingir este objetivo modificado, todas as máquinas RISC têm pipeline. A CPU contém diversas unidades independentes que trabalham em paralelo. Uma delas busca as instruções, e outras as decodificam e executam. A qualquer instante, diversas instruções estão em vários estágios de processamento.

Uma instrução comum utiliza duas unidades pipeline, uma para busca e outra para execução. Num instante de tempo uma instrução é iniciada. No outro instante, a instrução iniciada muda de unidade e é executada. Na unidade que ficou livre é iniciado uma nova instrução. Assim mantemos a média, que é iniciar uma instrução a cada ciclo. Porém instruções LOADs e STOREs requer uma terceira unidade, para referenciar a memória. Então, em vez de finalizar a execução em duas unidades, finalizam em três unidades.

Volta

31. Características e Funcionamento da Arquitetura RISC

O que é RISC?

Processadores de Conjunto Reduzido de Instruções Computacionais ('Reduced Instruction Set Computing' ou, abreviadamente RISC) são muito mais velozes do que os processadores comuns (CISC). O termo 'Conjunto Reduzido de Instruções' refere-se ao número de ciclos de clock que o processador leva para selecionar uma instrução. Processadores comuns levam vários ciclos de clock para selecionar uma única instrução. Um chip RISC, por outro lado, pode selecionar e executar uma instrução a cada ciclo de clock.

Volta

RISC: Princípio de Processamento

As funções de comando criadas em um processador RISC consistem de muitas instruções pequenas e individuais, que realizam apenas uma única tarefa. O software aplicativo, que precisa ser recompilado especialmente para um processador RISC, realiza a tarefa de informar ao processador qual a combinação de seus comandos menores deve ser executada para completar uma operação maior.

Todos os comandos RISC são do mesmo tamanho, e há somente uma maneira de carregá-los e armazená-los. Além disto, uma vez que cada comando já está na forma de microcódigo, os processadores RISC não precisam de um passo extra para passar as instruções que eles recebem através de uma unidade que transforme os comandos complexos em microcódigos mais simples. Como resultado destas diferenças, os comandos RISC são carregados muito mais rapidamente que os comandos CISC.

Durante a compilação de software especificamente para um chip RISC, o compilador determina quais comandos não vão depender dos resultados de outros. Como estes comandos não têm de esperar por outros comandos, o processador pode executar simultaneamente até 10 comandos em paralelo.

Como o processador RISC está trabalhando com comandos mais simples, seu conjunto de circuitos também pode ser mais simples, Os comandos RISC passam por um número menor de transistores em circuitos mais curtos, desta forma os comandos são executados mais rapidamente. O resultado é que os processadores RISC geralmente necessitam apenas de um ciclo do relógio da CPU por instrução. O número de ciclos necessários para completar uma operação inteira depende do número de pequenos comandos que constituem essa operação. Em uma operação comparável, o tempo necessário para interpretar e executar as instruções RISC é bem menor que o tempo para se carregar e decifrar um comando CISC complexo e então executar cada um de seus componentes.

Volta

Resumo das Características

Conjunto de Instruções Simples: a arquitetura RISC, é constituída por um conjunto de instruções simples, instruções básicas, que compõem instruções mais complexas.
Instruções do Mesmo Tamanho: as instruções tem sempre um único tamanho, e uma única maneira de executá-las.
Uma Instrução por Ciclo de Máquina: todas as instruções são executadas em um único ciclo, fazendo com que o processador execute várias instruções ao mesmo tempo, tornando o processamento muito mais rápido Isto é possível devido a um tipo de tecnologia chamada de Pipelined.

Volta

32. Pipelined: Uma Técnica Fundamental

Os projetista de RISC, se preocupam principalmente, em criar técnicas e dispositivos que acelerem o processamento da informação. Uma dessas técnicas, é o Pipelined. O Pipelined é uma técnica em que o hardware processa mais de uma instrução de cada vez. Ele não espera o término de uma instrução para executar outra.Em uma máquina CISC típica, temos, basicamente, quatro fases para a execução: busca, decodificação, execução e escrita. Em uma máquina RISC, temos as mesmas fases, só que executadas em paralelo. Uma fase não precisa esperar a outra terminar, para que ela se inicie. Este procedimento, não diminui o tempo de execução da tarefa, mas melhora o processamento global.

Volta

33. Diferenças entre Arquiteturas RISC e CISC

A transição de CISC para RISC foi uma mudança radical na arquitetura. Os conjuntos de instruções foram mudados, sacrificando a compatibilidade binária para o desempenho. Reduzindo o conjunto de instruções, o processador cabia em um chip menor que permitia que os desenvolvedores aumentassem a velocidade do clock. Além disso, o processador poderia ser pipelineado e uma unidade de controle microcodificada tornou-se desnecessária. RISC, "resolve os casos comuns mais rápidos", era o princípio que conduziu a um aumento impressionante da performance comparado com os processadores CISC. Os processadores mais adiantados tais como IBM RT, SPARCv7 e MIPS R2000 aderiram completamente ao princípio fundamental RISC. Entretanto, enquanto a tecnologia avançava para aumentar os tamanhos dos dados e aumentar a densidade do transistor, os desenvolvedores do processador RISC começaram a considerar maneiras de usar esse espaço novo do chip. Alguns dos usos desse espaço incluíram:

Assim, a geração atual de processadores de desempenho elevado carrega poucas características dos processadores que iniciaram a revolução RISC.

Volta

Arquiteturas RISC

Nas arquiteturas RISC, a grande maioria dos processadores possuem 32 registros genéricos de 32 bits – para representar valores inteiros e/ou endereços de memória – para além de 32 registros de 32 bits para representação de valores em vírgula flutuante. Estes registros são considerados de uso genérico e podem ser usados explicitamente por qualquer instrução que aceita operandos de registros, com exceção de um registro que contenha o valor ZERO, que não pode ser alterado (só de leitura). Ainda visível ao programador está sempre também o apontador para a próxima instrução, o instruction pointer ou program counter.

Volta

Arquiteturas CISC

A existência de um grande número de registros nas arquiteturas RISC, aliado à evolução da tecnologia dos compiladores dos últimos anos (em especial, na geração de código), vem permitindo representar a maioria das variáveis escalares diretamente em registro, não havendo necessidade de recorrer com tanta freqüência à memória. Esta organização não foi contudo economicamente viável nas gerações anteriores de microprocessadores, com destaque para a família da Motorola (M680x0) e, ainda mais antiga, a família da Intel (ix86). Estes processadores dispunham de um menor nº de registros e , consequentemente, uma diferente organização que suportasse eficientemente diversos mecanismos de acesso à memória.

No caso da família M680x0, o programador tinha disponível dois bancos de 8 registros genéricos de 32 bits: um para dados (D) e outro para apontadores para a memória (A), suportando este último banco um variado leque de modos de endereçamento à memória. Apenas um dos registros (A7) é usado implicitamente em certas operações de manuseamento da stack.

A família Intel é mais complicada, por não ter variadamente registros de uso genérico. A arquitetura de base dispõe efetivamente de 4 registros para conter operandos aritméticos (A, B, C e D), mais 4 para trabalhar com apontadores para a memória (BP, SP, DI e SI) e outros 4 para lidar com uma memória segmentada (CS, DS, SS e ES; a única maneira de uma arquitetura de 16 bits poder acessar a mais de 64K células de memória). Cada um destes registros não pode ser considerado de uso genérico, pois quase todos eles são usados implicitamente (isto é, sem o programador explicitar o seu uso) em várias instruções (por exemplo, os registros A e D funcionam de acumuladores em operações de multiplicação e divisão, enquanto o registro C é usado implicitamente como variável de contagem em instruções de controle de ciclos). A situação complica-se ainda mais com a variação da dimensão dos registros na mesma família (de registros de 16 bits no i286 para registros de 32 bits no i386), pois o formato de instrução foi concebido para distinguir apenas operandos de 8 e de 16 bits, e um bit bastava; para garantir compatibilidade ao longo de toda a arquitetura, os novos processadores têm de distinguir operandos de 8, 16 e 32 bits, usando o mesmo formato de instrução.

Volta


Diferenças entre RISC e CISC

Todos os processadores dispõem de instruções de salto "de ida e volta", normalmente designados de instruções de chamadas em sub-rotinas: nestas, para além de se alterar o conteúdo do registro PC como qualquer instrução de salto, primeiro guarda-se o endereço de instrução que segue a instrução de salto (que se encontra no PC); nas arquiteturas CISC este valor é normalmente guardado na stack. Nas arquiteturas RISC esse valor é normalmente guardado num registro.

Volta

34. Conjunto de instruções de um processador RISC

O conjunto de instruções que cada processador suporta é bastante variado. Contudo é possível identificar e caracterizar grupos de instruções que se encontram presentes em qualquer arquitetura.

Para transferência de informação: integram este grupo as instruções que transferem informação entre registros e a memória (load/store), entre registros (simulado no Assembler do MIPS, e implementando com uma soma com o registro 0), diretamente entre posições de memória (suportado por exemplo, no M680x0, mas não disponível em qualquer arquitetura RISC), ou entre registros e a stack, com incremento/decremento automático do sp (disponível em qualquer arquitetura CISC, mas incomum em arquiteturas RISC);

Operações aritméticas, lógicas, ...: soma, subtração e multiplicação com inteiros e fp, e operações lógicas AND, OR, NOT, Shift/Left/Right são as mais comuns; alguns processadores suportam ainda a divisão, quer diretamente por hardware, quer por microprogramação.

Volta

35. Acesso a operandos em memória em CISC e RISC

Uma das conseqüências do fato das arquiteturas CISC disporem de um menor número de registros é a alocação das variáveis escalares, em regra, a posições de memória, enquanto que nas arquiteturas RISC, a regra era a alocação a registros. Atendendo ao modelo de programação estruturada nos anos 70, o fato da maioria das variáveis escalares serem locais a um dado procedimento, e à necessidade do modelo de programação ter de suportar o aninhamento e recursividade de procedimentos, as arquiteturas CISC necessitavam de um leque rico de modos de endereçamento à memória, para reduzir o gap semântico entre uma HLL e a linguagem máquina.

Resume-se aqui, as principais diferenças entre as arquiteturas CISC e RISC, nas facilidades de acesso a operandos que se encontram em memória:

CISC: grande riqueza na especificação de modos de endereçamento; exemplo do i86: modo absoluto; por registro indireto –(R), - (SP), (SP)+; por registro base –(Rb)+desloc8,16,32, (Rb)+(R), (Rb)+desloc8,16,32; com acessos indiretos à memória, isto é, com apontadores para as variáveis sem memória armazenados em células de memória.

RISC: apenas em operações load/store e apenas 1 ou 2 modos; exemplo do MIPS: apenas (R)+desloc16.

Operações lógicas e aritméticas em CISC e RISC Duas grandes diferenças se fazem notar entre estes 2 modelos: na localização dos operandos neste tipo de operações, e o nº de operandos que é possível especificar em cada instrução.

CISC: 1 ou mais operandos em memória (máx 1 no i86 e M68K); nem sempre se especificam 3 operandos (máx 2 no i86 eM68K).

RISC: operandos sempre em registros; 3 operandos especificados (1 dest, 2 fontes). O que é RISC?

Volta

36. Vantagens e Desvantagens do RISC


Vantagens


Velocidade:

Devido a tecnologia pipelined os processadores RISC alcançam duas a quatro vezes a performance dos processadores CISC usando tecnologia de semicondutor equivalente e os mesmos valores de clock.

Simplicidade do Hardware:

Pelo fato de um processador RISC trabalhar com instruções simples, o processador utiliza de menos espaço no chip, funções extras como circuito de gerenciamento de memória e unidade aritmética armazenada num mesmo chip. Chips menores permitem que o fabricante armazenem mais dispositivos em uma única pastilha, o que pode baixar consideravelmente o custo.

Instrução de máquina simples:

As instruções construídas para um processador RISC são simples e pequenas o que aumenta a sua performance.

Volta

Desvantagens:

A transição da arquitetura CISC para arquitetura RISC pode apresentar alguns problemas devido ao fato que os engenheiros de software podem ter problemas para fazer a transição do código de memória de maneira correta.

Qualidade do Código:

 

Volta


A performance de um processador RISC depende diretamente do código gerado pelo programador. No caso de um código mal desenvolvido o processador pode gastar um tempo demasiado na execução das instruções, isto faz com que a performance de uma máquina RISC dependa em grande parte da qualidade do código, gerado pelo programador.


Volta


Expansão do Código :

Volta



O fato da arquitetura CISC trabalhar com instrução única com ações complexas e as máquinas RISC trabalharem com instrução simples a transição do código pode acarretar problemas. O termo "expansão do código" refere-se ao aumento de tamanho que se obtém de um programa originalmente compilado para uma máquina CISC, ter sido recompilado para uma máquina RISC. A expansão vai depender da capacidade do programador e a natureza do conjunto de instruções de máquina.

Volta

37. Projeto de Sistema

Volta


Outra desvantagem que a arquitetura RISC apresenta é o fato de requerer sistema de memória rápida para alimentar suas instruções. Tipicamente sistemas baseados nesta arquitetura costumam apresentar grande quantidade de memória cache interna, conhecida como "first-level cache", o que encarece o projeto.

 

Volta

38. Resumo

A arquitetura RISC caracteriza-se por sua estrutura dinâmica, simples, objetiva e de grande velocidade. Trabalhando com um conjunto de instruções curtas e simples, consegue alcançar grande performance, que faz com que suas aplicações tenham grande potencial em Sistemas de Rede, Internet e Bancos de Dados.

Toda arquitetura tem suas vantagens e desvantagens. Se de um lado, esta arquitetura apresenta tantas qualidades, ela pode também se transformar num sistema de baixa performance se não for projetado de forma correta. Seus códigos tem de ser bem construídos e bem codificados para que se tenha alto desempenho. No geral, as máquinas baseadas nessa arquitetura, conquistam cada vez mais o mercado de alto nível, sendo responsável por grande parte dos sistemas de grande porte mundiais.

Volta

TÓPICOS
Para Saber Mais...

Intel Corporation

Advanced Micro Devices, Inc.

Cyrix Corporation

IBM

Tom´s Hardware Guide

Site do Prof. Gabriel Torres

Voltar

Atualizado em 13-Dez-2000.

Este site é melhor visualizado em 800 x 600, 16 milhões de cores e Microsoft Internet Explorer.

Dúvidas, critícas ou qualquer problema no site, favor entrar em contato com o WebMaster.

Informática