RISC: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Cyberini (discussão | contribs)
Desfeita a edição 59524070 de RetroGamerCX a arquitetura ARM é da família RISC, portanto não faz sentido a remoção
Etiqueta: Desfazer
+correções semiautomáticas (v0.57/3.1.56/1.107)
Linha 1:
{{Reciclagem|ciência=sim|data=outubro de 2016}}
RISC ([[acrônimo]] de '''''Reduced Instruction Set Computer'''''; em português, "Computador com um conjunto reduzido de instruções") é uma linha de [[arquitetura de processador]]es que favorece um conjunto simples e pequeno de [[Conjunto de instruções|instruções]] que levam aproximadamente a mesma quantidade de tempo para serem executadas. Em oposição, a arquitetura [[CISC]] (''Complex Instruction Set Computer'', em português, "Computador com um conjunto complexo de instruções") possui um conjunto maior de instruções especializadas, algumas delas raramente usadas pelos programas.
 
Muitos dos [[microprocessadores]] modernos são RISCs, por exemplo [[DEC Alpha]], [[SPARC]], [[arquitetura MIPS|MIPS]], e [[PowerPC]]. Os computadores atuais misturam as duas arquiteturas, criando o conceito de [[arquitetura híbrida]], incorporando os conceitos das duas arquiteturas e a inclusão de um núcleo RISC aos seus processadores. O tipo de microprocessador mais comum em desktops, o [[x86]], é mais semelhante ao [[CISC]] do que ao RISC, embora [[Circuito integrado|chips]] mais novos traduzam [[instruções x86]] baseadas em arquitetura CISC em formas baseadas em arquitetura RISC mais simples, utilizando prioridade de execução.
 
Os processadores baseados na computação de conjunto de instruções reduzidas 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 reduzidas, bem como baixo nível de complexidade.
Linha 26:
 
As análises efetuadas de programas compilados por máquinas de arquitetura CISC, mostraram que os compiladores não eram mais tão espertos quanto os programadores [[Assembly]] na busca de instruções de máquina complexas. O programa compilador utiliza pouco da grande quantidade de instruções e dos modos de endereçamento que estão disponíveis, pois parece ser difícil analisar o programa de alto nível.
 
Por exemplo, para efetuar a soma entre dois operandos em uma máquina com arquitetura CISC, sendo que um dos valores está em um registrador e o outro na memória, levará um certo tempo gasto para calcular o endereço de acesso a memória.
 
Já em uma máquina com arquitetura RISC, são usadas duas instruções(diferente da arquitetura CISC que utiliza uma instrução), mas como são instruções mais simples, sua execução é bem mais rápida fazendo com que seu tempo total seja menor.
 
Linha 33 ⟶ 35:
== Características das Arquiteturas [[CISC]] ==
O nome CISC (Complex Instruction Set Computer) advém do fato de se considerar complexo um conjunto constituído de grande quantidade de instruções, com múltiplos modos de endereçamento, entre outras críticas.
 
Em uma época inicial da computação em que a memória era cara e pequena e, por isso, os códigos gerados pelos compiladores deveriam ser compactos e eficientes na execução.
 
Dessa forma, os projetistas precisavam obter boa densidade do código de máquina, ou seja, cada instrução deveria fazer muito, de modo que o programa completo tivesse poucas instruções.
 
O surgimento, em 1951, do conceito de microprogramação facilitou o trabalho de projetar instruções complexas, implementando-as em microcódigo. O microcódigo reside em memória de controle, podendo-se acelerar a sua execução devido a essas memórias serem rápidas. A criação de novas instruções é, na maioria das vezes, quase sem custo e sem aumento de espaço, facilitando a implementação do conceito de famílias de processadores. Um bom exemplo disso é a arquitetura [[x86]].
 
Outra vantagem do emprego de microcódigo reside na rapidez da execução de instruções que estão armazenadas em memória (memória ROM de controle) bem mais rápido que a memória convencional.
 
Linha 45 ⟶ 50:
# 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 and swap operands (comparar valores e trocas operandos)
Linha 121 ⟶ 128:
 
O resultado do trabalho de vários pesquisadores de diferentes locais, fez com que surgissem processadores com características bem diferentes dos já conhecidos por CISC. Eles trabalhavam visando encontrar novas possibilidades para aperfeiçoar o desempenho dos processadores, usando caminhos diferentes dos adotados pela arquitetura CISC.
 
Para o desenvolvimento de arquiteturas RISC, teve início por três caminhos próximos:
 
Linha 141 ⟶ 149:
* Com uma menor quantidade de chips e transistores, consequentemente, o espaço físico era maior com um custo reduzido;
* A redução da complexidade do decodificador de instruções, reduz também o tempo de decodificação.
 
A busca pelas instruções foi facilitada porque todas as instruções possuem o mesmo tamanho em bits e alinhadas a largura da palavra. Por isso não é mais necessário verificar o tamanho do contador de instruções, pois ele é incrementado sempre com o mesmo valor. Com isso, não tem risco da instrução ocupar duas páginas de dados diferentes, porque traria problemas para o [[Sistema operativo|sistema operacional]] na hora do acesso.
 
Linha 181 ⟶ 190:
| Utilização em larga escala de pipelining || • Um dos fatores principais que permite aos processadores RISC atingirem seu objetivo de completar a execução de uma instrução pelo menos a cada ciclo de clock é o emprego de pipelining em larga escala.
|-
|}Tabela 1 - <ref>Monteiro M. A. Introdução à organização de computadores, 2007, p.&nbsp;383</ref>
 
== RISC ==
O primeiro sistema RISC era o supercomputador CDC 6600, projetado em 1964, uma década antes que o termo foi inventado. O CDC 6600 tinha uma arquitetura load-store, com apenas dois modos de endereçamento (Registrar e registrar constante imediato) e 74 opcodes (enquanto um Intel 8086 tem 400). O 6600 tinha onze unidades funcionais pipeline para aritmética e lógica, além de cinco unidades de carga e duas unidades de armazenamento, a memória tinha bancos múltiplos assim todas as unidades de armazenamento de carga poderiam operar ao mesmo tempo. O ciclo de clock base / taxa de emissão de instrução foi de 10 vezes mais rápido que o tempo de acesso à memória. Jim Thornton e Seymour Cray projetou como um processador central de processamento de números, apoiados por 10 computadores simples, chamados de "processadores periféricos" para lidar com I / O e outras funções do sistema operacional. Assim, o comentário de brincadeira depois que a sigla RISC realmente significava " Realmente Inventado por Seymour Cray.
 
Outra máquina de armazenar carga inicial foi o, projetada em 1968 por Edson de Castro. Tinha um conjunto de instruções RISC quase puro, muito semelhante ao dos processadores ARM de hoje, porém, não foi citado como tendo influenciado os designers ARM, embora Novas estavam em uso na Universidade de Cambridge, Laboratório de Informática no início de 1980.
Linha 201 ⟶ 210:
 
== RISC ==
A pesquisa de Berkeley , mas o projeto RISC-II foi usado pela Sun Microsystems para desenvolver o SPARC, pela Pyramid tecnologia para desenvolver sua linha de máquinas de gama média, multi-processador, e em quase todas as outras empresas, alguns anos depois. Foi o uso da Sun de um chip RISC em suas novas máquinas, que demonstrou que os benefícios do RISC eram reais, e as suas máquinas rapidamente ultrapassou a concorrência e, essencialmente, assumiu o mercado de workstations inteiro.
 
John Hennessy deixou Stanford (temporariamente) para comercializar o projeto MIPS, começando a companhia conhecida como MIPS Computer Systems. Seu primeiro projeto foi uma segunda geração de chips MIPS conhecido como o R2000. projetos MIPS passou a se tornar um dos chips RISC mais utilizada quando foram incluídos na [[PlayStation (console)|PlayStation]] e [[Nintendo 64]] consoles de jogos. Hoje eles são um dos processadores mais comuns embutidos em uso para aplicações high-end.
Linha 216 ⟶ 225:
# Embora RISC era de fato capaz de ampliar em muito o desempenho rápido e barato, a Intel se aproveitou de seu grande mercado gastando vastas quantias de dinheiro sobre o desenvolvimento do processador. Intel poderia gastar muitas vezes, tanto quanto qualquer fabricante RISC de melhorar o projeto e fabricação de baixo nível. O mesmo não pode ser dito sobre as empresas menores, como Cyrix e NexGen, mas eles perceberam que poderiam aplicar (bem) práticas de design de conduta também para a arquitetura x86, como nos 486 e Pentium. A série 6x86 MII e fez exatamente isso, mas era mais avançada, implementou execução especulativa superescalar através do registo de renomeação, diretamente no nível 86-semântico. Outros, como o AMD K5 Nx586 e fez o mesmo, mas indiretamente, via buffering microcódigo dinâmica e semi-independente de agendamento superescalares e instrução expedição ao nível micro-operação (mais velhos ou mais simples "CISC" projetos normalmente executa sequências rígidas micro-operação diretamente). O primeiro chip de buffer disponível implantação dessas dinâmicas e técnicas de programação foi o Nx586 NexGen, lançado em 1994, o AMD K5 foi severamente adiado e lançado em 1995.
# Mais tarde, os processadores mais poderosos, como Intel P6, AMD K6, AMD K7, Pentium 4, etc. buffering semelhantes, utilizavam dinâmicas e princípios de programação e execução superescalar flexível (e especulativa) realização de operação de micro-sequências geradas a partir de 86 paralelos diversos estágios de decodificação. Hoje, essas ideias foram aperfeiçoadas (cerca de 86 pares em vez disso são fundidas numa mais complexa operação de micro, por exemplo) e ainda são usados pelos processadores x86 modernos, tais como Intel Core 2 e AMD K8.
 
Enquanto os primeiros projetos RISC foram significativamente diferentes designs contemporâneos CISC, em 2000 o maior desempenho em CPUs da linha RISC eram quase indistinguíveis dos CPUs mais eficientes da linha CISC.
 
Linha 222 ⟶ 232:
== RISC x CISC ==
Embora haja manualmente um número razoável de adeptos das máquinas que possuem arquiteturas RISC, também há, e em grande quantidade, aqueles que relacionam diversas desvantagens desses processadores, advogando em favor da arquitetura CISC.
 
Vários podem ser os temas para discussão sobre RISC e CISC, um dos quais se refere ao desempenho do processador na execução de um programa. De modo geral, os vendedores e outros pesquisadores tendem a medir o desempenho através de programas de teste ([[Benchmarking|benchmarks]]). No entanto, os referidos programas possuem uma série de complicações na interpretação de seus resultados em função do tipo de ambiente que utilizaram e da natureza dos testes.
 
Os defensores da arquitetura CISC propugnam que instruções mais complexas resultarão em um código-objeto menor, o que reduz um consumo de memória, com reflexos no custo do sistema.
 
Isso não é necessariamente correto se considerarmos que uma menor quantidade de instruções nem sempre acarreta menor quantidade de bits (e é a quantidade efetiva de bits que consome menos memória e a menor custo). Se cada instrução CISC possuir mais operandos que as instruções RISC e se cada um de seus operandos ocupar uma boa quantidade de bits na instrução, então poderemos ter um programa CISC maior em bits do que um programa em máquina RISC, apesar de o programa para o processador RISC possuir maior quantidade de instruções.
 
Por exemplo, um programa escrito para rodar em um processador CISC pode gastar 150 instruções de máquina; cada uma das instruções possui código de operação de 8 bits, podendo ser de um, dois, e três operandos. Cada campo operando ocupa 18 bits e ainda há um campo para outras ações, com quatro bits de tamanho. Em média, as instruções têm um total de 50 bits. Um programa para realizar o mesmo problema, escrito para rodar em um processador RISC, pode ter 220 instruções, que em média ocupam 32 bits.
 
As instruções são, em sua esmagadora maioria, de dois operandos, porém os operandos são valores em registradores e, por isso, as instruções não consomem muitos bits para endereçar os dois registradores.
 
O programa para a máquina CISC gastaria 7.500 bits, enquanto o programa para a máquina RISC, mesmo possuindo mais 70 instruções que o processador CISC, consumiria 7.040 bits.
 
Linha 236 ⟶ 250:
# as instruções possuem C.Op. com menor quantidade de bits e, portanto, o tempo de decodificação é menor que o das maquinas CISC;
# as instruções são executadas diretamente pelo hardware e não por um microprograma. Máquinas RISC não são microprogramadas e, assim, tendem a executar as instruções de modo mais rápido.
 
Processadores RISC são também otimizados para operações de uma única tarefa devido ao grande número de registradores que possuem e à grande quantidade de estágios de pipelining. A melhor maneira de obter um bom desempenho dos processadores RISC é executar um programa de teste (um benchmark), o qual possui exatamente esta característica: um grande número de operações similares, em uma única tarefa.
 
Neste ponto, e antes de serem apresentados alguns exemplos de arquiteturas clássicas RISC, deve-se observar que a discussão e o detalhamento de características de processadores que seguem a filosofia CISC e os que seguem a filosofia RISC são atualmente em menos crítica do que foi em anos anteriores, quando havia realmente uma nítida distinção entre ambas.
 
Com o passar do tempo, o avanço da tecnologia em hardware, modificou a visão de alguns projetistas e as adaptações foram surgindo de ambas as partes, de modo que atualmente não se pode afirmar com absoluta certeza que um determinada processador segue rigorosamente a linha RISC nem que outro segue rigorosamente a linha CISC.
 
Linha 291 ⟶ 308:
 
== Prêmio Turing 2017 ==
 
Os pesquisadores [[John L. Hennessy]] e [[David A. Patterson]] foram laureados com o [[Prêmio Turing]] 2017 devido à suas contribuições na área de [[Arquitetura de computadores]], especificamente por causa da pesquisa deles sobre a arquitetura RISC<ref>{{citar web|url=https://www.blogcyberini.com/2018/03/premio-turing-hennessy-patterson.html|titulo=Mentes por trás da arquitetura RISC ganham o Prêmio Turing|data=24 de março de 2018|acessodata=11 de abril de 2018|publicado=Blog Cyberini|ultimo=Felipe|primeiro=Henrique}}</ref>.
 
{{Referências}}
{{Controle de autoridade}}
 
== Ver também ==
 
* [[Arquitectura de computadores|Arquitetura de computadores]]
* [[CISC]]