Arquitetura CISC e
RISC
Aula 09
Arquitetura CISC
• Complex Instruction Set Computer, ou, em uma tradução literal,
"Computador com um Conjunto Complexo de Instruções");
• É uma linha de arquitetura de processadores capaz de executar
centenas de instruções complexas diferentes sendo, assim,
extremamente versátil.
- Exemplos de processadores CISC são: os 386 e os 486 da Intel.
• É uma arquitetura que suporta muitas instruções, porém a execução
dessas instruções são mais lentas.
• Os processadores baseados na computação de conjunto de instruções
complexas contêm uma micro-programaçã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 micro-programaçã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.
Vantagem da CISC
• Examinando do ponto de vista um pouco mais prático, a vantagem da
arquitetura CISC é que já temos muitas das instruções guardadas no
próprio processador, o que facilita o trabalho
dos programadores de linguagem de máquina; disponibilizando,
assim, 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.
Desvantagem da CISC
• Porém, do ponto de vista do desempenho, os CISCs têm algumas
desvantagens em relação aos RISCs, entre elas a impossibilidade de se
alterar alguma instrução composta para melhorar o desempenho de
processamento.
• O código equivalente às instruções compostas do CISC pode ser escrito nos
RISCs 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.
Características
• 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.
• O primeiro sistema de computação lançado com microcódigo e que
originou, também, o conceito de família de computadores foi
introduzido pela IBM em 1964, o Sistema IBM/360.
• Posteriormente, a DEC (Digital Equipament Corporation) introduziu
sua família de PDP, mais tarde substituída pelo sistema VAX, um dos
melhores exemplos de máquina CISC.
• Controle microprogramado;
• Modos registrador-registrador, registrador-memória, e memória-registrador;
• Múltiplos modos de endereçamento à memória, incluindo indexação (vetores);
• Instruções de largura (tamanho) variável, conforme modo de endereçamento
utilizado;
• Instruções requerem múltiplos ciclos de máquina para execução, variando
também com o modo de endereçamento;
• Poucos registradores;
• Registradores especializados
Pode-se concluir que os projetistas de arquiteturas CISC
consideram três aspectos básicos:
• menos 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 and swap operands (comparar valores e trocas
operandos);
• RTR - return and restore codes (retornar e restaurar código);
• SWAP - swap register words (trocar palavras dos registradores).
Regras básicas CISC
Em geral o desenvolvimento das arquiteturas CISC tende a seguir algumas
regras básicas:
• Formato de dois operandos mais comum – instruções com campos de
origem e destino, como a instrução: ADD CX, mem (somar o valor na
memória do valor no registrador CX e colocar resultado no registrador
CX).
• Uso de modos registrador para registrador; registrador para memória e
memória para registrador.
• Uso de múltiplos modos de endereçamento para a memória, incluindo
indexação para o caso de vetores.
• Instruções com largura variável, com a quantidade de bytes variando de
acordo com o modo de endereçamento utilizado.
• As instruções requerem múltiplos ciclos de relógio para sua complexa
execução, além do que a quantidade desses ciclos varia de acordo
com a largura das instruções.
• Por exemplo, se uma instrução realiza mais de um acesso à memória para
buscar dois operandos, então gasta mais ciclos do que outra que só realiza um
acesso.
• O hardware possui poucos registradores devido ao fato de possuir
muitas instruções com acesso à memória e por causa da limitação do
espaço no chip usado para a memória de controle.
• Há também registradores especializados, como o registrador de
controle (flags) de segmento para o ponteiro da pilha, para
tratamento de interpretação e outros.
Arquitetura RISC
• Reduced Instruction Set Computer (Computador com um conjunto
reduzido de instruções) é uma linha de arquitetura de
processadores que favorece um conjunto simples e pequeno
de instruções que levam aproximadamente a mesma quantidade de
tempo para serem executadas.
• Muitos dos microprocessadores modernos são RISCs.
- Exemplo: DEC Alpha, SPARC, MIPS, e PowerPC.
• 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.
• A ideia foi inspirada pela percepção 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 arquitetura adotada 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.
• RISC foi desenvolvida como uma alternativa ao que é hoje conhecido
como CISC.
Características RISC
• Em meados de 1970 investigadores (em especial John Cocke)
da IBM (e projetos semelhantes em outros lugares) demonstraram
que a maioria das combinações desses modos ortogonais de
endereçamento e as instruções não foram utilizados pela maioria dos
programas gerados por compiladores disponíveis no momento.
• Ele revelou-se difícil em muitos casos, para escrever um compilador
com mais que a capacidade limitada de tirar proveito dos recursos
oferecidos pelos processadores convencionais.
• Também foi descoberto que, em implementações de arquiteturas
microcodificadas certas operações complexas tendem a ser mais lentas do que
uma sequência de operações mais simples fazendo a mesma coisa.
• Isso foi em parte um efeito do fato de que muitos projetos foram levados às
pressas, com pouco tempo para otimizar ou sintonizar todas as instruções, mas
sim apenas aquelas usadas com mais frequência. Um exemplo famoso foi a
instrução do VAX de índice.
• Como mencionado anteriormente, a memória de núcleo há muito havia sido mais
lenta do que muitos projetos de CPU.
• O advento de memórias de semicondutores reduziu essa diferença, mas ainda era
aparente que mais registradores (e mais tarde caches) permitiria maior
frequência de operação da CPU.
• Registros adicionais exigiriam chips importantes ou áreas bordo que, na época
(1975), poderiam ser disponibilizados se a complexidade da lógica de CPU havia
sido reduzida.
• Contudo um outro impulso de ambos os RISC e outros projetos veio a
partir de medições práticas em programas no mundo real.
• Andrew Tanenbaum resumiu muitos destes, demonstrando que os
processadores tiveram muitas vezes tamanhos desproporcionais imediatos.
- Por exemplo, ele mostrou que 98% de todas as constantes em um
programa iriam caber em 13 bits, mas muitos projetos CPU dedicam de 16
ou 32 bits para armazená-los.
• Isto sugere que, para reduzir o número de acessos à memória, uma
máquina de comprimento fixo pode armazenar constantes em bits não
utilizados da palavra de instrução em si, de modo que eles seriam
imediatamente prontos quando a CPU precisa deles (muito parecido com
endereçamento imediato em um desenho convencional).
• Estes necessários e pequenos opcões, ocorreram a fim de deixar espaço
para uma constante com um tamanho razoável em uma palavra de
instrução de 32 bits.
• Uma vez que muitos programas do mundo real passam a maior parte do
seu tempo executando operações simples, alguns pesquisadores decidiram
concentrar em fazer as operações o mais rápido possível.
• A velocidade do clock de uma CPU é limitado pelo tempo que leva para
executar a mais lenta sub-operação de qualquer instrução, diminuindo o
tempo de ciclo que, muitas vezes acelera a execução de outras instruções.
• O foco na "instruções reduzida" levou ao. resultando máquina que está
sendo chamado de "computador conjunto reduzido de instruções" (RISC).
• O objetivo era fazer com que as instruções tão simples que poderiam ser
fácil conduta, a fim de atingir uma capacidade de clock única em altas
frequências.
• Mais tarde verificou-se que uma das características mais importantes
dos processadores RISC é que a memória externa só era acessível por
uma instrução de armazenar carga.
• Todas as outras instruções foram limitadas aos registos internos. Isso
simplificou muitos aspectos do design do processador: permitir que
as instruções para ser de comprimento fixo, simplificação de
condutas, e isolar a lógica para lidar com o atraso na conclusão de um
acesso à memória (cache miss, etc.) para apenas duas instruções.
• Isso levou a RISC projetos que estão sendo referidos como
arquiteturas load/store.
• 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:
• O primeiro deles, foi em meados da década de 1970 com um projeto
da IBM, desenvolvido pelo pesquisador daquela empresa: John Cocke.
Esse projeto foi denominado IBM 801, o qual nem se tornou
comercial, mas serviu de base para os desenvolvimentos seguintes da
IBM nessa área;
• Anos depois em medos da década de 1980, na Universidade de
Stanford, na Califórnia, EUA, foi desenvolvida outra pesquisa pela
equipe de John Hennessey [HENN84]. Esse projeto se tornou
redundante nos processadores MIPS e na criação da empresa MIPS
Technology Inc.;
• Na mesma época (1980), na Universidade da Califórnia, EUA, foram
desenvolvidas pesquisas muito semelhantes. Lideradas por David
Patterson, foram criados os primeiros protótipos, RISC-1 e RISC-2, que
acabaram se tornando base para o surgimento dos processadores
SPARC.
Híbridas
• 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 chips mais novos
traduzam instruções x86 baseadas em arquitetura CISC em formas
baseadas em arquitetura RISC mais simples, utilizando prioridade de
execução.
Comparações
Referências Bibliográficas
• [Link]
computadores-livro/livro/[Link]/[Link]
• [Link]
compara%C3%A7%C3%A3o-de-suas-t%C3%A9cnicas
• [Link]
essas-duas-arquiteturas
• [Link]
• [Link]