Your SlideShare is downloading. ×
Artigo jaquiel-paim-final
Artigo jaquiel-paim-final
Artigo jaquiel-paim-final
Artigo jaquiel-paim-final
Artigo jaquiel-paim-final
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Artigo jaquiel-paim-final

350

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
350
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 trabalhoconsiderar unicamente a tecnologia em si, mas acima de tudo relativamente simples, de traduzir o código de umaconsiderar 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 aem relação a um conjunto de problemas, ou seja, filosofias de linguagem assembly. O assembly era posteriormenteprojeto, ou maneiras de pensar acerca de um determinado convertido em código de máquina, em um processo queconjunto 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 maisproduzir chips capazes de executar um grande número de elevada. A solução para obter um código compacto einstruções, facilitando o trabalho dos desenvolvedores e dos otimizado era programar em assembly.compiladores. Em contrapartida, a filosofia RISC, se baseiano uso de instruções simples, que são executadas C. VLSIrapidamente pelo processador e podem ser combinadas paradesempenhar as funções de instruções mais complexas. A Em se tratando de VLSI, a tecnologia permitiapartir dessa premissa, foi que projetistas promoveram a densidades de transístores que seriam muito baixas seevolução de um conjunto de condições tecnológicas comparadas com hoje. Não existia a possibilidade de colocarexistentes 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 CISCque 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 tempoconsequência dela, tanto a arquitetura CISC, quanto a RISC de espera entre a transferência de dados e entre cada umforam abordagens que os projetistas propuseram como mais deles. Logo, uma implementação em um único chip, seria oeficientes à 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 deprecisamos entender também acerca de transistores em um único chip era considerado bastante.memória/armazenamento e compiladores em meados dosanos 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. IstoReduzido 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 centenasde instruções complexas diferentes, sendo extremamente • O código seria mais compacto, o que permitiria pouparversá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 deinstruções que são gravados no processador, permitindo-lhe • Seria mais fácil fazer a detecção e correção de erros oreceber as instruções dos programas e executá-las. A que, de novo, permitiria baixar os custos de desenvolvimentopossibilidade 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 econsequentemente o espaço utilizado em memória pelos Ao reduzir o tamanho dos programas conseguiam-se doisprogramas. Em contrapartida, temos um menor desempenho propósitos: por um lado era necessária uma menor quantidadedevido ao processador ter de executar instruções maiores e de memória para armazenar o código; e por outro o tempo demais complexas. O projeto e a construção de processadores execução era, também diminuído, pois havia menos linhas deCISC 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 quechip. 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 outraimplementada por diversas instruções de processador, a mais tática que os projetistas utilizavam para reduzir o tamanho dobaixo nível. Por exemplo, uma instrução de um programa que código e a sua complexidade: os modos de endereçamentoimprime 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 deinstruções, sendo cada instrução mais especializada; graças a código para multiplicar o conteúdo das posições de memóriaisso, 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 umadelas. 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 todasendereçamento complexo. Uma instrução assembly, na estas instruções complexas e elaboradas em micro-códigorealidade leva a cabo uma série complexa de operações. Uma seria, realmente, o melhor caminho para fazer uso dosvez 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 (Reducedutilização de micro-código. A micro programação era mesmo Instruction Set Computing, ou Computador com umuma das características primordiais que permitia aos Conjunto Reduzido de Instruções), que, ao contrário daprojetistas 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 temprogramação, vamos considerar, a execução direta. Usando construção mais simples e possuem menos componentes emexecuçã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 menosunidade de execução “pega” na instrução à sua entrada e circuitos internos nestes processadores, encontram-seativa 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 clocksoperadores em vírgula flutuante e a fornece à unidade de ainda maiores. Em 1997, por exemplo, já haviamexecuçã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 arquiteturaoperações de deslocamento, adição e normalização são trabalharem com menos instruções, a programação de altoexecutadas corretamente. A execução direta é, na realidade, o nível para os mesmos é mais trabalhosa, pois para se usarque 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 quemini-processador dentro do processador. A unidade de sejam executadas com mais rapidez. Portanto, a arquiteturaexecução é um processador de microcódigo que executa RISC reduz o conjunto de instruções ao mínimo, e asmicro-instruções. Os projetistas usam estas micro-instruções instruções não implementadas diretamente são realizadas porpara escrever micro-programas que são armazenados numa uma combinação de instruções. Mas em compensação, ummemó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 eramprocessador de micro-código, este último executa a sub- tão complexas que eram distribuídas por vários chips. Estarotina de micro-código adequada. Esta sub-rotina “diz” às situação não era a ideal. Era necessário uma solução numvá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 suasROM utilizada para a memória de controle era cerca de 10 funcionalidades teriam que ser deixadas de fora. Nessevezes mais rápida que a memória magnética da altura, por intuito, realizaram-se estudos destinados a descobrir que tiposisso o processador de micro-código ainda conseguia estar de situações ocorrem mais frequentemente na execução desuficientemente “avançado” para oferecer um desempenho aplicações. A ideia era descobrir em que tipo de tarefas orazoá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 deviampara fazer frente ao crescente número de instruções, alguns ser feitos em favor da velocidade de execução das tarefas nasproblemas começaram a surgir. Para manter um bom quais o processador passa mais tempo trabalhando, ainda quedesempenho, o micro-código tinha que ser altamente isso pudesse atrasar outras tarefas não tão frequentes. Estaotimizado, eficiente e bastante compacto para que os custos abordagem quantitativa, de fazer de forma mais rápida asde memória não começassem a crescer desmesuradamente. tarefas mais comuns, provocou a inversão da filosofiaComo os micro programas eram tão grandes, tornou-se difícil iniciada pelos CISC e a complexidade teve que ser retiradatestá-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 astinha, por vezes, erros e tinha que ser corrigido inúmeras linguagens de alto nível poderia ser mais eficiente se fossevezes 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 queutilizados em outras tecnologias para melhorar o fazer com todos os transístores disponibilizados.desempenho. E quando eles tiveram que decidir quais asfuncionalidades que teriam que ser retiradas, o suporte para o A. Conjunto de Instruçõesmicro-código foi o primeiro, e com ele também um grupo deinstruções complexas que, supostamente, tornava o trabalho Uma instrução é um comando codificado em 0’s e 1’sdos 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 compiladortambém o tamanho das mesmas. Foi decidido que todas as traduz cada linha de código C em uma ou mais instruções doinstruções RISC deveriam, sempre que possível, demorar processador. Para que os programadores possam “ver” estasapenas 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çõesdecisão foi baseada em algumas observações feitas pelos são representadas por mnemônicas – por exemplo MOV, queinvestigadores. Tudo o que poderia ser feito usando as copia um valor de uma localização para outra ou ADD, queinstruções de micro-código, também poderia ser feito com adiciona dois valores. A seguinte linha de código adicionapequenas 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, poderiasimplesmente ser usada para armazenar o assembler, assim a A=B+Cnecessidade de micro-código seria pura e simplesmenteeliminada. É por esta razão que muitas das instruções de uma Um compilador de C poderia traduzir isto na seguintemá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, Bmais proeminente. O sucesso deste tipo de arquiteturadepende fortemente da “inteligência” e nível de otimização ADD AX, Cdos compiladores que se “aproveitam” da maiorresponsabilidade que lhes é concedida para poderem debitar MOV A, AXcódigo mais otimizado. O ato de transferir o fardo daotimização do código do hardware para o compilador foi um A primeira instrução copia o conteúdo da localização dedos mais importantes avanços da arquitetura RISC. Como o memória que contém o valor B para o registo AX dohardware passou a ser mais simples, isto significava que o processador (um registo é uma localização de armazenamentosoftware tinha que absorver alguma da complexidade dentro do processador que pode conter uma certa quantidadeexaminando agressivamente o código e fazendo um uso de dados, normalmente 16 ou 32 bits. Sendo uma parteprudente do pequeno conjunto de instruções e grande número integrante do processador, os acessos aos registos sãode registos típicos desta arquitetura. Assim, as máquinas muitíssimo mais rápidos que os acessos à memória). ARISC dedicavam os seus limitados recursos (transístores) a segunda instrução adiciona o valor c ao conteúdo de AX e aprovidenciar um ambiente em que o código poderia ser terceira copia o resultado, que está em AX, para a localizaçãoexecutado tão depressa quanto o possível, confiando no onde a variável A está armazenada. Qualquer programa, porcompilador 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 deestas duas arquiteturas, diante de todas as questões que foram linhas de código, a maior parte escrita em C, e o Windowslevantadas 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 numprograma da Microsoft sabe que muitas das companhias que conjunto de instruções, de uma a vinte ou trinta instruçõesdesenvolvem software já não têm em consideração as por linha de código. Desta maneira fica mais fácil perceber olimitações de memória. Assim, as preocupações com o porquê de o software de hoje em dia ser tão complicado – etamanho 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 modoavanç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çãocompilador 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 ADDsilício é extremamente elevado e com tendência a crescer executasse em 1 ciclo de clock. Então o compiladorainda 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 softwaresB vezes ou vice versa. Um CPU CISC poderia multiplicar 10 para a plataforma, mas também nas diferenças entre as duase 5 da seguinte forma: famílias de processadores.MOV AX, 10 V. ARQUITETURA HÍBRIDAMOV BX, 5 Devido a cada uma das duas arquiteturas terem suasMUL 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ápidoMOV AX, 0 em instruções que requer maior demanda (RISC), devido à maioria das instruções executadas serem de poucaMOV BX, 10 complexidade e, quando necessário, haverá a disponibilidade de se executar instruções complexas, encontradas emMOV CX, 5 processadores CISC. Atualmente, grande parte dos processadores adota este conceito.begin:ADD AX, BX VI. CONCLUSÃOloop 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 arquiteturachips 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 marcopessoais, o modelo predominante dos microprocessadores histórico de disputa não apenas filosófico e tecnológico, detem 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 tantoprocessadores Intel foram da família 80X86 – 8086, 80286, uma arquitetura, quanto outra, apresentam vantagens e80386, 80486. Todos eram versões elaboradas do 8088 desvantagens, e atualmente pode-se tirar proveito dooriginal, 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 chips80486 vão tão rápido quanto 133 MHz. O 8088 conseguia REFERÊNCIASmanejar 8 bits de dados por vez, enquanto o 80486 maneja 32bits 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 (selectedbaseados na filosofia CISC. papers)”, 1998. Projetos RISC são encontrados em processadores maisnovos, 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 entrecomum com o padrão RISC de executar códigos. A Apple as arquitecturas de processadores RISC e CISC. Porto, 9 p. Trabalho nãodesenvolveu, sob a arquitetura RISC, em parceria com a publicado.Motorola e a IBM, o chip PowerPC, com mais poder deprocessamento 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 todoo misticismo envolvido), enquanto os PCs eram o territóriodos chips x86. Com isso, as discussões em torno dos Macs e

×