Arquitectura de Computadores II Engenharia Informática (11545) Tecnologias e Sistemas de Informação (6621) Modos de entrada/saída Fonte: Arquitectura de Computadores, José Delgado, IST, 2004 Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 1
Modos de entrada/saída Modos de transferência de informação entre o processador/memória e os periféricos: Sob controlo do programa (polling); Por interrupção; Por acesso directo à memória (DMA Direct Memory Access); Com co-processador de entradas/saídas. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 2
Num extremo (polling), o processador trata de tudo. No outro, o processador limita-se a programar o co-processador; Dado que as entradas/saídas são lentas, a ideia é reduzir o tempo que o processador gasta à espera dos periféricos (libertando-o para outras tarefas). Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 3
Pooling O programa controla tudo; O processador faz espera activa contínua (senão pode perder dados) sobre periféricos lentos; A transferência é feita por software. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 4
Pooling Faz pedido ao periférico não pronto não Periférico pronto? pronto Transfere dado(s) entre a memória e o periférico Acabou? sim espera activa (latência) Transferência de informação (largura de banda) Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 5
Transferência p/ Interrupção A espera já não é activa; O processador só é incomodado quando há coisas para fazer; Cada periférico tem o seu device driver. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 6
Transferência p/ Interrupção Faz pedido ao periférico Interrupção! vai fazer outras coisas... Transfere dado(s) entre a memória e o periférico não Acabou? Regista fim de transferência Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 7 (Return From Exception) sim RFE
DMA: Direct Memory Access A transferência de informação entre o processador/memória e os periféricos é feita em hardware por um controlador especializado. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 8
DMA: Direct Memory Access O processador só tem de programar o controlador de DMA, escrevendo em portos próprios do controlador (que em si também é um periférico): Endereço de origem Endereço de destino Número de palavras a transferir Qual o modo de DMA Durante a transferência, os endereços de origem e destino são incrementados automaticamente. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 9
DMA: Direct Memory Access Na ausência de pedidos de DMA o processador funciona normalmente nos acessos à memória e/ou periféricos; Durante a transferência, o controlador de DMA toma controlo dos barramentos do sistema (endereços e dados); É a implementação em hardware das instruções de transferência de dados. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 10
DMA: Direct Memory Access Antes de iniciar a transferência, o controlador pede ao processador autorização para controlar os barramentos, usando sinais de protocolo (Bus Request e Bus Grant); Quando acaba, liberta-os logo (desactivando o Bus Request); Mesmo durante a transferência, o processador pode continuar a trabalhar internamente até precisar de aceder à memória (para acesso de dados ou para fetch). Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 11
Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 12
Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 13
Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 14
Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 15
Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 16
Tipos de DMA: Simultâneo (dado é lido da fonte e escrito ao mesmo tempo no destino através do bus dados); Sequencial (dado é lido primeiro para um registo interno do controlador e escrito a seguir permite transferências memória-memória) Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 17
Modos de DMA: Palavra, ou cycle stealing (o controlador liberta o bus após cada palavra transferida); Rajada, ou burst (controlador toma conta do bus até não haver mais palavras disponíveis imediatamente); Bloco (controlador toma conta do bus até todos os dados terem sido transferidos, mesmo que tenha de estar à espera de dados só para periféricos muito rápidos). Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 18
Co-processador de entradas/saídas É o modo mais flexível e poderoso de fazer entradas/saídas; O co-processador corresponde a um controlador de DMA que pode executar um programa (em vez de apenas modos fixos), fazendo fetch por si próprio; Tem um conjunto de instruções limitado, especializado em entradas/saídas; O co-processador partilha a memória do processador (e compete com ele no acesso ao bus e à memória. As rotinas de entradas/saídas têm de ser feitas com cuidado); A comunicação processador/co-processador faz-se tipicamente por variáveis partilhadas. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 19
Co-processador de entradas/saídas Memória Processador Co-processador Periférico 1 Periférico 2 Periférico 3 Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 20
Gerir vários periféricos Um computador tem normalmente vários periféricos e pode misturar os vários modos de transferência de dados. Deve-se ter em atenção: Deve-se ter em atenção: A transferência sob controlo do programa (polling) deve ser reservada para periféricos lentos, sem temporizações críticas e com protocolos que possam ser interrompidos A transferência por interrupções é mais eficiente, mas pesada para transferência de grandes quantidades de informação (a transferência em si é feita por software) A transferência por DMA (ou com co-processador) é a mais eficiente, mas o processador pode não conseguir atender interrupções durante uma transferência. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 21
Conclusões O desempenho dos computadores depende de vários factores que não são independentes (tecnologia, arquitectura e compiladores); O que interessa optimizar é o tempo de execução e não um dado factor (para comparação, usam-se benchmarks standard). Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 22
Conclusões Mesmo que se melhore um dos factores sem afectar os restantes, o tempo de execução pode não melhorar tanto como esse factor (lei de Amdahl); Os estrangulamentos acabam por ser dominantes ( lei do elo mais fraco...); Existem várias formas de um computador lidar com os periféricos (polling, interrupções, DMA, co-processador de entradas saídas, etc). A mais adequada depende da aplicação. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 23
Arquitectura de Computadores II Engenharia Informática (11545) Tecnologias e Sistemas de Informação (6621) Arquitectura CISC e RISC Fonte: Arquitectura de Computadores, José Delgado, IST, 2004 Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 24
Evolução das Arquitecturas Nos primórdios dos microprocessadores (>1971), o hardware evoluiu rapidamente, e primeiro que o software; A linguagem Pascal apareceu em 1971, C em 1974. A tecnologia dos compiladores teve uma evolução mais lenta (só na década de 80 houve uma maior evolução nas optimizações e geração do código); Na década de 70, os engenheiros do hardware desenharam os microprocessadores na base de incluir o maior número de funcionalidades possível, no pressuposto de que os compiladores iriam usar tudo o que eles pudessem incluir. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 25
Evolução das Arquitecturas No início da década de 80, D. Patterson e o seu grupo descobriram que afinal : As instruções mais simples dominavam nos programas As instruções mais complexas pouco ou nunca eram geradas pelos compiladores As instruções complexas complicavam toda a arquitectura, obrigando a diminuir a frequência do relógio (mesmo as instruções mais simples ficavam mais lentas). Tipo de instrução Frequência Leitura da memória 22% Salto condicional 20% Comparação R1, R2 16% Escrita na memória 12% ADD 8% AND 6% SUB 5% MOV R1, R2 4% CALL 1% RET 1% Outras 4% Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 26
Arquitectura RISC Em 1982, D. Patterson desenhou o RISC I, numa perspectiva minimalista (Reduced Instruction Set Computer): O hardware é o mais simples possível Não há pilha Só há duas instruções para aceder à memória (LOAD e STORE) Só há um modo de endereçamento Não há flags Poucas instruções, fáceis de descodificar Optimizado para processamento com estágios (a ver adiante) O compilador é o responsável por compensar a diminuição do nível da arquitectura (gerando um maior número de instruções) Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 27
Formato Fixo vs Variável Objectivo: simplificar as especificações da arquitectura para simplificar o hardware para o relógio ter a maior frequência possível. Problema: incluir uma constante de N bits numa instrução de um processador que só tem N bits. Solução CISC (formato variável: campo opcional que só existe nas instruções que têm a constante) Solução RISC (formato fixo: 2 instruções): Carrega parte baixa Carrega parte alta RISC = descodificação das instruções mais simples Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 28
CISC vs RISC Assim, arquitecturas clássicas foram apelidadas de CISC (Complex Instruction Set Computers). Característica típica CISC RISC Formato das instruções Variável Fixo Instruções Complexas e numerosas Simples e poucas Relógio Mais lento Mais rápido Ciclos de relógio/instrução Tipicamente > 2 Tipicamente 1 Modos de endereçamento Muitos Poucos Operandos Registos e memória Só registos Acesso à memória Muitas instruções Só LOAD-STORE Número de registos Pequeno Maior Objectivo fundamental Funcionalidade Desempenho Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 29
Actualmente Depois de algum fanatismo RISC, hoje a situação está mais equilibrada, com o melhor do RISC e CISC. O princípio RISC: não é só quanto mais simples o hardware, melhor mas sim o simples não deve ficar mais lento por causa do mais complicado. Deve-se optimizar o caso mais frequente Quase todos os processadores hoje em dia têm uma base RISC (conjunto de instruções simples e regular, formato das instruções fixo, LOAD-STORE, muitas instruções executa num só ciclo de relógio,...); O resistente é o Pentium, por compatibilidade, mas isso está a mudar com a nova arquitectura de 64 bits. Nuno Pombo / Paulo Fazendeiro Arquitectura Computadores II 2014/2015 30