SlideShare una empresa de Scribd logo
1 de 5
Arquitetura de processadores RISC e CISC

                                                        Jaquiel de Souza Paim1

          Resumo  Este documento pretende fazer uma                       Estas três tecnologias são as precursoras na construção de
          ilustração, tanto técnica, quanto histórica em torno           máquinas mais rápidas.
          das arquiteturas de processadores RISC (Reduced
          Instruction Set Computer) e CISC (Complex                           A. Memória e armazenamento
          Instruction Set Computer), onde serão abordadas
          algumas peculiaridades de cada arquitetura. Além                    Na década de 70, as memórias eram caras e lentas até a
          destas peculiaridades, é possível fazer uma breve              chegada da memória RAM, que trouxe um pouco mais de
          comparação entre cada arquitetura, demonstrando                velocidade às máquinas. A memória secundária por sua vez,
          as vantagens e desvantagens de cada uma, não                   também era cara e lenta.
          deixando de ressaltar ainda a questão                                Durante este período, utilizar um volume muito grande
          mercadológica, tendo em vista que as questões em               de código na memória, desde o armazenamento secundário,
          torno das mesmas não estão restritas tão somente à             repercutia diretamente no seu desempenho. Para o código ser
          arquitetura empregada nos processadores RISC e                 considerado “bom”, deveria ser compacto, ocupando um
          CISC.                                                          pequeno espaço de memória, sendo que obtendo pouca
                                                                         memória, obtinha-se também um baixo custo no total e em
          Palavras-chave  CISC, RISC, Arquiteturas.                     todo o sistema.

                                                                              B. Compiladores
                          I. INTRODUÇÃO
    Ao abordar as arquiteturas RISC e CISC, não se deve                         Os compiladores neste período, exerciam um trabalho
considerar unicamente a tecnologia em si, mas acima de tudo              relativamente simples, de traduzir o código de uma
considerar que as tais, são estratégias adotadas por projetistas         linguagem de alto nível para uma de baixo nível.
para atingir um determinado número de objetivos definidos                Exemplificadamente de C, ou Pascal ou alguma outra para a
em relação a um conjunto de problemas, ou seja, filosofias de            linguagem assembly. O assembly era posteriormente
projeto, ou maneiras de pensar acerca de um determinado                  convertido em código de máquina, em um processo que
conjunto de problemas e suas soluções.                                   consumia bastante tempo, ainda que a tradução fosse correta,
    Em resumo, a filosofia CISC, se baseia na ideia de                   do contrário poderia se estimar uma demanda de tempo mais
produzir chips capazes de executar um grande número de                   elevada. A solução para obter um código compacto e
instruções, facilitando o trabalho dos desenvolvedores e dos             otimizado era programar em assembly.
compiladores. Em contrapartida, a filosofia RISC, se baseia
no uso de instruções simples, que são executadas                              C. VLSI
rapidamente pelo processador e podem ser combinadas para
desempenhar as funções de instruções mais complexas. A                              Em se tratando de VLSI, a tecnologia permitia
partir dessa premissa, foi que projetistas promoveram a                  densidades de transístores que seriam muito baixas se
evolução de um conjunto de condições tecnológicas                        comparadas com hoje. Não existia a possibilidade de colocar
existentes em um determinado momento, ou época, pois foi                 muitas funcionalidades em um único chip. Devido à
com base nas limitações existentes acerca destas condições,              necessidade de recursos (transístores), as máquinas CISC
que eles puderam compreender algumas necessidades.                       tinham suas unidades funcionais espalhadas por vários chips,
Considerando estas limitações, e as necessidades em                      o que afetava o desempenho do mesmo, devido ao alto tempo
consequência dela, tanto a arquitetura CISC, quanto a RISC               de espera entre a transferência de dados e entre cada um
foram abordagens que os projetistas propuseram como mais                 deles. Logo, uma implementação em um único chip, seria o
eficientes à suas épocas.                                                ideal. Já no início dos anos 80, nos primórdios do
    E para entendermos a evolução destas duas arquiteturas,              desenvolvimento da arquitetura RISC, um milhão de
precisamos         entender       também        acerca        de         transistores em um único chip era considerado bastante.
memória/armazenamento e compiladores em meados dos
anos 70 e início dos anos 80, além de VLSI.


1
 Acadêmico de Análise e Desenvolvimento de Sistemas, jaquiel.paim@gmail.com
II. CISC                             linguagem de alto nível fosse traduzida em, exatamente, uma
                                                                instrução assembly, então:
      A arquitetura CISC (Complex Instruction Set Computer,
em uma tradução literal, “Computador com um Conjunto
                                                                    • Os compiladores seriam mais fáceis de escrever. Isto
Reduzido de Instruções”) tem conjuntos de instruções
                                                                pouparia tempo e esforço para os programadores, reduzindo,
grandes, de tamanhos variáveis e com formatos complexos.
                                                                assim, os custos de desenvolvimento de software;
Processadores CISC são capazes de executar várias centenas
de instruções complexas diferentes, sendo extremamente
                                                                  • O código seria mais compacto, o que permitiria poupar
versátil. Estes processadores possuem uma micro
                                                                memória, reduzindo o custo global do hardware do sistema;
programação, ou seja, um conjunto de códigos e de
instruções que são gravados no processador, permitindo-lhe
                                                                    • Seria mais fácil fazer a detecção e correção de erros o
receber as instruções dos programas e executá-las. A
                                                                que, de novo, permitiria baixar os custos de desenvolvimento
possibilidade de o processador executar instruções complexas
                                                                de software e de manutenção.
facilita a programação de alto nível, diminuindo o código e
consequentemente o espaço utilizado em memória pelos
                                                                     Ao reduzir o tamanho dos programas conseguiam-se dois
programas. Em contrapartida, temos um menor desempenho
                                                                propósitos: por um lado era necessária uma menor quantidade
devido ao processador ter de executar instruções maiores e
                                                                de memória para armazenar o código; e por outro o tempo de
mais complexas. O projeto e a construção de processadores
                                                                execução era, também diminuído, pois havia menos linhas de
CISC tem um custo elevado, por conta de sua alta
                                                                código para executar.
complexidade e maior número de componentes internos do
                                                                          Além de implementar todo o tipo de instruções que
chip.
                                                                faziam um variado número de tarefas como copiar strings ou
      Uma instrução em um programa de alto nível é
                                                                converter valores para BCD entre muitas outras, havia outra
implementada por diversas instruções de processador, a mais
                                                                tática que os projetistas utilizavam para reduzir o tamanho do
baixo nível. Por exemplo, uma instrução de um programa que
                                                                código e a sua complexidade: os modos de endereçamento
imprime um conjunto de caracteres na tela é realizado em
                                                                complexos.
nível de processador por um conjunto de instruções.
                                                                    Uma vez carregados nos registos, os operandos poderiam
    Os microprocessadores são, em sua maioria, chips CISC.
                                                                ser multiplicados pela unidade de execução (ALU –
Um processador CISC suporta um conjunto maior de
                                                                Aritmetric Logic Unit). Utilizaríamos as seguintes linhas de
instruções, sendo cada instrução mais especializada; graças a
                                                                código para multiplicar o conteúdo das posições de memória
isso, ele pode executar, de modo direto, a maioria das
                                                                [2:3] e [5:2] e armazenar o resultado na posição [2:3]:
operações programadas pelos programas de alto nível.
Devido a isto, o número de instruções de processador para
                                                                   MOV [A, 2:3]
implementar uma instrução de mais alto nível são menores.
Mas quanto maior a quantidade de instruções que um
                                                                   MOV [B, 5:2]
processador suporta, mais lenta é a execução de cada uma
delas.
                                                                   MUL [A, B]
    Aqui está uma listagem das principais razões para se
                                                                   MOV [2:3, A]
utilizar este tipo de arquitetura [1]:
                                                                    Este exemplo de código explicita os passos que têm de ser
   • Reduzir as dificuldades de escrita de compiladores;
                                                                dados pelo processador para multiplicar os conteúdos de duas
                                                                posições de memória. Carregar os dois registos com o
   • Reduzir o custo global do sistema;
                                                                conteúdo da memória principal, multiplicar os dois números e
                                                                guardar o resultado de novo na memória principal. Se
   • Reduzir os custos de desenvolvimento de software;
                                                                quiséssemos tornar o assembly menos complicado e mais
                                                                compacto, poderíamos modificar a arquitetura, de maneira a
   • Reduzir drasticamente o software do sistema;
                                                                realizar a operação descrita com uma instrução apenas.
                                                                    Para atingir esse objetivo, a instrução MUL teria que ser
   • Reduzir a diferença semântica entre linguagens de
                                                                alterada de forma a aceitar como parâmetros duas posições de
   programação e máquina;
                                                                memória:
   • Fazer com que os programas escritos em linguagens
                                                                   MUL [2:3, 5:2]
   de alto nível fossem mais eficientemente;
                                                                   Evoluir de quatro instruções para apenas uma é um
   • Melhorar a compactação do código;
                                                                grande ganho de desempenho. Apesar de a “nova arquitetura”
                                                                ainda ter que carregar o conteúdo das duas posições de
   • Facilitar a detecção e correção de erros.
                                                                memória para os registos, multiplicá-los e voltar a armazenar
                                                                na memória o resultado – não há como contornar isso – todas
   Se uma instrução complexa escrita em uma
                                                                essas operações de baixo nível são feitas em hardware e são
invisíveis para o programador. Este é um exemplo de               investigadores questionassem se a implementação de todas
endereçamento complexo. Uma instrução assembly, na                estas instruções complexas e elaboradas em micro-código
realidade leva a cabo uma série complexa de operações. Uma        seria, realmente, o melhor caminho para fazer uso dos
vez mais, isto é um exemplo da filosofia CISC de transferir a     limitados recursos (transístores) existentes[2].
complexidade do software para o hardware.

                                                                                            III. RISC
 A. Micro Programação
                                                                           Para driblar o baixo desempenho dos processadores
    Outra das características das máquinas CISC era a             CISC, foi então criada à arquitetura RISC (Reduced
utilização de micro-código. A micro programação era mesmo         Instruction Set Computing, ou Computador com um
uma das características primordiais que permitia aos              Conjunto Reduzido de Instruções), que, ao contrário da
projetistas a implementação de instruções complexas em            arquitetura CISC, suporta algumas poucas instruções simples.
hardware [2]. Para melhor compreender o que é a micro-            Em consequência disso, processadores dessa arquitetura tem
programação, vamos considerar, a execução direta. Usando          construção mais simples e possuem menos componentes em
execução direta, a máquina carrega a instrução da memória,        seu chip, diminuindo seu custo final. Além de baixo custo,
descodifica-a e envia-a para a unidade de execução. Esta          também há maior desempenho, pois por haver menos
unidade de execução “pega” na instrução à sua entrada e           circuitos internos nestes processadores, encontram-se
ativa alguns circuitos que levam a cabo a tarefa. Se, por         menores temperaturas durante seu funcionamento,
exemplo, a máquina carrega a instrução ADD com                    possibilitando produzir processadores com clocks
operadores em vírgula flutuante e a fornece à unidade de          ainda maiores. Em 1997, por exemplo, já haviam
execução, existe, em algum lugar, um circuito que a carrega e     processadores RISC, como os Alpha, operando a 600 Mhz.
direciona as unidades de execução para garantir que todas as                Contudo, devido a processadores desta arquitetura
operações de deslocamento, adição e normalização são              trabalharem com menos instruções, a programação de alto
executadas corretamente. A execução direta é, na realidade, o     nível para os mesmos é mais trabalhosa, pois para se usar
que se poderia esperar que acontecesse dentro de um               alguma função complexa encontrada em processadores CISC,
computador se não o houvesse conhecimento do micro-               deve-se juntar mais de uma instrução simples.
código.                                                                Um processador RISC reconhece um número limitado de
       Com a micro programação, é quase como termos um            instruções, que, em contrapartida, são otimizadas para que
mini-processador dentro do processador. A unidade de              sejam executadas com mais rapidez. Portanto, a arquitetura
execução é um processador de microcódigo que executa              RISC reduz o conjunto de instruções ao mínimo, e as
micro-instruções. Os projetistas usam estas micro-instruções      instruções não implementadas diretamente são realizadas por
para escrever micro-programas que são armazenados numa            uma combinação de instruções. Mas em compensação, um
memória de controle especial.                                     programa é implementado por um número maior de
    Quando uma instrução normal de um programa é                  instruções.
carregada da memória, descodificada e entregue ao                        Muitas das implementações da arquitetura CISC eram
processador de micro-código, este último executa a sub-           tão complexas que eram distribuídas por vários chips. Esta
rotina de micro-código adequada. Esta sub-rotina “diz” às         situação não era a ideal. Era necessário uma solução num
várias unidades funcionais o que fazer e como fazer.              único chip, uma solução que fizesse melhor uso dos escassos
                                                                  recurso disponibilizados (transístores). No entanto, para que
    No início, o micro-código era lento. Mas ainda assim, a       todo um processador coubesse num só chip, algumas das suas
ROM utilizada para a memória de controle era cerca de 10          funcionalidades teriam que ser deixadas de fora. Nesse
vezes mais rápida que a memória magnética da altura, por          intuito, realizaram-se estudos destinados a descobrir que tipos
isso o processador de micro-código ainda conseguia estar          de situações ocorrem mais frequentemente na execução de
suficientemente “avançado” para oferecer um desempenho            aplicações. A ideia era descobrir em que tipo de tarefas o
razoável [2].                                                     processador passava mais tempo e otimizar essas mesmas
                                                                  tarefas.
    Contudo, à medida que os micro programas cresceram                  Se tivessem que ser feitos compromissos, estes deviam
para fazer frente ao crescente número de instruções, alguns       ser feitos em favor da velocidade de execução das tarefas nas
problemas começaram a surgir. Para manter um bom                  quais o processador passa mais tempo trabalhando, ainda que
desempenho, o micro-código tinha que ser altamente                isso pudesse atrasar outras tarefas não tão frequentes. Esta
otimizado, eficiente e bastante compacto para que os custos       abordagem quantitativa, de fazer de forma mais rápida as
de memória não começassem a crescer desmesuradamente.             tarefas mais comuns, provocou a inversão da filosofia
Como os micro programas eram tão grandes, tornou-se difícil       iniciada pelos CISC e a complexidade teve que ser retirada
testá-los , detectar e corrigir erros. Como resultado, o micro-   do hardware e ser passada para o software.
código incluído nas máquinas que vinham para o mercado                Os entusiastas da arquitetura diziam que o suporte para as
tinha, por vezes, erros e tinha que ser corrigido inúmeras        linguagens de alto nível poderia ser mais eficiente se fosse
vezes no terreno. Foram estas dificuldades de implementação       implementada em software, gastar recursos (transístores)
do micro-código que levaram a que os                              preciosos para suportar as linguagens de alto nível em
hardware era um desperdício. Esses recursos poderiam ser         armazenar as funcionalidades necessárias, mas sim, o que
utilizados em outras tecnologias para melhorar o                 fazer com todos os transístores disponibilizados.
desempenho. E quando eles tiveram que decidir quais as
funcionalidades que teriam que ser retiradas, o suporte para o       A. Conjunto de Instruções
micro-código foi o primeiro, e com ele também um grupo de
instruções complexas que, supostamente, tornava o trabalho             Uma instrução é um comando codificado em 0’s e 1’s
dos compiladores e dos programadores mais fácil.                 que leva o processador a fazer algo. Quando um programador
         Não só o número de instruções foi reduzido, mas         escreve um programa em C, por exemplo, o compilador
também o tamanho das mesmas. Foi decidido que todas as           traduz cada linha de código C em uma ou mais instruções do
instruções RISC deveriam, sempre que possível, demorar           processador. Para que os programadores possam “ver” estas
apenas um ciclo de clock ao terminar a sua execução. A desta     instruções não tendo que lidar com 0’s e 1’s, as instruções
decisão foi baseada em algumas observações feitas pelos          são representadas por mnemônicas – por exemplo MOV, que
investigadores. Tudo o que poderia ser feito usando as           copia um valor de uma localização para outra ou ADD, que
instruções de micro-código, também poderia ser feito com         adiciona dois valores. A seguinte linha de código adiciona
pequenas e rápidas instruções de assembly. A memória que         dois valores (b e c) e coloca o resultado em a:
estava a ser usada para armazenar o micro-código, poderia
simplesmente ser usada para armazenar o assembler, assim a       A=B+C
necessidade de micro-código seria pura e simplesmente
eliminada. É por esta razão que muitas das instruções de uma         Um compilador de C poderia traduzir isto na seguinte
máquina RISC correspondem à micro-instruções numa                sequência de instruções:
máquina CISC [2].
       Na arquitetura RISC, a função do compilador é muito       MOV AX, B
mais proeminente. O sucesso deste tipo de arquitetura
depende fortemente da “inteligência” e nível de otimização       ADD AX, C
dos compiladores que se “aproveitam” da maior
responsabilidade que lhes é concedida para poderem debitar       MOV A, AX
código mais otimizado. O ato de transferir o fardo da
otimização do código do hardware para o compilador foi um             A primeira instrução copia o conteúdo da localização de
dos mais importantes avanços da arquitetura RISC. Como o         memória que contém o valor B para o registo AX do
hardware passou a ser mais simples, isto significava que o       processador (um registo é uma localização de armazenamento
software tinha que absorver alguma da complexidade               dentro do processador que pode conter uma certa quantidade
examinando agressivamente o código e fazendo um uso              de dados, normalmente 16 ou 32 bits. Sendo uma parte
prudente do pequeno conjunto de instruções e grande número       integrante do processador, os acessos aos registos são
de registos típicos desta arquitetura. Assim, as máquinas        muitíssimo mais rápidos que os acessos à memória). A
RISC dedicavam os seus limitados recursos (transístores) a       segunda instrução adiciona o valor c ao conteúdo de AX e a
providenciar um ambiente em que o código poderia ser             terceira copia o resultado, que está em AX, para a localização
executado tão depressa quanto o possível, confiando no           onde a variável A está armazenada. Qualquer programa, por
compilador para fazer o código compacto e otimizado.             mais complexo que seja, é traduzido, em última análise, em
                                                                 séries de instruções.
                                                                           Os programas modernos contêm, frequentemente,
                      IV. CISC x RISC                            centenas de milhares de linhas de código. Os sistemas
                                                                 operacionais são ainda mais complexos. O Microsoft
     É inevitável não exercer uma breve comparação entre         Windows 95, por exemplo contém cerca de 10 milhões de
estas duas arquiteturas, diante de todas as questões que foram   linhas de código, a maior parte escrita em C, e o Windows
levantadas acerca de cada uma delas.                             NT tem mais de 5 milhões de linhas de código escritas em C
       Qualquer pessoa que tenha instalado recentemente um       e C++. Imagine traduzir 1 milhão de linhas de código C num
programa da Microsoft sabe que muitas das companhias que         conjunto de instruções, de uma a vinte ou trinta instruções
desenvolvem software já não têm em consideração as               por linha de código. Desta maneira fica mais fácil perceber o
limitações de memória. Assim, as preocupações com o              porquê de o software de hoje em dia ser tão complicado – e
tamanho do código que deram origem ao vasto conjunto de          tão difícil de corrigir.
instruções da arquitetura CISC já não existem mais.                     O objetivo original dos projetistas de chips RISC era
      O desenvolvimento dos compiladores também sofreu um        limitar o número de instruções suportadas pelo chip de modo
avanço nos últimos anos. A nova geração de arquiteturas          a que fosse possível alocar um número suficiente de
(como o IA-64 ou Merced da Intel) depende apenas do              transístores a cada uma delas, para que a sua execução
compilador para ordenar as instruções tendo em vista a           precisasse apenas de um ciclo de clock para se completar.
máxima taxa de instruções executadas.                                     Em vez de disponibilizar uma instrução MUL, por
       O número de transístores que “cabem” numa placa de        exemplo, o projetista faria com que a instrução ADD
silício é extremamente elevado e com tendência a crescer         executasse em 1 ciclo de clock. Então o compilador
ainda mais. O problema agora já não é a falta de espaço para
poderia fazer a multiplicação de A e B somando a ele próprio   PCs orbitavam não apenas em torno do OS X e dos softwares
B vezes ou vice versa. Um CPU CISC poderia multiplicar 10      para a plataforma, mas também nas diferenças entre as duas
e 5 da seguinte forma:                                         famílias de processadores.

MOV AX, 10
                                                                                 V. ARQUITETURA HÍBRIDA
MOV BX, 5
                                                                      Devido a cada uma das duas arquiteturas terem suas
MUL BX                                                         peculiaridades. Os fabricantes de processadores decidiram
                                                               unir ambas em uma só, formando uma arquitetura híbrida.
enquanto um CPU RISC faria o mesmo de outro modo:              Num processador RISC, há um (ou mais) circuitos CISC, e
                                                               vice-versa. Desta forma, o processador trabalha mais rápido
MOV AX, 0                                                      em instruções que requer maior demanda (RISC), devido à
                                                               maioria das instruções executadas serem de pouca
MOV BX, 10                                                     complexidade e, quando necessário, haverá a disponibilidade
                                                               de se executar instruções complexas, encontradas em
MOV CX, 5                                                      processadores CISC. Atualmente, grande parte dos
                                                               processadores adota este conceito.
begin:

ADD AX, BX
                                                                                      VI. CONCLUSÃO
loop begin; loop CX vezes                                          Pudemos perceber, analisando algumas características de
                                                               cada arquitetura, que a princípio, ambas surgiram como
é claro que este é apenas um exemplo ilustrativo, pois os      esforços para não apenas revolucionar, uma arquitetura
chips RISC atuais têm, de fato, instruções de multiplicação.   existente, como também obter maior e melhor desempenho
                                                               de tarefas ou rotinas de processamento de dados, que até dado
                                                               momento eram consideradas ineficientes.
    B. Características comerciais                                  É válido ressaltar também, que foram filosofias (ou linhas
                                                               de desenvolvimento) diferentes para solucionar um mesmo
         Durante grande parte da história dos computadores     problema. E ambas também desempenharam um marco
pessoais, o modelo predominante dos microprocessadores         histórico de disputa não apenas filosófico e tecnológico, de
tem sido da Intel Corporation. O primeiro processador no       diferentes ideias e métodos, mas de disputa mercadológica.
IBM PC foi o Intel 8088. As gerações seguintes de                  Porém, em contrapartida a tudo isso, é notório que tanto
processadores Intel foram da família 80X86 – 8086, 80286,      uma arquitetura, quanto outra, apresentam vantagens e
80386, 80486. Todos eram versões elaboradas do 8088            desvantagens, e atualmente pode-se tirar proveito do
original, mas com desempenho melhorado de duas maneiras        aprendizado adquirido ao longo destes anos, e unir o melhor
– operando mais rapidamente ou manejando mais dados            das duas opções, em busca de melhores resultados.
simultaneamente. O 8088, por exemplo, operava a 4,7 Mhz –
ou 4,7 milhões de oscilações por segundo – e alguns chips
80486 vão tão rápido quanto 133 MHz. O 8088 conseguia              REFERÊNCIAS
manejar 8 bits de dados por vez, enquanto o 80486 maneja 32
bits internamente. Os processadores Intel até o 80486 eram     [1] David R. Ditzel, David A. Patterson, “Retrospective on HLLCA. 25 years
                                                                    of the international symposia on Computer architecture (selected
baseados na filosofia CISC.                                         papers)”, 1998.
      Projetos RISC são encontrados em processadores mais
novos, entre eles o DEC Alpha, o RISC 6000 da IBM, o           [2] David A. Patterson, “Reduced Instruction Set Computers”, Commun.
processador Power PC e, embora a Intel não chame os            ACM 28, Jan. 1985.
processadores Pentium de chips RISC, eles têm muito em
                                                                   SILVA, Luís Filipe; ANTUNES, Vítor José Marques.Comparação entre
comum com o padrão RISC de executar códigos. A Apple           as arquitecturas de processadores RISC e CISC. Porto, 9 p. Trabalho não
desenvolveu, sob a arquitetura RISC, em parceria com a         publicado.
Motorola e a IBM, o chip PowerPC, com mais poder de
processamento que o chip Pentium. Ele equipa a linha de            Guia do Hardware. Disponível em:
                                                               <http://www.hardware.com.br>
microprocessadores MakPower (nos modelos 6100, 7100,
8100).
     Muito se discutiu sobre as vantagens e desvantagens dos       Clube do Hardware. Disponível em:
processadores PowerPC em relação aos chips x86. O              <http://www.clubedohardware.com.br>
principal reduto dos chips PowerPC eram os Macs (com todo
o misticismo envolvido), enquanto os PCs eram o território
dos chips x86. Com isso, as discussões em torno dos Macs e

Más contenido relacionado

La actualidad más candente

Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threadsMarcio Machado Pereira
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Joao Galdino Mello de Souza
 
Sistemas operacionais e multimidia
Sistemas operacionais e multimidiaSistemas operacionais e multimidia
Sistemas operacionais e multimidiaWesley Rabêlo
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
Sistemas Operacionais Multimidia Cap7 Tanenbaum
Sistemas Operacionais Multimidia   Cap7 TanenbaumSistemas Operacionais Multimidia   Cap7 Tanenbaum
Sistemas Operacionais Multimidia Cap7 Tanenbaumandfelipe
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Carlos Roberto IV
 

La actualidad más candente (13)

Processadores RISC
Processadores RISCProcessadores RISC
Processadores RISC
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Sistemas operacionais e multimidia
Sistemas operacionais e multimidiaSistemas operacionais e multimidia
Sistemas operacionais e multimidia
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Sistemas Operacionais Multimidia Cap7 Tanenbaum
Sistemas Operacionais Multimidia   Cap7 TanenbaumSistemas Operacionais Multimidia   Cap7 Tanenbaum
Sistemas Operacionais Multimidia Cap7 Tanenbaum
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015
 
Lab so-abertos-unidade9
Lab so-abertos-unidade9Lab so-abertos-unidade9
Lab so-abertos-unidade9
 
070498 t2
070498 t2070498 t2
070498 t2
 

Similar a Arquiteturas RISC CISC: Comparação entre as Arquiteturas

Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...César Júlio
 
Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e riscTiago
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesCarlos Pereira
 
Introdução risc x cisc
Introdução risc x ciscIntrodução risc x cisc
Introdução risc x ciscuembley
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladoresAlyson Cavalcante
 
Programando os Microcontroladores PIC
Programando os Microcontroladores PICProgramando os Microcontroladores PIC
Programando os Microcontroladores PICFabio Souza
 
Uma introdução à Computação Quântica com Q#
Uma introdução à Computação Quântica com Q#Uma introdução à Computação Quântica com Q#
Uma introdução à Computação Quântica com Q#Celso Junior
 
Palestra PET.Com - Sistemas Embarcados
Palestra PET.Com - Sistemas EmbarcadosPalestra PET.Com - Sistemas Embarcados
Palestra PET.Com - Sistemas EmbarcadosPET Computação
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresEduardo de Lucena Falcão
 
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresAmbiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresEduardo de Lucena Falcão
 
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...Marcelo Barros de Almeida
 
Augusto loureiro sistemas microprocessados
Augusto loureiro   sistemas microprocessadosAugusto loureiro   sistemas microprocessados
Augusto loureiro sistemas microprocessadosLorena Barreto
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16Gabriel Lima
 
3b5d17 748a8b99e224a1bf91f42123e5388634
3b5d17 748a8b99e224a1bf91f42123e53886343b5d17 748a8b99e224a1bf91f42123e5388634
3b5d17 748a8b99e224a1bf91f42123e5388634JADSON SANTOS
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaLincoln Lamas
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Embarcados
 

Similar a Arquiteturas RISC CISC: Comparação entre as Arquiteturas (20)

Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
 
Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e risc
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruções
 
Introdução risc x cisc
Introdução risc x ciscIntrodução risc x cisc
Introdução risc x cisc
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
Programando os Microcontroladores PIC
Programando os Microcontroladores PICProgramando os Microcontroladores PIC
Programando os Microcontroladores PIC
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Uma introdução à Computação Quântica com Q#
Uma introdução à Computação Quântica com Q#Uma introdução à Computação Quântica com Q#
Uma introdução à Computação Quântica com Q#
 
Palestra PET.Com - Sistemas Embarcados
Palestra PET.Com - Sistemas EmbarcadosPalestra PET.Com - Sistemas Embarcados
Palestra PET.Com - Sistemas Embarcados
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
 
Transputer
TransputerTransputer
Transputer
 
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresAmbiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
 
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
Augusto loureiro sistemas microprocessados
Augusto loureiro   sistemas microprocessadosAugusto loureiro   sistemas microprocessados
Augusto loureiro sistemas microprocessados
 
Apresentação sobre o kernel Linux v2.0
Apresentação sobre o kernel Linux v2.0Apresentação sobre o kernel Linux v2.0
Apresentação sobre o kernel Linux v2.0
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
3b5d17 748a8b99e224a1bf91f42123e5388634
3b5d17 748a8b99e224a1bf91f42123e53886343b5d17 748a8b99e224a1bf91f42123e5388634
3b5d17 748a8b99e224a1bf91f42123e5388634
 
Gcc
GccGcc
Gcc
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
 

Arquiteturas RISC CISC: Comparação entre as Arquiteturas

  • 1. Arquitetura de processadores RISC e CISC Jaquiel de Souza Paim1 Resumo  Este documento pretende fazer uma Estas três tecnologias são as precursoras na construção de ilustração, tanto técnica, quanto histórica em torno máquinas mais rápidas. das arquiteturas de processadores RISC (Reduced Instruction Set Computer) e CISC (Complex A. Memória e armazenamento Instruction Set Computer), onde serão abordadas algumas peculiaridades de cada arquitetura. Além Na década de 70, as memórias eram caras e lentas até a destas peculiaridades, é possível fazer uma breve chegada da memória RAM, que trouxe um pouco mais de comparação entre cada arquitetura, demonstrando velocidade às máquinas. A memória secundária por sua vez, as vantagens e desvantagens de cada uma, não também era cara e lenta. deixando de ressaltar ainda a questão Durante este período, utilizar um volume muito grande mercadológica, tendo em vista que as questões em de código na memória, desde o armazenamento secundário, torno das mesmas não estão restritas tão somente à repercutia diretamente no seu desempenho. Para o código ser arquitetura empregada nos processadores RISC e considerado “bom”, deveria ser compacto, ocupando um CISC. pequeno espaço de memória, sendo que obtendo pouca memória, obtinha-se também um baixo custo no total e em Palavras-chave  CISC, RISC, Arquiteturas. todo o sistema. B. Compiladores I. INTRODUÇÃO Ao abordar as arquiteturas RISC e CISC, não se deve Os compiladores neste período, exerciam um trabalho considerar unicamente a tecnologia em si, mas acima de tudo relativamente simples, de traduzir o código de uma considerar que as tais, são estratégias adotadas por projetistas linguagem de alto nível para uma de baixo nível. para atingir um determinado número de objetivos definidos Exemplificadamente de C, ou Pascal ou alguma outra para a em relação a um conjunto de problemas, ou seja, filosofias de linguagem assembly. O assembly era posteriormente projeto, ou maneiras de pensar acerca de um determinado convertido em código de máquina, em um processo que conjunto de problemas e suas soluções. consumia bastante tempo, ainda que a tradução fosse correta, Em resumo, a filosofia CISC, se baseia na ideia de do contrário poderia se estimar uma demanda de tempo mais produzir chips capazes de executar um grande número de elevada. A solução para obter um código compacto e instruções, facilitando o trabalho dos desenvolvedores e dos otimizado era programar em assembly. compiladores. Em contrapartida, a filosofia RISC, se baseia no uso de instruções simples, que são executadas C. VLSI rapidamente pelo processador e podem ser combinadas para desempenhar as funções de instruções mais complexas. A Em se tratando de VLSI, a tecnologia permitia partir dessa premissa, foi que projetistas promoveram a densidades de transístores que seriam muito baixas se evolução de um conjunto de condições tecnológicas comparadas com hoje. Não existia a possibilidade de colocar existentes em um determinado momento, ou época, pois foi muitas funcionalidades em um único chip. Devido à com base nas limitações existentes acerca destas condições, necessidade de recursos (transístores), as máquinas CISC que eles puderam compreender algumas necessidades. tinham suas unidades funcionais espalhadas por vários chips, Considerando estas limitações, e as necessidades em o que afetava o desempenho do mesmo, devido ao alto tempo consequência dela, tanto a arquitetura CISC, quanto a RISC de espera entre a transferência de dados e entre cada um foram abordagens que os projetistas propuseram como mais deles. Logo, uma implementação em um único chip, seria o eficientes à suas épocas. ideal. Já no início dos anos 80, nos primórdios do E para entendermos a evolução destas duas arquiteturas, desenvolvimento da arquitetura RISC, um milhão de precisamos entender também acerca de transistores em um único chip era considerado bastante. memória/armazenamento e compiladores em meados dos anos 70 e início dos anos 80, além de VLSI. 1 Acadêmico de Análise e Desenvolvimento de Sistemas, jaquiel.paim@gmail.com
  • 2. II. CISC linguagem de alto nível fosse traduzida em, exatamente, uma instrução assembly, então: A arquitetura CISC (Complex Instruction Set Computer, em uma tradução literal, “Computador com um Conjunto • Os compiladores seriam mais fáceis de escrever. Isto Reduzido de Instruções”) tem conjuntos de instruções pouparia tempo e esforço para os programadores, reduzindo, grandes, de tamanhos variáveis e com formatos complexos. assim, os custos de desenvolvimento de software; Processadores CISC são capazes de executar várias centenas de instruções complexas diferentes, sendo extremamente • O código seria mais compacto, o que permitiria poupar versátil. Estes processadores possuem uma micro memória, reduzindo o custo global do hardware do sistema; programação, ou seja, um conjunto de códigos e de instruções que são gravados no processador, permitindo-lhe • Seria mais fácil fazer a detecção e correção de erros o receber as instruções dos programas e executá-las. A que, de novo, permitiria baixar os custos de desenvolvimento possibilidade de o processador executar instruções complexas de software e de manutenção. facilita a programação de alto nível, diminuindo o código e consequentemente o espaço utilizado em memória pelos Ao reduzir o tamanho dos programas conseguiam-se dois programas. Em contrapartida, temos um menor desempenho propósitos: por um lado era necessária uma menor quantidade devido ao processador ter de executar instruções maiores e de memória para armazenar o código; e por outro o tempo de mais complexas. O projeto e a construção de processadores execução era, também diminuído, pois havia menos linhas de CISC tem um custo elevado, por conta de sua alta código para executar. complexidade e maior número de componentes internos do Além de implementar todo o tipo de instruções que chip. faziam um variado número de tarefas como copiar strings ou Uma instrução em um programa de alto nível é converter valores para BCD entre muitas outras, havia outra implementada por diversas instruções de processador, a mais tática que os projetistas utilizavam para reduzir o tamanho do baixo nível. Por exemplo, uma instrução de um programa que código e a sua complexidade: os modos de endereçamento imprime um conjunto de caracteres na tela é realizado em complexos. nível de processador por um conjunto de instruções. Uma vez carregados nos registos, os operandos poderiam Os microprocessadores são, em sua maioria, chips CISC. ser multiplicados pela unidade de execução (ALU – Um processador CISC suporta um conjunto maior de Aritmetric Logic Unit). Utilizaríamos as seguintes linhas de instruções, sendo cada instrução mais especializada; graças a código para multiplicar o conteúdo das posições de memória isso, ele pode executar, de modo direto, a maioria das [2:3] e [5:2] e armazenar o resultado na posição [2:3]: operações programadas pelos programas de alto nível. Devido a isto, o número de instruções de processador para MOV [A, 2:3] implementar uma instrução de mais alto nível são menores. Mas quanto maior a quantidade de instruções que um MOV [B, 5:2] processador suporta, mais lenta é a execução de cada uma delas. MUL [A, B] Aqui está uma listagem das principais razões para se MOV [2:3, A] utilizar este tipo de arquitetura [1]: Este exemplo de código explicita os passos que têm de ser • Reduzir as dificuldades de escrita de compiladores; dados pelo processador para multiplicar os conteúdos de duas posições de memória. Carregar os dois registos com o • Reduzir o custo global do sistema; conteúdo da memória principal, multiplicar os dois números e guardar o resultado de novo na memória principal. Se • Reduzir os custos de desenvolvimento de software; quiséssemos tornar o assembly menos complicado e mais compacto, poderíamos modificar a arquitetura, de maneira a • Reduzir drasticamente o software do sistema; realizar a operação descrita com uma instrução apenas. Para atingir esse objetivo, a instrução MUL teria que ser • Reduzir a diferença semântica entre linguagens de alterada de forma a aceitar como parâmetros duas posições de programação e máquina; memória: • Fazer com que os programas escritos em linguagens MUL [2:3, 5:2] de alto nível fossem mais eficientemente; Evoluir de quatro instruções para apenas uma é um • Melhorar a compactação do código; grande ganho de desempenho. Apesar de a “nova arquitetura” ainda ter que carregar o conteúdo das duas posições de • Facilitar a detecção e correção de erros. memória para os registos, multiplicá-los e voltar a armazenar na memória o resultado – não há como contornar isso – todas Se uma instrução complexa escrita em uma essas operações de baixo nível são feitas em hardware e são
  • 3. invisíveis para o programador. Este é um exemplo de investigadores questionassem se a implementação de todas endereçamento complexo. Uma instrução assembly, na estas instruções complexas e elaboradas em micro-código realidade leva a cabo uma série complexa de operações. Uma seria, realmente, o melhor caminho para fazer uso dos vez mais, isto é um exemplo da filosofia CISC de transferir a limitados recursos (transístores) existentes[2]. complexidade do software para o hardware. III. RISC A. Micro Programação Para driblar o baixo desempenho dos processadores Outra das características das máquinas CISC era a CISC, foi então criada à arquitetura RISC (Reduced utilização de micro-código. A micro programação era mesmo Instruction Set Computing, ou Computador com um uma das características primordiais que permitia aos Conjunto Reduzido de Instruções), que, ao contrário da projetistas a implementação de instruções complexas em arquitetura CISC, suporta algumas poucas instruções simples. hardware [2]. Para melhor compreender o que é a micro- Em consequência disso, processadores dessa arquitetura tem programação, vamos considerar, a execução direta. Usando construção mais simples e possuem menos componentes em execução direta, a máquina carrega a instrução da memória, seu chip, diminuindo seu custo final. Além de baixo custo, descodifica-a e envia-a para a unidade de execução. Esta também há maior desempenho, pois por haver menos unidade de execução “pega” na instrução à sua entrada e circuitos internos nestes processadores, encontram-se ativa alguns circuitos que levam a cabo a tarefa. Se, por menores temperaturas durante seu funcionamento, exemplo, a máquina carrega a instrução ADD com possibilitando produzir processadores com clocks operadores em vírgula flutuante e a fornece à unidade de ainda maiores. Em 1997, por exemplo, já haviam execução, existe, em algum lugar, um circuito que a carrega e processadores RISC, como os Alpha, operando a 600 Mhz. direciona as unidades de execução para garantir que todas as Contudo, devido a processadores desta arquitetura operações de deslocamento, adição e normalização são trabalharem com menos instruções, a programação de alto executadas corretamente. A execução direta é, na realidade, o nível para os mesmos é mais trabalhosa, pois para se usar que se poderia esperar que acontecesse dentro de um alguma função complexa encontrada em processadores CISC, computador se não o houvesse conhecimento do micro- deve-se juntar mais de uma instrução simples. código. Um processador RISC reconhece um número limitado de Com a micro programação, é quase como termos um instruções, que, em contrapartida, são otimizadas para que mini-processador dentro do processador. A unidade de sejam executadas com mais rapidez. Portanto, a arquitetura execução é um processador de microcódigo que executa RISC reduz o conjunto de instruções ao mínimo, e as micro-instruções. Os projetistas usam estas micro-instruções instruções não implementadas diretamente são realizadas por para escrever micro-programas que são armazenados numa uma combinação de instruções. Mas em compensação, um memória de controle especial. programa é implementado por um número maior de Quando uma instrução normal de um programa é instruções. carregada da memória, descodificada e entregue ao Muitas das implementações da arquitetura CISC eram processador de micro-código, este último executa a sub- tão complexas que eram distribuídas por vários chips. Esta rotina de micro-código adequada. Esta sub-rotina “diz” às situação não era a ideal. Era necessário uma solução num várias unidades funcionais o que fazer e como fazer. único chip, uma solução que fizesse melhor uso dos escassos recurso disponibilizados (transístores). No entanto, para que No início, o micro-código era lento. Mas ainda assim, a todo um processador coubesse num só chip, algumas das suas ROM utilizada para a memória de controle era cerca de 10 funcionalidades teriam que ser deixadas de fora. Nesse vezes mais rápida que a memória magnética da altura, por intuito, realizaram-se estudos destinados a descobrir que tipos isso o processador de micro-código ainda conseguia estar de situações ocorrem mais frequentemente na execução de suficientemente “avançado” para oferecer um desempenho aplicações. A ideia era descobrir em que tipo de tarefas o razoável [2]. processador passava mais tempo e otimizar essas mesmas tarefas. Contudo, à medida que os micro programas cresceram Se tivessem que ser feitos compromissos, estes deviam para fazer frente ao crescente número de instruções, alguns ser feitos em favor da velocidade de execução das tarefas nas problemas começaram a surgir. Para manter um bom quais o processador passa mais tempo trabalhando, ainda que desempenho, o micro-código tinha que ser altamente isso pudesse atrasar outras tarefas não tão frequentes. Esta otimizado, eficiente e bastante compacto para que os custos abordagem quantitativa, de fazer de forma mais rápida as de memória não começassem a crescer desmesuradamente. tarefas mais comuns, provocou a inversão da filosofia Como os micro programas eram tão grandes, tornou-se difícil iniciada pelos CISC e a complexidade teve que ser retirada testá-los , detectar e corrigir erros. Como resultado, o micro- do hardware e ser passada para o software. código incluído nas máquinas que vinham para o mercado Os entusiastas da arquitetura diziam que o suporte para as tinha, por vezes, erros e tinha que ser corrigido inúmeras linguagens de alto nível poderia ser mais eficiente se fosse vezes no terreno. Foram estas dificuldades de implementação implementada em software, gastar recursos (transístores) do micro-código que levaram a que os preciosos para suportar as linguagens de alto nível em
  • 4. hardware era um desperdício. Esses recursos poderiam ser armazenar as funcionalidades necessárias, mas sim, o que utilizados em outras tecnologias para melhorar o fazer com todos os transístores disponibilizados. desempenho. E quando eles tiveram que decidir quais as funcionalidades que teriam que ser retiradas, o suporte para o A. Conjunto de Instruções micro-código foi o primeiro, e com ele também um grupo de instruções complexas que, supostamente, tornava o trabalho Uma instrução é um comando codificado em 0’s e 1’s dos compiladores e dos programadores mais fácil. que leva o processador a fazer algo. Quando um programador Não só o número de instruções foi reduzido, mas escreve um programa em C, por exemplo, o compilador também o tamanho das mesmas. Foi decidido que todas as traduz cada linha de código C em uma ou mais instruções do instruções RISC deveriam, sempre que possível, demorar processador. Para que os programadores possam “ver” estas apenas um ciclo de clock ao terminar a sua execução. A desta instruções não tendo que lidar com 0’s e 1’s, as instruções decisão foi baseada em algumas observações feitas pelos são representadas por mnemônicas – por exemplo MOV, que investigadores. Tudo o que poderia ser feito usando as copia um valor de uma localização para outra ou ADD, que instruções de micro-código, também poderia ser feito com adiciona dois valores. A seguinte linha de código adiciona pequenas e rápidas instruções de assembly. A memória que dois valores (b e c) e coloca o resultado em a: estava a ser usada para armazenar o micro-código, poderia simplesmente ser usada para armazenar o assembler, assim a A=B+C necessidade de micro-código seria pura e simplesmente eliminada. É por esta razão que muitas das instruções de uma Um compilador de C poderia traduzir isto na seguinte máquina RISC correspondem à micro-instruções numa sequência de instruções: máquina CISC [2]. Na arquitetura RISC, a função do compilador é muito MOV AX, B mais proeminente. O sucesso deste tipo de arquitetura depende fortemente da “inteligência” e nível de otimização ADD AX, C dos compiladores que se “aproveitam” da maior responsabilidade que lhes é concedida para poderem debitar MOV A, AX código mais otimizado. O ato de transferir o fardo da otimização do código do hardware para o compilador foi um A primeira instrução copia o conteúdo da localização de dos mais importantes avanços da arquitetura RISC. Como o memória que contém o valor B para o registo AX do hardware passou a ser mais simples, isto significava que o processador (um registo é uma localização de armazenamento software tinha que absorver alguma da complexidade dentro do processador que pode conter uma certa quantidade examinando agressivamente o código e fazendo um uso de dados, normalmente 16 ou 32 bits. Sendo uma parte prudente do pequeno conjunto de instruções e grande número integrante do processador, os acessos aos registos são de registos típicos desta arquitetura. Assim, as máquinas muitíssimo mais rápidos que os acessos à memória). A RISC dedicavam os seus limitados recursos (transístores) a segunda instrução adiciona o valor c ao conteúdo de AX e a providenciar um ambiente em que o código poderia ser terceira copia o resultado, que está em AX, para a localização executado tão depressa quanto o possível, confiando no onde a variável A está armazenada. Qualquer programa, por compilador para fazer o código compacto e otimizado. mais complexo que seja, é traduzido, em última análise, em séries de instruções. Os programas modernos contêm, frequentemente, IV. CISC x RISC centenas de milhares de linhas de código. Os sistemas operacionais são ainda mais complexos. O Microsoft É inevitável não exercer uma breve comparação entre Windows 95, por exemplo contém cerca de 10 milhões de estas duas arquiteturas, diante de todas as questões que foram linhas de código, a maior parte escrita em C, e o Windows levantadas acerca de cada uma delas. NT tem mais de 5 milhões de linhas de código escritas em C Qualquer pessoa que tenha instalado recentemente um e C++. Imagine traduzir 1 milhão de linhas de código C num programa da Microsoft sabe que muitas das companhias que conjunto de instruções, de uma a vinte ou trinta instruções desenvolvem software já não têm em consideração as por linha de código. Desta maneira fica mais fácil perceber o limitações de memória. Assim, as preocupações com o porquê de o software de hoje em dia ser tão complicado – e tamanho do código que deram origem ao vasto conjunto de tão difícil de corrigir. instruções da arquitetura CISC já não existem mais. O objetivo original dos projetistas de chips RISC era O desenvolvimento dos compiladores também sofreu um limitar o número de instruções suportadas pelo chip de modo avanço nos últimos anos. A nova geração de arquiteturas a que fosse possível alocar um número suficiente de (como o IA-64 ou Merced da Intel) depende apenas do transístores a cada uma delas, para que a sua execução compilador para ordenar as instruções tendo em vista a precisasse apenas de um ciclo de clock para se completar. máxima taxa de instruções executadas. Em vez de disponibilizar uma instrução MUL, por O número de transístores que “cabem” numa placa de exemplo, o projetista faria com que a instrução ADD silício é extremamente elevado e com tendência a crescer executasse em 1 ciclo de clock. Então o compilador ainda mais. O problema agora já não é a falta de espaço para
  • 5. poderia fazer a multiplicação de A e B somando a ele próprio PCs orbitavam não apenas em torno do OS X e dos softwares B vezes ou vice versa. Um CPU CISC poderia multiplicar 10 para a plataforma, mas também nas diferenças entre as duas e 5 da seguinte forma: famílias de processadores. MOV AX, 10 V. ARQUITETURA HÍBRIDA MOV BX, 5 Devido a cada uma das duas arquiteturas terem suas MUL BX peculiaridades. Os fabricantes de processadores decidiram unir ambas em uma só, formando uma arquitetura híbrida. enquanto um CPU RISC faria o mesmo de outro modo: Num processador RISC, há um (ou mais) circuitos CISC, e vice-versa. Desta forma, o processador trabalha mais rápido MOV AX, 0 em instruções que requer maior demanda (RISC), devido à maioria das instruções executadas serem de pouca MOV BX, 10 complexidade e, quando necessário, haverá a disponibilidade de se executar instruções complexas, encontradas em MOV CX, 5 processadores CISC. Atualmente, grande parte dos processadores adota este conceito. begin: ADD AX, BX VI. CONCLUSÃO loop begin; loop CX vezes Pudemos perceber, analisando algumas características de cada arquitetura, que a princípio, ambas surgiram como é claro que este é apenas um exemplo ilustrativo, pois os esforços para não apenas revolucionar, uma arquitetura chips RISC atuais têm, de fato, instruções de multiplicação. existente, como também obter maior e melhor desempenho de tarefas ou rotinas de processamento de dados, que até dado momento eram consideradas ineficientes. B. Características comerciais É válido ressaltar também, que foram filosofias (ou linhas de desenvolvimento) diferentes para solucionar um mesmo Durante grande parte da história dos computadores problema. E ambas também desempenharam um marco pessoais, o modelo predominante dos microprocessadores histórico de disputa não apenas filosófico e tecnológico, de tem sido da Intel Corporation. O primeiro processador no diferentes ideias e métodos, mas de disputa mercadológica. IBM PC foi o Intel 8088. As gerações seguintes de Porém, em contrapartida a tudo isso, é notório que tanto processadores Intel foram da família 80X86 – 8086, 80286, uma arquitetura, quanto outra, apresentam vantagens e 80386, 80486. Todos eram versões elaboradas do 8088 desvantagens, e atualmente pode-se tirar proveito do original, mas com desempenho melhorado de duas maneiras aprendizado adquirido ao longo destes anos, e unir o melhor – operando mais rapidamente ou manejando mais dados das duas opções, em busca de melhores resultados. simultaneamente. O 8088, por exemplo, operava a 4,7 Mhz – ou 4,7 milhões de oscilações por segundo – e alguns chips 80486 vão tão rápido quanto 133 MHz. O 8088 conseguia REFERÊNCIAS manejar 8 bits de dados por vez, enquanto o 80486 maneja 32 bits internamente. Os processadores Intel até o 80486 eram [1] David R. Ditzel, David A. Patterson, “Retrospective on HLLCA. 25 years of the international symposia on Computer architecture (selected baseados na filosofia CISC. papers)”, 1998. Projetos RISC são encontrados em processadores mais novos, entre eles o DEC Alpha, o RISC 6000 da IBM, o [2] David A. Patterson, “Reduced Instruction Set Computers”, Commun. processador Power PC e, embora a Intel não chame os ACM 28, Jan. 1985. processadores Pentium de chips RISC, eles têm muito em SILVA, Luís Filipe; ANTUNES, Vítor José Marques.Comparação entre comum com o padrão RISC de executar códigos. A Apple as arquitecturas de processadores RISC e CISC. Porto, 9 p. Trabalho não desenvolveu, sob a arquitetura RISC, em parceria com a publicado. Motorola e a IBM, o chip PowerPC, com mais poder de processamento que o chip Pentium. Ele equipa a linha de Guia do Hardware. Disponível em: <http://www.hardware.com.br> microprocessadores MakPower (nos modelos 6100, 7100, 8100). Muito se discutiu sobre as vantagens e desvantagens dos Clube do Hardware. Disponível em: processadores PowerPC em relação aos chips x86. O <http://www.clubedohardware.com.br> principal reduto dos chips PowerPC eram os Macs (com todo o misticismo envolvido), enquanto os PCs eram o território dos chips x86. Com isso, as discussões em torno dos Macs e