ARQUITECTURA CISC, RISC E ARM

ELABORADO POR JAY KLENDER WORSES







TRABALHO DE ARQUITECTURA E SISTEMA DE COMPUTADORES I

Caixa de texto: TEMA: ARQUITECTURA CISC, RISC E ARM

 





NOME: AUGUSTO BERNARDO AFONSO CAPITÃO
24977
PERÍODO: MANHÃ
CURSO: ENGENHARIA INFORMÁTICA

         






             O DOCENTE
________________________
   ENGº GABRIEL GRAÇA






LUANDA/2018







ÍNDICE



















A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo o processador que contém dentro de si, arquitetura CISC, RISC e ARM.
A CISC (em inglês: ComplexInstructionSet Computing), Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com isso, mais lenta fica a execução delas.
A RISC (em inglês: ReducedInstruction SetComputing), Computador com um Conjunto Reduzido de Instruções) usada em processadores Power PC (da Apple, Motorola e IBM) e SPARC (SUN); suporta menos instruções, e com isso executa com mais rapidez o conjunto de instruções que são combinadas.
É indiscutível, porém, que em instruções complexas os processadores CISC saem-se melhor. Por isso, ao invés da vitória de uma das duas tecnologias, atualmente vemos processadores híbridos, que são essencialmente processadores CISC, mas incorporam muitos recursos encontrados nos processadores RISC (ou vice-versa).
Nos chips atuais, que são na verdade misturas das duas arquiteturas, juntamos as duas coisas. Internamente, o processador processa apenas instruções simples. Estas instruções internas, variam de processador para processador, são como uma luva, que se adapta ao projeto do chip. As instruções internas de um K6 são diferentes das de um Pentium por exemplo. Sobre estas instruções internas, temos um circuito decodificador, que converte as instruções complexas utilizadas pelos programas em várias instruções simples que podem ser entendidas pelo processador. Estas instruções complexas sim, são iguais em todos os processadores usados em micros PC. é isso que permite que um Athlon e um Pentium III sejam compatíveis entre sí.
O conjunto básico de instruções usadas em micros PC é chamado de conjunto x86. Este conjunto é composto por um total de 187 instruções, que são as utilizadas por todos os programas. Além deste conjunto principal, alguns processadores trazem também instruções alternativas, que permitem aos programas executar algumas tarefas mais rapidamente do que seria possível usando as instruções x86 padrão. Agora vamos analisar cada uma delas com um pouco mais detalhadamente.
Examinando de um ponto de vista um pouco mais prático, a vantagem de uma arquitetura CISC é que já temos muitas das instruções guardadas no próprio processador, o que facilita o trabalho dos programadores, que já dispõe de praticamente todas as instruções que serão usadas em seus programas. Os processadores CISC têm a vantagem de reduzir o tamanho do código executável por já possuírem muito do código comum em vários programas, em forma de uma única instrução.
Os processadores baseados na computação de conjunto de instruções complexas contêm uma microprogramação, ou seja, um conjunto de códigos de instruções que são gravados no processador, permitindo-lhe receber as instruções dos programas e executá-las, utilizando as instruções contidas na sua microprogramação. Seria como quebrar estas instruções, já em baixo nível, em diversas instruções mais próximas do hardware (as instruções contidas no microcódigo do processador). Como característica marcante esta arquitetura contém um conjunto grande de instruções, a maioria deles em um elevado grau de complexidade.
A CISC é implementada e guardada em micro-código no processador, sendo difícil modificar a lógica de tratamento de instruções. Esta arquitetura suporta operações do tipo “a=a+b” descrita por “adda,b”, ou seja podem simplesmente utilizar dois operandos para uma única instrução, sendo um deles fonte e destino (acumulador) e permite um ou mais operadores em memória para a realização das instruções.  Porém, do ponto de vista da performance, os CISC’s têm algumas desvantagens em relação aos RISC’s, entre elas a impossibilidade de se alterar alguma instrução composta para se melhorar a performance. O código equivalente às instruções compostas do CISC pode ser escrito nos RISC’s da forma desejada, usando um conjunto de instruções simples, da maneira que mais se adequar. Sendo assim, existe uma disputa entre tamanho do código X desempenho.
No caso de um chip estritamente RISC, o programador já teria um pouco mais de trabalho, pois como disporia apenas de instruções simples, teria sempre que combinar várias instruções sempre que precisasse executar alguma tarefa mais complexa.
Os processadores baseados na computação de conjunto de instruções reduzido não têm micro-programação, as instruções são executadas diretamente pelo hardware. Como característica, esta arquitetura, além de não ter microcódigo, tem o conjunto de instruções reduzido, bem como baixo nível de complexidade. A ideia foi inspirada pela descoberta de que muitas das características incluídas na arquitetura tradicional de processadores para ganho de desempenho foram ignoradas pelos programas que foram executados neles. Mas o desempenho do processador em relação à memória que ele acessava era crescente. Isto resultou num número de técnicas para otimização do processo dentro do processador, enquanto ao mesmo tempo tentando reduzir o número total de acessos à memória.
RISC é também a arquiteturaadotada para os processadores dos videogames modernos, que proporcionam um hardware extremamente dedicado somente à execução do jogo, tornando-o muito mais rápido em relação a micro computadores com mais recursos, embora com processador x86. Pode-se concluir que os projetistas de arquiteturas CISC consideram três aspectos básicos:
·         Uso de microcódigo;
·         Construção de conjuntos com instruções completas e eficientes (completeza no conjunto);
·         Criação de instruções de máquina de “alto nível”, ou seja, com complexidade semelhante à dos comandos de alto nível.
Colocados juntos, esses elementos do projeto nortearam a filosofia de construção de processadores CISC por longo tempo, como a família Intel x86, os processadores AMD K e, anteriormente, os sistemas IBM e VAX. Assim é que existem naqueles conjuntos instruções poderosas, do tipo:
  • CAS – compare andswapoperands (comparar valores e trocas operandos)
  • RTR – returnandrestorecodes (retornar e restaurar código)
  • SWAP – swapregisterwords (trocar palavras dos registradores)
Menor quantidade de instruções: talvez a característica mais marcante das arquiteturas RISC, seja a de possuir um conjunto de instruções menor(todas também com largura fixa), que as máquinas que possuíam a arquitetura CISC, porém com a mesma capacidade. Vem daí o nome dado a arquitetura RISC (computadores com um conjunto reduzido de instruções). A SPARC, da Sun, possuía um conjunto de cerca de 50 instruções, a VAX-11/780 tinha até 300 instruções, o Intel 80486 foi apresentado com 200 instruções e os Pentium possuem mais de 200 instruções.
Com o conjunto de instruções reduzido e cada uma delas tendo suas funções otimizadas, os sistemas possuíam um resultado melhor em questão de desempenho. Em virtude do conjunto reduzido das instruções, acarretavam em programas um pouco mais longos.
Execução otimizada de chamadas de função: outra evolução da arquitetura RISC para a arquitetura CISC tem relação com a chamada de retinas e passagem de parâmetros. Estudos indicam que as chamadas de funções consomem um tempo significativo de processador. Elas requerem poucos dados, mas demoram muito tempo nos acessos a memória. Em virtude disso, na arquitetura RISC foram utilizados mais registradores. As chamadas de função que na arquitetura CISC ocorriam com acessos a memória, mas na RISC isso era feito dentro do processador mesmo, utilizando os registradores que foram colocados a mais.
Modo de execução com Pipelining: uma das características mais relevantes da arquitetura RISC é o uso de pipelining, mesmo sabendo que ela tem um funcionamento mais efetivo quando as instruções são todas bastante parecidas. Imaginando estágios de uma linha de montagem, não é interessantes que um estágio termine antes do outro, pois nesse caso perde-se a vantagem da linha de montagem. O objetivo de cada instrução, é completar um estágio de pipeline em um ciclo de clock, mas esse objetivo nem sempre é alcançado.
O processamento de uma instrução é composto pelo menos por cinco fases:
  • Instructionfetch;
  • Instructiondecode;
  • Operandfetch;
  • Execution;
Hoje em dia o pipeline não se limita a apenas 5 estágios, mas pode chegar a 20 ou 30 estágios (Intel Pentium 4). No entanto, para que todo o processo funcione é necessário que determinadas restrições se verifiquem. A prioridade é que todas as instruções permaneçam em cada estágio o mesmo tempo, para que:
  • O sinal de relógio seja usado como cadência de processamento;
  • Não sejam necessários “buffers”;
Execução de cada instrução em um ciclo de clock: se o uso do pipelining se considera uma característica importante da arquitetura RISC, a execução de uma instrução por ciclo de clock é mais importante, segundo os que estabeleceram suas bases. Um dos pontos mais negativos das arquiteturas RISC é o longo tempo de execução de cada instrução. Com o surgimento dessa nova arquitetura, cada instrução passou a ser executada a cada ciclo de clock.
·         Múltiplos conjuntos de registradores, muitas vezes superando 256
·         Três operandos de registradores permitidos por instrução (por ex., add R1, R2, R3)
·         Passagem eficiente de parâmetros por registradores no chip (processador)
·         Único conjunto de registradores, tipicamente entre 6 e 16 registradores
·         Um ou dois operandos de registradores permitidos por instrução (por ex., add R1, R2)
·         Passagem de parâmetros ineficiente através da memória
·         Instruções de múltiplos ciclos

Como as novas gerações de uma família de processador geralmente envolve  a  geração  antecessora,  tanto  o  conjunto  de  instruções quanto o hardware do novo chip tornam-­se mais complexos.  Instruções  diferentes  levam  quantidades  diferentes  de  período  de relógio para executar, o que pode tornar a máquina excessivamente lenta.

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.
Pelo facto 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.
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.
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.
O facto 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.
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. 
1-      Poucas instruções, instruções simples;
2-      Instruções  rápidas,  com  um  throughput  próximo  de  1  (uma  instrução executada por ciclo de relógio);
3-      Todas as instruções do mesmo tamanho  (com pouca variação de formato);
4-      Número razoável de registradores de propósito geral;
5-      Acesso à memória somente com LOAD e STORE;
6-      Uso de instruções compare­and­branch;
7-      Operações  lógicas  e  aritméticas  entre  registradores  (instruções  com  três endereços de registrador).



4-A ARQUITETURA DO ARM
Os processadores ARM foram desenhados com o objectivo de possuírem um tamanho reduzido e bastante optimizados para o baixo consumo de energia mantendo o desempenho, fazendo com que se tornem ideais para a utilização em dispositivos portáteis. Os processadores da família ARM7 foram usados, por exemplo, no Game Boy Advanced, Nintendo DS, iPod e ainda são usados em telemóveis da Nokia. Na maior parte dos aspectos o ARM é um RISC – com uma arquitectura Load-Store (tanto os operandos como o resultado têm de ser registos), em que as instruções têm, por norma, 3 operandos. A família ARM7 é de 32 bits e dependendo do processador pode ter cache e UGM.
Mais de 10 bilhões de processadores contendo um núcleo ARM foram entregues, primariamente para uso em sistemas embarcados. Na verdade, 98% dos telefones móveis do mundo contém pelo menos um processador ARM. Você pode aplicar arquiteturas ARM para praticamente qualquer aplicação embarcada, de protocolos de comunicação automotivos a sistemas de segurança e dispositivos médicos.
Poucos anos atrás os processadores ARM eram voltados mais para automação do que para gadgets e pouco se falava em performance, já que eficiência energética e durabilidade eram os pontos principais. Mas aí, a corrida entre fabricantes de smartphones começou e os modelos Cortex-A começaram a ficar populares por trazer um nível adequado de processamento para os sistemas operacionais móveis atuais, como Android, iOS e Windows Phone.
As licenciadas da ARM podem então otimizar, customizar e fabricar a IP dos seus casos de uso particulares ou requisitos de clientes. Variações de núcleos ARM incluem frequências de clock que variam, adição de RAM no chip, ou a adição de um periférico ao chip, como conversores analógicos para digital (ADCs – analog-to-digital converters). Exemplos de licenciada da ARM incluem Luminary Micro, NXP, STMicroelectronics e Texas Instruments.
A ARM Ltd. fornece uma vasta gama de projetos de processador dependendo dos requisitos do sistema. As ofertas típicas da ARM são categorizadas em microprocessadores em nível de aplicação ou microcontroladores de sistemas embarcados.
A ARM possui várias famílias de microcontroladores: ARM7, ARM9 e Cortex-M3. O módulo NI LabVIEW Embedded Module for ARM Microcontrollers pode programar mais de 300 microcontroladores, e a National Instruments fornece opções de placas de avaliação para arquiteturas ARM7 e Cortex-M3.
A arquitetura ARM foi desenvolvida para ter o melhor desempenho possível dentro das seguintes limitações: ser simples, ocupar pouca área e ter baixo consumo de energia. Assim é muito utilizado em aplicações como aparelhos portáteis: PDA (Palm Tungsten, por exemplo), vídeo-game portátil (Nintendo Game Boy Advance), etc. Além disso, há famílias de processadores ARM específicas para sistemas embarcados: telefones celulares (aparelhos topo de linha), impressoras e automóveis, por exemplo.
O núcleo do processador é pequeno graças á simplicidade do seu conjunto de instruções e ao uso de coprocessadores. O baixo consumo de energia é alcançado por três fatores: simplicidade do circuito, pipeline curto (operando a baixas freqüências) e um projeto que privilegia o mínimo consumo de energia sempre que o processador não estiver em operação.
Os microcontroladores ARM7 são os processadores ARM de mais longa data. A família ARM7 possui um pequeno microcontrolador com consumo de energia muito baixo. O microcontrolador está no mercado por mais de 10 anos, mas a sua implementação continua a melhorar com novas tecnologias. Ele é o processador embarcado de 32 bits mais largamente utilizado e é a escolha da maioria dos licenciados de microcontroladores.
A arquitetura ARM suporta uma extensão do seu conjunto de instruções por meio da adição de coprocessadores, ao mesmo tempo que dá suporte á emulação via software desses coprocessadores, através de um trap para instruções indefinidas.  A arquitetura suporta até 16 coprocessadores lógicos, cada coprocessador pode ter até 16 registradores particulares de qualquer tamanho razoável, não sendo limitados a 32 bits. Os coprocessadoes utilizam uma arquitetura load-store, com instruções para realizar operações internas nos seus registradores, instruções para ler e escrever registradores da e para a memória, e instruções para mover dados de e para um registrador do ARM.


Os processadores e microcontroladores construídos com a arquitetura ARM são identificados conforme a versão da arquitetura adotada, o perfil e suas variantes. Até o momento já foram definidas 7 versões de arquitetura ARM, sendo atualmente em uso apenas 4, identificadas pelo Prefixo ARMv, sendo elas ARMv4, ARMv5, ARMv6 e ARMv7.
Considerando a mais atual a ARMv7, temos 3 perfis de uso definidos, ARMv7-A, ARMv7-R e ARMv7-M sendo respectivamente usadas para, processadores de aplicação geral, processadores e microcontroladores para aplicações de uso critico e resposta em tempo real, e finalmente o perfil para uso em microcontroladores de uso geral.
As variantes são identificadas por letras adicionados as versões. No momento existem as seguintes:
·         ARMv4,
·         Uma variante que inclui apenas o conjunto padrão de instruções ARM.
·         ARMv4T,
·         Nesta variante é adicionado o conjunto de instruções Thumb.
·         ARMv5T
·         Melhorias em relação a interworking e instruções ARM. adicionado "Count Leading Zeros" (CLZ) e instruções para "Software Breakpoint"(BKPT).





Um mesmo processador acaba tendo as duas formas. Não é nem que o executável não pode mudar de um modelo para outro, é que não pode mudar de uma arquitetura específica para outra já que o conjunto de instruções é completamente outro. um ARM e um MIPS são RISC e não pode transportar entre eles.
Cisc (Complex instruction set computer) que é a forma mais comum de uso do Intel é caracterizado por ter instruções mais macros que executam coisas de forma um pouco mais abstrata em geral consumindo vários ciclos de clock. Tendem a produzir executável um pouco menos, mas com performance menos previsível.
Risc (Reduced instruction set computer) cujo maior representante hoje em dia é o ARM possue instruções muito simples que faz o mínimo necessário, por isso geram executáveis maiores, ainda que já seja possível otimizar isto, e tem um processamento mais previsível. Por ter menos abstrações é mais simples programar nele. As abstrações são deixadas para outro nível. Esta simplicidade se dá porque as instruções são sempre do mesmo tamanho e o processador não tem que lidar com isto.
Concluindo,o ARM apresentam uma arquitectura um pouco diferente. Podemos concluir, através da análise da estrutura e da comparação entre os dois processadores, que o ARM está mais vocacionado para aplicações de sistemas embebidos portáteis, conseguindo ter uma arquitectura com um reduzido consumo de energia e um tamanho bastante reduzido, principalmente devido à sua simplicidade, disponibiliza também algumas tecnologias que os torna ideais para certos sistemas, por exemplo, a tecnologia Jazelle (é, basicamente, uma implementação da maquina virtual Java) que os tornam adequados para a utilização nos telemóveis recentes.













Hachman, Mark (2002). «ARM Cores Climb into 3G Territory». ExtremeTech~
ARM Discloses Technical Details Of The Next Version Of The ARM Architecture» (Nota de imprensa). ARM Holdings. 27 de outubro de 2011. Consultado em 20 de setembro de 2013.
"Some facts about the Acorn RISC Machine" Roger Wilson posting to comp.arch, 2 November 1988. Retrieved 25 May 2007.

Sem comentários:

Enviar um comentário