



































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Plataformas CISC e RISC
Tipologia: Notas de estudo
1 / 43
Esta página não é visível na pré-visualização
Não perca as partes importantes!




































Faculdade de Tecnologia (FT) Departamento de Tecnologia Curso: Ciência da Computação / Processamento de Dados Disciplina: Organização de Computadores II Profª.: Suely
Brasília/DF, 04 de novembro de 1996.
Faculdade de Tecnologia (FT) Departamento de Tecnologia Curso: Ciência da Computação / Processamento de Dados Disciplina: Organização de Computadores II Profª.: Suely
Euclides Pereira do Lago Júnior 96/2607- Marcelo Cândido Brito 96/2394- Marcondes José de Freitas Bastos 96/2396- Renato Toledo da Silva 96/2602-
A arquitetura RISC foi tratada de modo abrangente e agressivo no final da década de
Primeiro, os chamados microprocessadores RISC não apresenta , de fato, grandes benefícios na performance se comparados com os microprocessadores denominados CISC (Complex Instruction Set Computing). Essas vantagens teóricas foram muito ressaltadas a princípio. Um conjunto de instruções menor e mais rápido, por exemplo, também requer que mais instruções sejam executadas. Além disso, estratégias como conjuntos múltiplos de registradores e pipelining (encadeamento) não estão diretamente relacionadas a conjuntos reduzidos de instruções. Os projetos tradicionais dos processadores x86 poderiam empregar as mesmas estratégias.
Na verdade, os tais microprocessadores RISC não chegam perto dos projetos verdadeiramente RISC. Eles possuem conjuntos de instruções relativamente grandes e complexos, se comparados com conceitos RISC "puros". Eles seriam descritos mais precisamente com a expressão influenciado pela arquitetura RISC. O resultado prático de todos esses fatos é que os processadores x86 da Intel e de um número cada vez maior de concorrentes, como a Advanced Micro Devices (AMD) e a Cyrix, conseguiram garantir sua posição contra os novos projetos influenciados pela arquitetura RISC.
A segunda razão é a falta de compatibilidade com versões anteriores. Os usuários simplesmente não querem abrir mão de tudo que já possuem.
O sucesso do Windows 3.0 da Microsoft e do OS/2 2.0 ilustra bem essa idéia. Nem o Windows 1.x ou 2.x e nem o OS/2 1.x foram bem sucedidos. As primeiras versões de ambos os pacotes sofriam do mesmo mal: incapacidade para rodar aplicativos que os usuários já
A tecnologia RISC (Reduced Instruction Set Computing) foi desenvolvida pela IBM nos anos 70 e o primeiro chip surgiu em 1980. Sua proposta baseou-se em um conjunto reduzido de instruções, sendo definidas apenas as mais freqüentemente utilizadas e se evitando o uso de microcódigos. As instruções também seriam simplificadas, trabalhando com apenas um operando.
As operações enfatizavam o uso de registradores, sendo o acesso à memória limitado a instruções tipo load/store. Assim, o processador g gastaria apenas um ciclo por instrução. Porém, o que sucedeu não foi tão simples assim, pois havia muita dificuldade em se escrever programas complexos utilizando um conjunto muito reduzido de instruções. Então este conjunto foi incrementado com novas instruções, como as necessárias para trabalhar com memória virtual, multiprocessamento e assim por diante.
A tecnologia RISC começou a ser promovida no mercado com o surgimento das estações de trabalho científicas, pois sua atividade básica é "CPU bound". Os chips CISC (Complex Instrution Set Computing) de aplicação mais geral - típicas de ambientes comerciais
Uma comparação apenas a nível de processador e sua técnica não é correta. Muitos dos fatores que aumentam a velocidade de um processador RISC, não são inerentes a esta tecnologia (como uso de cache, pipeline de instruções e grande número de registradores na CPU), sendo que estes recursos estão disponíveis a qualquer projeto de computador, sendo usados também em máquinas CISC.
A análise dos processadores do mercado mostra que nos aspectos de mips ou operações aritméticas com números inteiros (SPEC Integer), o desempenho dos chips RISC e
CISC são similares; em ponto flutuante (SPEC Floating Point) os RISC tendem a apresentar resultados melhores, embora o Pentium lhes seja equivalente.
Cada vez mais as tecnologias RISC e CISC estão se aproximando: processadores RISC estão aumentando seu conjunto de instruções e os CISC estão adotando técnicas originalmente implementadas nos RISC. Por exemplo, o número de ciclos por instrução é bastante similar em ambos. O resultado prático é que o "path length" destes processadores para executar uma tarefa é praticamente igual.
As razões para isso são simples. Em aplicações comerciais, a CPU trabalha cerca de 30% do tempo com instruções de movimentação de cadeias de caracteres de um lugar a outro na memória; em programação Cobol é interessante dispor de instruções de aritmética decimal e trabalhar com operandos "não alinhados". Desta forma, será necessário adicionar-se instruções tipicamente CISC para trabalhar adequadamente com estas tarefas.
O Pentium, segundo a Intel, utiliza tecnologia CRISC, acoplamento das duas técnicas. Na verdade algumas máquinas RISC utilizam poucas de suas técnicas básicas, ao mesmo tempo que implementam conceitos típicos dos projetos CISC; entretanto, adotam o jargão RISC por questão de marketing.
Um ambiente comercial é caracterizado por processamento transacional, com muita manipulação de cadeias e inteiros além de alto fluxo de entrada/saída. Já o científico se caracteriza por grande número de instruções de ponto flutuante. A conclusão lógica é que as máquinas dos dois tipos tem diferentes concepções para diferentes utilizações.
de bus, suporte a periféricos, ambiente operacional, suporte a softwares e custos de manutenção. Com tanta sobreposição entre a capacidade (e custos) das plataformas RISC e CISC, a arquitetura do processador deixa de ser uma consideração importante para o usuário final.
Nessa próxima parte examinaremos as razões da convergência da tecnologia de processadores e analisaremos as tendências mais recentes, a fim de identificar quais plataformas específicas têm chances de sobreviver em uma época de crescente competição e redução da diferenciação de produtos a nível do processador.
As plataformas baseadas em CISC (como as que utilizam os microprocessadores x da Intel e a série 68000 da Motorola) ainda dominam o grupo de microcomputadores e superam as workstations RISC. Isto é devido às plataformas CISC custarem menos e oferecerem uma base muito maior de suporte de softwares. O número de pacotes de software para os PCs da IBM e seus compatíveis supera aqueles para as workstations UNIX mais utilizadas, e tem também um custo muito menor, devido às economias de escala e ao aumento da competição.
Comparado aos processadores RISC, os chips CISC são caracterizados por possuir conjuntos maiores de instruções (de algumas dúzias a algumas centenas de instruções). Se considerarmos também os conjuntos de instruções dos processadores mais recentes e de maior potência da mesma família (por exemplo o Pentium 200 MHz da Intel versus o 88088 da Motorola) verificaremos que os mesmos são superconjuntos se comparados a seus antecessores. Isto significa que softwares aplicativos mais antigos geralmente operarão em equipamentos que utilizem processadores da mesma família. Um novo software pode ser criado para que utilize ou o conjunto de instruções do processador mais antigo (8088 no caso dos PCs IBM e seus compatíveis) ou defaults do mesmo se um conjunto de instruções de mais alto nível não estiver disponível.
Porém, existe uma tendência de criarem softwares que não operam em toda a base de PCs instalada. Isto porque os equipamentos mais antigos não possuem os recursos de sistema (por exemplo, resolução do monitor e capacidade de memória) necessários para rodar os atuais softwares gráficos ou orientados para redes. Mesmo quando os recursos destes equipamentos são adequados, a exigência do software para lidar com todas as deferentes configurações de equipamento e com o conjunto de instruções necessariamente diminuiria o seu desempenho. Esta tendência deve continuar com a emergência dos sistemas operacionais realmente de 32 bits que podem explorar as potentes instruções de 64 bits dos mais novos processadores CISC.
Nos processadores CISC, a lógica para a maioria das instruções, com exceção das mais primitivas (shift, add, etc...), é guardada em microcódigo no processador, enquanto que para o processador RISC, é fornecida por software. Considere, por exemplo, uma operação de multiplicação. A maioria dos chips CISC possui como parte de seu conjunto de instruções uma instrução de multiplicação (por exemplo, MUL ou IMUL para a série x86). Porém um chip RISC pode não possuir esta operação de multiplicação, devendo a mesma ser feita por uma seqüência de instruções primárias como "adds" e "shifts".
Os microprocessadores RISC (como aqueles utilizados nas workstations da Sun Microsistems) são baseados em um pequeno conjunto de instruções bastante básicas. A maioria das instruções de alto nível que estão embutidas nos processadores CISC teriam que ser escritas como algoritmos de software. Mas os processadores RISC possuem a vantagem que com seus conjuntos de instruções menores possibilitam a decodificação e execução das instruções muito mais rapidamente do que seria possível ao processador CISC. Todas as instruções RISC também geralmente possuem palavras do mesmo tamanho e estão restritas a dois operandos, enquanto que o conjunto de instruções do processador CISC normalmente inclui instruções de 8, 16 e 32 bits e muitas operações necessitam de mais de dois operandos.
Ainda mais uma vantagem dos processadores RISC é que suas instruções pegam seus operandos somente dos registradores. Os operandos são transferidos da memória para os registradores embutidos no processador com instruções separadas. Estas instruções não fazem nada mais que carregar os registradores e guardar seu conteúdo na memória. Por esta razão,
Tanto o CISC como o RISC são casos especiais de arquitetura na qual os operandos são guardados em registradores multiuso, permitindo rápido acesso a registradores específicos. Os processadores mais antigos utilizavam arquiteturas baseadas em pilha (stack) e acumulador. Por exemplo, o 6502 (utilizado no computador Apple II) possuía uma arquitetura baseada em acumulador, assim como vários chips de calculadoras de mão. As arquiteturas stack eram largamente utilizadas em aplicações (tais como aquelas baseadas na linguagem de programação Forth) onde os operandos eram acessados em uma seqüência já fixa e o primeiro operando a ser acessado era o último a ser colocado no stack.
Ambas as arquiteturas RISC e CISC não são novas. Ambas eram utilizadas em mainframes e minicomputadores antes de serem introduzidas nas plataformas baseadas em microprocessadores. A arquitetura RISC foi desenvolvida em 1983 pela Hewlett - Packard, mas era originalmente uma implementação em múltiplos chips para superminicomputadores. Os chips RISC foram introduzidos nas workstations técnicas UNIX no final dos anos 80.
O progresso da tecnologia de semicondutores tornou a arquitetura RISC plausível e de custo viável para as workstations. Uma litografia mais densa nos chips (por exemplo, mais transistores por chips) e wafers mais largos ( mais chips por wafers) aumentaram o desempenho e a capacidade, enquanto abaixavam os custos dos chips de memória: e a arquitetura RISC é intensiva em memória (como sugerido na discussão acima sobre instruções separadas para buscas na memória). Acessos lentos à memória se tornariam um gargalo no desempenho de um processador RISC.
Estes mesmos avanços na tecnologia de semicondutores tornaram possível a colocação de mais circuitos no próprio chip RISC. Como resultado, a maioria dos chips RISC possui um gerenciador de memória embutido para dar suporte ao modelo de paginação por demanda, empregado na maioria das versões UNIX.
Não somente as RAMs dinâmicas como também as RAMs estáticas tornaram-se mais rápidas, densas e baratas. As SRAMs são por si só mais rápidas do que as DRAMs porque elas evitam o ciclo de resfriamento das versões dinâmicas. Isto permitiu que utilizassem estratégias de cache, nas quais uma pequena quantidade de memória SRAM suporta uma
grande quantidade de DRAMs mais lentas afim de aumentar a velocidade de acesso à memória. Inicialmente as SRAMs para os processadores RISC ficavam alojadas em chips separados, mas os mais recentes avanços da tecnologia tornaram possível incluir a SRAM no próprio chip do processador, minimizando atrasos de propagação e permitindo cache das instruções, como se isto já fosse inerente à arquitetura do processador.
Quadro 1
Instrução Registro Execução Acesso de Dados
Escreve o Resultado Ciclo 1 Instrução 1 Ciclo 2 Instrução 2^ Instrução 1 Ciclo 3 Instrução 3^ Instrução 2^ Instrução 1 Ciclo 4 Instrução 4^ Instrução 3^ Instrução 2^ Instrução 1 Ciclo 5 Instrução 5^ Instrução 4^ Instrução 3^ Instrução 2^ Instrução 1 Fluxo da InstruçãoÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞ
No primeiro estágio, o processador pega um instrução da memória e a transfere para o registrador de instruções conforme indicado pelo contador do programa. No segundo estágio, as instruções decodificadas são movidas dos registradores e colocadas nos "source bus" como direcionado pela lógica de controle do processador. No terceiro estágio, a unidade aritmética e lógica (UAL executa a operação (por exemplo uma adição) utilizando o operando em seu "source bus". No quarto estágio, dados adicionais são carregados da memória ou do registrador temporário. De certa maneira, este é um segundo estágio de execução para aquelas operações que não foram completadas em um único ciclo (devido à precisão expandida ou operandos adicionais). Finalmente no quinto estágio, os resultados são transferidos dos buses de saída da UAL aos registradores de destino.
No pipeline do Quadro 1, cada instrução leva um total de cinco ciclos para completar sua execução. Mas à medida que as instruções se movem passo a passo através do pipeline e são executadas em paralelo, uma nova instrução é completada a cada um dos ciclos. Desta maneira, cinco instruções podem ser completadas em semente nove ciclos do relógio, opondo- se aos 25 ciclos que seriam necessários se elas fossem executadas separadamente em um processador que não fosse pipelined. O tempo que os quatro ciclos iniciais requerem para preencher o pipeline é conhecido como latência do processador. Em geral, pipelines mais lon- gos oferecem menor granulação e, portanto, um processamento mais rápido, porém possuem uma latência mais alta.
Uma exigência importante da arquitetura pipelined, é que para colher os benefícios da mesma, as instruções enviadas ao pipeline, em qualquer momento, devem ser independentes. Se uma das instruções necessita do resultado de outra como seu operando (input), então estas duas instruções devem ser separadas de maneira a nunca estarem no mesmo pipeline simultaneamente, senão haverá travamento do pipeline. A segunda instrução teria que esperar até que a primeira completasse e gravasse todas as suas operações nos registradores de destino.
Entretanto, os processadores pipelined não podem oferecer uma performance além daquela de uma arquitetura comparável não-pipelened, a menos que o compilador (e/ou o programador) tenha evitado tais dependências entre as instruções. Esta é outra razão pela qual desenhar um compilador otimizado para processadores pipelined (e para outras arquiteturas complexas que exploram o paralelismo), pode ser considerada uma tarefa desafiadora. Por estas e outras razões, o desenvolvimento do software tendeu a se atrasar em relação aos rápidos melhoramentos na performance do hardware. Também os sistemas operacionais mais antigos e a maioria dos pacotes de aplicações falharam em explorar por completo o potencial das novas plataformas baseadas em RISC.
Os processadores CISC já se utilizam há bastante tempo da estratégia “prefetch”, porém não se imaginava possível um pipelining completo nestes processadores porque eles não possuíam o pequeno conjunto de instruções simplificadas do RISC. Portanto não haveria um conjunto fixo de operações comuns a todas as instruções. É claro que todas as mesmas necessitam de um operando, mesmo com a utilização da estratégia de “prefetch”.
Diferentemente dos processadores RISC, os CISC também não utilizavam de uma estratégia load/store uniforme para todas as instruções. Contudo, os últimos processadores CISC (por exemplo, o Intel Pentium e o 68050 da Motorola) possuem, de fato, pipelines e cache no chip. Isto foi conseguido com uma arquitetura híbrida, a qual a Intel chamou de CRISC (Complex reduced instruction set computing). Na unidade de processador matemático de ponto flutuante no mesmo chip, algumas instruções são executadas em estilo RISC, sem microcódigos e em um ciclo do clock.
Enquanto os processos CISC estão somente começando a se utilizar do pipeline e cache embutido, os processadores RISC já se utilizam de arquiteturas ainda mais avançadas e potentes. As arquiteturas que competem entre se não são mais a RISC e CISC, mas sim a RISC e a CRISC. Estas últimas empregam estratégias RISC para aumentar o desempenho. O novo objetivo será alcançar um crescente paralelismo e executar mais instruções por ciclos do clock. Duas arquiteturas, conhecidas como "Superpipelined" e "Superescalar", vem competindo nos laboratórios de pesquisa. A maioria dos novos chips tem dado ênfase à abordagem "Superescalar", apesar de também surgirem híbridos destas duas novas abordagens (muito parecido com a evolução do CRISC).
Os processadores superpipelined alcançam o paralelismo através da extensão do comprimento do pipeline, decrescendo assim a sua granulação e aumentando o número de instruções executadas por ciclo. Porém, devido a um número maior de instruções se encontrarem simultaneamente dentro do pipeline, problemas com interdependência entre as instruções e oscilações de dados (atrasos cumulativos devido a erros no cache, largura de faixa no bus e outros problemas de acesso a memória), aumentam o risco de travar o pipeline. Outra causa de possível travamento é a mudança do fluxo de instruções causado por interrupções e outros saltos ou ramificações na lógica do programa. Todos estes problemas podem ocorrer, em teoria, com qualquer pipeline, mas a sua probabilidade de ocorrência aumenta substancialmente com o superpipelining.
Um exemplo de um processador RISC superpipelined é o R5000 desenhado pela MIPS Computer (integrante da Silicon Graphics), que se utiliza de um pipeline de oito estágios. Os processadores RISC mais simples se utilizam de um pipeline de cinco estágios, portanto este pipeline mais longo do R5500 significa uma estratégia de arquitetura superpipelined.
Uma arquitetura superescalar aumenta o paralelismo por operar vários processadores pipelined separados simultaneamente. Esta estratégia e seus benefícios irão além da mera
utilização de processadores adicionais (como a utilização de chip coprocessador matemático separado nos PCs). Em uma verdadeira arquitetura superescalar, as operações ocorrem ao mesmo tempo em todos os processadores aumentando o número de instruções executadas por ciclo. Atualmente, isto significa que individualmente os processadores pipelined deveriam estar em um mesmo chip (para minimizar atrasos de propagação), que todos os buses e acessos à memória deveriam ser "cached"(para favorecer a redução dos atrasos), e que os buses deveriam ser largos o suficiente para acomodar simultaneamente várias instruções.
Um exemplo de um verdadeiro processador superescalar é o chip utilizado para as workstations IBM RS/6000. Este chip possui três seções principais: um processador de inteiros (FXU), uma unidade de ponto flutuante (FPU) e uma unidade cache de instruções (ICU). A ICU carrega duas instruções ao mesmo tempo da memória através de seu cache de instruções. Os caminhos do bus para/da ICU têm a largura de duas palavras. Desta maneira a ICU pode alimentar simultaneamente os pipelines da FXU e da FPU com as novas instruções.
A arquitetura superescalar do processador RS/6000 é a base do chip PowerPC, atualmente sendo desenvolvido em conjunto pela IBM, Apple e Motorola. O objetivo desta aliança é desenvolver a estratégia para a próxima geração de plataformas workstations, com desempenho superior ao dos existentes IBM PS/2 e Macintosh da Apple.
As tendências da tecnologia de semicondutores em grande parte determinam as estratégias de arquitetura que serão mais eficazes nos microprocessadores. Se as velocidades dos chips semicondutores estivessem crescendo mais que sua densidade de circuitos, não haveria justificativa em arriscar oscilações do clock e os problemas resultantes para o compilador em arquiteturas avançadas de pipeline. Poderíamos simplesmente aumentar a freqüência do clock de um processador mais simples. O PA (Precision Architecture) da Hewlett-Packard, não se utiliza nem das técnicas, de superpipelining, nem de superescalar. É somente uma bem projetada CPU pipelined com uma freqüência alta de clock.
Porém, as novas versões do RISC PA incluem um processador de ponto flutuante no mesmo chip a fim de competir com outros chips que oferecem este recurso. Portanto, assim como o chip 486 da Intel que também possui um processador de ponto flutuante no mesmo chip que a unidade de processamento de inteiros, poderíamos argumentar que ele é