Arquiteturas RISC. (Reduced Instructions Set Computers)



Documentos relacionados
Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Aula 26: Arquiteturas RISC vs. CISC

Algumas características especiais

Sistemas Computacionais II Professor Frederico Sauer

RISC X CISC - Pipeline

RISC - Reduced Instruction Set Computer

Informática I. Aula 5. Aula 5-13/05/2006 1

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Organização e Arquitetura de Computadores I. de Computadores

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Máquinas Multiníveis

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:


Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Organização e Arquitetura de Computadores. Hugo Barros @hugobarros.com.br

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

ARQUITETURA DE COMPUTADORES

Arquitetura de processadores: RISC e CISC

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES ARQUITETURAS RISC E CISC. Prof. Dr. Daniel Caetano

Sistemas Operacionais

Capítulo 1 Introdução

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

Geração de código intermediário. Novembro 2006

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

SIS17-Arquitetura de Computadores

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Edeyson Andrade Gomes

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

ULA Sinais de Controle enviados pela UC

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

SSC510 Arquitetura de Computadores. 2ª aula

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Figura 1 - O computador

ALP Algoritmos e Programação. . Linguagens para Computadores

3. Arquitetura Básica do Computador

Microarquiteturas Avançadas

Organização e Arquitetura de Computadores I

Introdução aos Computadores

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos

Arquitetura e Organização de Computadores

Computadores de Programação (MAB353)

Análises Geração RI (representação intermediária) Código Intermediário

Componentes de um Computador: Modelo Von Neumann

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

BARRAMENTO DO SISTEMA

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Arquitetura de Computadores I

Introdução à Arquitetura de Computadores

Organização de Computadores 1

28/9/2010. Unidade de Controle Funcionamento e Implementação

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

Componentes do Computador e. aula 3. Profa. Débora Matos

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura de Computadores. Sistemas Operacionais IV

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo ("pipeline") Execução de programas

Agenda do Mini-Curso. Sérgio Yoshio Fujii. Ethan Boardman.

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Sistemas Operacionais. Revisando alguns Conceitos de Hardware

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Unidade Central de Processamento

Paralelismo a Nível de Instrução

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

Organização e Arquitetura de Computadores

Arquitetura de Computadores I

ARQUITETURA DE COMPUTADORES

Evolução dos Processadores

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Memória cache. Prof. Francisco Adelton

Sistemas Operacionais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores. Ivan Saraiva Silva

Organização e Arquitetura de Computadores I. de Computadores

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

Organização e Arquitetura de Computadores I

UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE

Dadas a base e a altura de um triangulo, determinar sua área.

Organização e Arquitetura de Computadores I

Transcrição:

Arquiteturas RISC (Reduced Instructions Set Computers) 1

INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina da sua implementação. Ex.: IBM System /360 e DEC PDP! Unidade de Controle Microprogramada: Sugerida por Wilkes 1951 -, facilitou a implementação da UC e deu suporte ao conceito de família! Memória Cache: sua inserção melhorou dramaticamente as diferenças de velocidade entre processador e memória principal! Pipelining: Meio através do qual foi introduzido o conceito de paralelismo dentro do modelo naturalmente sequencial de um programa de máquina 2

INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! Multiprocessadores: Sistemas com modelos variados que fazem uso de diversos processadores para aumentar o desempenho dos sistemas! A esta lista deve ser adicionada uma das mais importantes inovações: Reduced Instruction Set Computers - RISC 3

RISC PRINCIPAIS CARACTERÍSTICAS! Conjunto limitado e simplificado de instruções de máquinas! Grande número de registradores de uso geral e utilização de tecnologia de compiladores para otimizar o uso destes registradores! Ênfase na otimização do pipeline de instruções 4

CARACTERÍSTICAS DA EXECUÇÃO DAS INSTRUÇÕES! Com o uso crescente dos computadores a complexidade do software cresceu e o seu custo também! Em resposta, a industria desenvolveu linguagens de programação de alto nível mais complexas e poderosas (FORTRAN, C, ADA)! Com isto, os programas passaram a ser escritos de forma mais concisa, com ênfase nos detalhes associados ao problema e fazendo uso da programação estruturada! Resultado: Gap Semântico distância entre os recursos de programação que a linguagem de alto nível oferece e os recursos de programação que a máquina dispõe 5

CARACTERÍSTICAS DA EXECUÇÃO DAS INSTRUÇÕES! Sintomas do Gap Semântico: Ø Execução ineficiente Ø Tamanho de programa em linguagem de máquina excessivamente grande Ø Complexidade na construção de compiladores 6

CARACTERÍSTICAS DA EXECUÇÃO DAS INSTRUÇÕES! Na tentativa de diminuir o Gap Semântico, os projetistas passaram a oferecer máquinas que continham: Ø Um grande conjunto de instruções Ø Dezenas de modos de endereçamento Ø Vários comandos de linguagem de alto nível implementados em hardware! No entanto, estudos sobre como se dá o comportamento dinâmico de um programa em execução sugerem uma abordagem em outro sentido 7

INTERAÇÃO CPU/MEMÓRIA! A análise do comportamento de um programa nos seus aspectos estático (código fonte) e dinâmico (em execução) pode dar indicações de como ocorre a interação entre cpu e memória! Diversos estudos feitos em programas escritos em linguagem de alto nível demonstram que Tabela 2: Ø Comandos de atribuição ocorrem com elevada frequência Ø Comandos condicionais (if, loop) também predominam, sugerindo que um mecanismo adequado de controle de sequência deve exitir no nível de máquina 8

9

INTERAÇÃO CPU/MEMÓRIA! Quando se analisou, no entanto, o consumo de tempo de execução dos comandos em um programa, um estudo de Patterson 1982 determinou que Tabela 3: Ø As colunas 2 e 3 da Tabela 3 mostram as medidas ponderadas do tempo real gasto por cada instrução Ø Os resultados sugerem que chamadas e retornos de procedimentos são as operações que consomem mais tempos de execução 10

11

USO DE OPERANDOS! Os tipos dos operandos e a frequência do seu uso determinam a organização da memória para o armazenamento e a organização dos modos de endereçamento para o acesso! Estudos na forma de uso dos operandos em programa sugerem que Tabela 4: Ø A maioria das referências são para variáveis de tipo escalar simples Ø Mais de 80% dessas variáveis escalares são também variáveis locais Ø Nas referências a variáveis do tipo array existe a necessidade de acesso ao seu índice que também é uma variável escalar e local Ø Tais estudos sugerem que o acesso a variáveis escalares deve ser otimizado com o armazenamento em registradores, por exemplo 12

13

CHAMADAS DE PROCEDIMENTOS! Como visto, chamadas a procedimentos estão entre as instruções que mais consomem tempo de execução! Dois aspectos são importantes: o número de parâmetros e variáveis locais, e a profundidade das chamadas aninhadas! Um estudo de Tanenbaum encontrou que 98% das chamadas dinâmicas a procedimentos passavam menos que 6 parâmetros e 92% deles usavam menos de 6 variáveis locais! Estes resultados mostram que o número de palavras requeridas por ativação de procedimentos não é grande! Um outro estudo, realizado em Berkeley, encontrou que é raro ter sequencias longas e ininterruptas de chamadas de procedimentos seguidas de seus respectivos retornos 14

CARACTERÍSTICAS DAS ARQUITETURAS RISC! Com base nos estudos apresentados, três elementos emergem que caracterizam fortemente as arquiteturas RISC: Ø Uso de um grande número de registradores para otimizar a referência a operandos (parâmetros, variáveis locais e variáveis escalares) Ø Projeto otimizado do Pipeline de Instruções para lidar com a alta proporção de desvios condicionais e chamadas a procedimentos Ø Um conjunto reduzido e simplificado de instruções para permitir a implementação em hardware da UC 15

CARACTERÍSTICAS DAS ARQUITETURAS RISC! Outras características igualmente importantes: Ø Execução de uma instrução por ciclo Ø Operações Registrador a Registrador Ø Modos de endereçamento simplificado Ø Formato da instrução simplificado 16

USO DE UM GRANDE NÚMERO DE REGISTRADORES! Como visto, a maior parte das operações em programas típicos correspondem a comandos de atribuição (A=B)! Além disso, chamadas a procedimentos estão entre as instruções que mais consomem tempo de execução! Solução: Ø Utilizar um maior número de registradores para viabilizar estas operações com desempenho máximo COMO??? 17

JANELA DE REGISTROS! O maior custo das chamadas de procedimentos está associado à passagem de parâmetros e a alocação de espaço para variáveis locais! Uma abordagem visando desempenho buscaria alocar parâmetros de procedimentos e variáveis locais em registradores Como??? 1. Resultados anteriores mostraram que procedimentos típicos empregam poucos parâmetros e poucas variáveis locais 2. A profundidade das chamadas aninhadas de procedimentos não é grande (Proc A chama Proc B que chama Proc C...)! Para explorar estas propriedades, múltiplos conjuntos pequenos de registradores podem ser usados 18

JANELA DE REGISTROS Ganho???! Uma chamada de procedimento faz com que a CPU mude para usar um conjunto diferente de registradores em vez de salvar o conteúdo dos registradores atuais na memória! O conjunto de registradores usados por um procedimento para a passagem de parâmetros e alocação de variáveis locais é conhecido como janela de ativação! Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica na memória 19

JANELA DE REGISTROS! Para tornar o uso dos registradores mais eficiente ainda, janelas de ativação distintas podem ser sobrepostas: 20

ORGANIZAÇÃO DOS REGISTRADORES! Para manipular qualquer padrão possível de chamadas e retornos de procedimentos o número de janelas de ativação não deveria possuir limites! Como isso não é possível (nem necessário) uma organização das janelas sob a forma de buffer circular usando apenas os registradores é sugerida! Caso o número de chamadas de procedimentos aninhadas ultrapasse o número de janelas disponíveis, a memória pode ser usada para armazenar dados de ativações mais antigas! Estudos mostram que, com 8 janelas, o uso da memória ocorre em apenas 1% das chamadas aninhadas de procedimentos 21

No modelo ao lado, até 5 procedimentos aninhados podem ser chamados sem ser feito uso da memória. Por que? 22

VARIÁVEIS GLOBAIS! Variáveis comuns a todos os procedimentos de um programa podem ser armazenadas na memória e acessadas através de instruções que referenciam operandos na memória! Uma abordagem mais eficiente, no entanto, seria manter variáveis globais em um conjunto fixo de registradores! Para manter compatibilidade com o modelo de janelas de ativação, o conjunto de registradores deve ser dividido em dois sub-conjuntos: Registradores para variáveis globais (sem offset) Registradores para janelas de ativação (com offset) 23

CONJUNTO DE REGISTROS VERSUS CACHE! Em vez de usar um conjunto de registradores organizado como janelas de ativação não seria mais simples usar uma memória cache?! A tabela a seguir compara características das duas abordagens: 24

Esquemas de endereçamento: Conjunto de Registradores versus Cache 25

O PAPEL DO COMPILADOR PARA AS ARQUITETURAS RISC! A motivação para a adoção das arquiteturas RISC tem origem no comportamento dos programas! Com isso, o compilador exerce um papel fundamental para o sucesso da abordagem RISC! O compilador deve possuir bibliotecas com funções otimizadas, que executam operações mais complexas que as disponíveis no conjunto básico de instruções (Ex.: movimentação de grandes porções de memória)! Em uma máquina CISC tais funções seriam implementdas dentro do próprio conjunto de instruções! Outra função básica do compilador é manter, o tanto quanto possível, os operandos das instruções em execução em registradores 26

O PAPEL DO COMPILADOR PARA AS ARQUITETURAS RISC Exemplo de algoritmo de otimização do uso de registradores: 27

POR QUE CISC?! Simplificação da construção de compiladores? Na prática é muito difícil para o compilador explorar o conjunto de instruções complexas na geração de código A tarefa de otimização do código gerado visando a sua redução e a melhoria do uso do pipeline são ações muito mais difíceis de se executar com um conjunto complexo de instruções! CISC produz programas menores? O fato dos programas em linguagem simbólica (assembly) serem menores não garante que o código executável em bits também o seja Tomando por base o código gerado na máquina RISC I na tabela a seguir, existe pouca ou nenhuma economia no código gerado nas máquinas CISC 28

RAZÕES???! Como já visto, compiladores CISC tendem a favorecer instruções de máquina simples sistemas de execução simplificados! O número maior de instruções nas máquinas CISC produz códigos de instruções com um número maior de bits! Arquiteturas RISC enfatizam o uso de registradores que requerem poucos bits para serem identificados! A figura a seguir mostra a quantidade de bits que é movimentada entre a cpu e a memória em instruções do tipo memória-memória e registrador-registrador 29

30

CARACTERÍSTICAS RISC versus CISC! Passado o entusiasmo inicial sobre as máquinas RISC, percebese que: 1. Projetos RISC podem se beneficiar da inclusão de algumas idéias do modelo CISC Ex.: Power PC 2. Projetos CISC podem se beneficiar da inclusão de algumas idéias do modelo CISC Ex.: Pentium 31

CARACTERÍSTICAS RISC versus CISC A partir da comparação de diversas soluções RISC comerciais que surgiram recentemente, é consenso que as características a seguir são consideradas típicas de arquiteturas RISC: 1. Um tamanho único de instrução 2. O tamanho de instrução típico adotado é 4 bytes 3. Um número reduzido de modos de endereçamento, tipicamente menos que cinco 4. Inexistência de modo de endereçamento indireto memória a memória 5. Inexistência de operações que combinam load/store com op. aritméticas (ex.: soma com operando na memória) 6. Não mais que um operando na memória por instrução 7. Número de registradores internos entre 32 e 64 32