Your SlideShare is downloading. ×
Augusto loureiro   sistemas microprocessados
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Augusto loureiro sistemas microprocessados

1,065

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,065
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Sistemas Microprocessados – ENGC50 Prof. Augusto Loureiro da Costa Departamento de Engenharia Elétrica Escola Poltécnica Universidade Federal da Bahia Augusto.loureiro@ufba.br 1
  • 2. Programa do Curso Introdução Desempenho de Sistemas de Computação: aspectos Arquitetura de Conjunto de Instruções Estrutura do processador: fluxo de dados e controle Sistemas de Entrada/Saída e comunicação Sistemas de Memória. 2
  • 3. Slides - referênciasftp://ftp.nuperc.unifacs.br/professor/celso/publico/html/Modulo1/University College of London, J. Crowcroft, S. Wilbur,www.cs.ucl.ac.uk/teaching/1B10 ©UCLUniversity of California, Berkeley, David Patterson’s lectureslides ©UCB, DAP’ 97www.cs.berkeley.edu/~pattrsn/152F97/index_lectures.htmlMorgan Kaufmann Publishers, Tod Amonwww.mkp.com/books_catalog/cod2/ph2_res.htm#slidesCopyright 1998 Morgan Kaufmann PublishersCentral Queensland University, A Silberschatz, P. Galvin,www.infocom.cqu.edu.au/Units/win99/85349/Resources/Lectures ©CQU 3
  • 4. INTRODUÇÃO 4
  • 5. O que é a Arquitetura de um Computador? Arquitetura de Computadores = Conjunto de Instruções (ISA - Instruction Set Architecture) + Organização da Máquina 5
  • 6. Conjunto de Instruções da Arquitetura (ISA) ... os atributos de um sistema [de computação] vistos pelo programador, i.e. a estrutura conceptual e o comportamento-- Organização da Memória funcional, são distintos da organização dos-- Tipos de dados e estruturas de dados: fluxos de dados e dos Codificações e representações controles da lógica e da-- Conjunto de Instruções implementação física. [Amdahl, Blaaw and-- Formato das Instruções Brooks, 1964]-- Modos de Endereçamento e Acesso de Dados e Instruções-- Condições de Exceção 6
  • 7. Conjunto de Instruções: Uma Interface Críticasoftware Conjunto de instruçõeshardware 7
  • 8. Conjunto de InstruçõesO conjunto de instruções especifica o mais baixonível das funcionalidades de uma máquina.O conjunto de instruções é como o “vocabulário”do computador; as instruções seriam suas“palavras”.É possível se fazer um mapeamento quase de1-para-1 entre as instruções de máquina(binárias) e representações simbólicas(mnemônicos) em linguagens de montagem (ouassembly) 8
  • 9. Exemplos de Conjunto de Instruções da ArquiteturaDigital Alpha (v1, v3) 1992-97HP PA-RISC (v1.1, v2.0) 1986-96Sun Sparc (v8, v9) 1987-95SGI MIPS (MIPS I, II, III, IV, V) 1986-96Intel (8086,80286,80386, 1978-00 80486,Pentium, MMX, ...) 9
  • 10. MIPS R3000 Instruction Set Architecture Registradores R0 - R31 Tipo de Instrução Load/Store Computational Jump and Branch PC Floating Point (coprocessor) HI Memory Management LO Special 3 Formatos de Instrução: TODOS com 32 bits de comprimento OP rs rt rd sa funct OP rs rt immediate OP jump target Q: Quem já ouviu falar desta arquitetura? 10
  • 11. Organização da MáquinaCapacidades & Características de Desempenho dasPrincipais Unidades Funcionais (Fus) (ex., Registradores, ULA, Shifters, Unidades Lógicas, ...)Forma de interconexão dos componentesFluxo de informação entre componentesLógica e forma pela qual o fluxo de informações écontroladoImplementação do ISA sobre as Unidades FuncionaisDescrição do Nível de Transferência dos Registros 11
  • 12. Exemplo de OrganizaçãoTI SuperSPARCtm TMS390Z50 da Sun SPARCstation20 MBus Module SuperSPARC Floating-point Unit L2 CC DRAM Integer Unit $ MBus Controller Inst Ref Data L64852 MBus control M-S Adapter STDIO Cache MMU Cache SBus serial Store SCSI kbd SBus mouse Buffer DMA Ethernet audio RTC Bus Interface SBus Boot PROM Cards Floppy 12
  • 13. O que é Arquitetura de Computadores?Coordenação de níveis de abstração Application Operating Compiler System ISA - Instruction Set Architecture Instr. Set Proc. I/O system Digital Design Circuit Design Sujeita a um conjunto de influências em constante e rápidas alterações. 13
  • 14. Desempenho crescente. . .Computadores têm se tornadoincrivelmente mais poderosos desdeque foram inventados nas décadas de30-40.• Um palm-top hoje é tipicamente mais potente que ...• ... uma máquina IBM que ocupava uma sala na geração anterior. 14
  • 15. Influências nas Arquiteturas... Tecnologia Linguagens de ProgramaçãoAplicações Arquitetura de Computadores História Sistemas Operacionais (A = F / M) Levando em conta que... O ENIAC tem 18000 válvulas e pesa 30 toneladas, no futuro os computadores deverão ter 1000 válvulas e pesar 1,5 toneladas Revista Popular Mechanics, março de 1949. 15
  • 16. Tecnologia: memóriacapacidade do chip DRAM Em ~1985 o processador “single- chip” (32-bit) e o computador DRAM “single-board” apareceram Year Size ⇒ workstations, personal 1980 64 Kb computers, multiprocessors 1983 256 Kb surgiram nessa era 1986 1 Mb 1989 4 Mb Em 2002 + δt, este caminho nos 1992 16 Mb leva a crer que teremos mainframes 1996 64 Mb comparados a computadores 1999 256 Mb “single-chip” (talvez 2 ou + chips) 2002 1 Gb 2009 ? Gb 16
  • 17. Densidade de Lógica dos Microprocessadores100000000 Tecnologia: densidade 10000000 R10000 PentiumNúmero de Transistors R4400 i80486 1000000 i80386 i80286 100000 R3010 SU MIPS i8086 i80x86 M68K 10000 MIPS Alpha i4004 1000 17 1970 1975 1980 1985 1990 1995 2000 2005
  • 18. Projeções de Desempenho 1000 SupercomputersLog do desempenho 100 Mainframes 10 Minicomputers Microprocessors 1 0.1 1965 1970 1975 1980 1985 1990 1995 2000 18
  • 19. Desempenho: CPU e Redes (Patterson)Desempenho Relativo CPU (spec) 1000 LAN DEC 1 Gb ATM 100 Alpha MIPS 10 M/120 100 Mb FDDI 10 Mb 1 Ano 1980 1985 1990 1995 2000 19
  • 20. Tecnologia: mudanças drásticasProcessador capacidade lógica: ~ 30% por ano taxa de clock: ~ 20% por anoMemória Capacidade DRAM: ~ 60% por ano (4x em 3 anos) Velocidade: ~ 10% por ano Custo por bit: ganho de 25% por anoDiscos Capacidade: ~ 60% por ano 20
  • 21. Desempenho dos Processadores Desempenho aumenta ~ 50% por ano (2x a cada 1.5 ano) 350 300 RISC 250Desempenho 200 Introdução do 150 RISC Intel x86 100 50 35%/yr 0 1986 1988 1989 1990 1995 1987 1991 1992 1982 1985 1993 1994 1983 1984 Ano Quais as possibilidades do RISC em relação às outras? 21
  • 22. Linguagens e Aplicações CAD, CAM, CAE, . . . MAC, Unix, DOS, . . . Multimídia, . . . World Wide Web, . . . JAVA, . . . ??? Tecnologia criando necessidades versus necessidades demandando novas tecnologias 22
  • 23. Assim ... Design Arquitetura é um processo iterativo -- Busca de espaço para possíveis projetos -- Observar todos os níveis de sistemas de Análise computaçãoCriatividade Custo/ Análise de Desempenho Boas Idéias Idéias Medíocres Idéias Ruins 23
  • 24. Visão geral de Arquitetura de Computadores Arquitetura de Computadores e Engenharia Conjunto de Instruções Organização do Computador Interfaces Componentes de Hardware Visão Compilador/Sistema Visão do Projeto Lógico “Arquitetura da Construção” “Engenharia de Construção” 24
  • 25. Arquitetura Básica dos Computadores Atuais CPU: ALU interrupts (datapath) + control Cache main bus Main I/O I/O I/O Memory Controller Controller Controller Graphics Keyboard display 25
  • 26. Como se fazer entender pelo computador? “Linguagem” do computador : 100011000001 (bits) Números binários: base da teoria computacional 1. Primórdios: uso da linguagem nativa em binário!!! 2. Linguagem de Montagem (Assembly) Montador: traduz uma versão simbólica das instruções para sua representação binária na arquitetura add A, B → montador → 100011000001 3. Linguagem de Programação de alto-nível Compilador: traduz instruções de alto-nível para instruções binárias diretamente ou via um montador A + B → compilador → add A, B → montador →100011000001 ou A + B → compilador → 100011000001 26
  • 27. Mas é só isso?Existe ainda um programa que gerencia os recursosda máquina durante a execução dos programas: oSISTEMA OPERACIONAL (SO)Operações de Entrada/Saída (E/S), “carga” doprograma na memória, exceções, etc.O SO funciona como um gerente dos recursos,escondendo o acesso direto ao hardware dos usuáriosMais ainda: multiprocessamento, gerência dearquivos, processamento distribuído, ...Assim, existem diversas camadas e serviçosdisponíveis para auxiliar nossa comunicação com amáquina. 27
  • 28. Uma questão? 15o. bit 6o. bit 214 25 ... 20O que é isto?00000000001000100100000000100000 • Pode ser lido como: 25 + 214 + 217 + 221 = 32 + 16384 + 131072 + 2097152 = 2244640 28
  • 29. Diálogo com o computador...• O que é isto?0000000000000001000000100000100000000000010000000000000000000110000010000001001000000000100000000000000000100000001001000001010000000 00100010 Melhor assim?00000000 00000001 00000010 00001000 0000000 0010000000000000 00000011 00000100 00001001 0000000 0010000000000000 00001000 00001001 00000101 0000000 00100010 29
  • 30. Traduzindo... E assim? 0 1 2 8 0 32 0 3 4 9 0 32 0 8 9 5 0 34• Melhorando... add $8, $1, $2 add $9, $3, $4 sub $5, $8, $9 30
  • 31. Traduzindo mais um pouco... Melhorando ainda mais... $8 = $1 + $2 $9 = $3 + $4 $5 = $8 - $9 • Claro agora? u=a+b v = c + d; x=u-v• Sim, é claro: x = (a+b) - (c+d) 31
  • 32. Níveis de Representação Programa em Linguagem de Alto-NívelCompilador x = (a+b) Compilador x = x – (c+d) Programa em Linguagem de Montagem lw $15, 0($2)Montador ou lw $16, 4($2)Assembler sw $16, 0($2) sw $15, 4($2) Programa em Linguagem de Máquina 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 Interpretação da Máquina 0101 1000 0000 1001 1100 0110 1010 1111 Especificação do controle de sinais ALUOP[0:3] <= InstReg[9:11] & MASK ° ° 32
  • 33. Níveis de Organização SPARCstation 20 ComputadorObjetivo do Projeto: Processador Memória Dispositivos25% do custo - Processador25% do custo - Memória(configuração mínima) Controle EntradaResto – dispositivos I/O,energia, gabinete, etc. Datapath Saída 33
  • 34. Executando um Programa: Ciclo de ExecuçãoInstruction Obtém uma instrução do programa armazenado FetchInstruction Decode Determine as ações e o tamanho da instruções Operand Localiza e obtém os dados (operandos) Fetch Execute Calcula um valor do resultado ou status Result Store Armazena resultados na memória para uso futuro NextInstruction Determina a próxima instrução 34
  • 35. Instruções Básicas de Programas Conjunto de instruções = linguagem de máquina Instrução: opcode [operandos] Tipos de instrução: Instruções aritméticas e lógicas (add, sub, AND, OR) Referência à memória ou Load&store Desvios Condicionais: if + goto / if-then-else Desvios incondicionais ou saltos (jumps) Formas de endereçamento: complexidade da arquite- tura → em RISC poucas formas de endereçamento direto a operandos; instruções de mesmo tamanho 35
  • 36. RegistradoresRegistradores armazenam palavras simples na CPU, emlocais próximos à ULA. A ULA tem acesso extremamente rápido aos registradoresEm arquiteturas RISC modernas Todas as instruções são executadas sobre dados armazenados em registradores Instruções do tipo carregar/armazenar (load/store) ↔ registradores MIPS:32 registradores indicados: $0...$31 36
  • 37. Avaliando o desempenho de arquiteturas Métricas de projeto: - Pode ser implementado em quanto tempo e com qual custo? - Pode ser programado? Fácil para compilar? CPI Métricas estáticas: - Quantos bytes o programa ocupa na memória? Métricas dinâmicas: Inst. Count Cycle Time - Quantas instruções são executadas? - Quantos bytes o processador deve buscar para executar o programa? - Quantos clocks são requeridos por instrução (CPI)? - Qual valor de clock ideal? Melhor métrica: Tempo para executar o programa! 37NOTA: isto depende do conjunto de instruções, da organização do processador e dastécnicas de compilação
  • 38. Aspectos do Desempenho da CPU CPU time CPU time = Seconds = Seconds = Instructions x Cycles = Instructions x Cycles x Seconds x Seconds Program Program Program Program Instruction Instruction Cycle Cycle instr count CPI clock rate Programa X Compilador X X Conj. Instr. X X Organização X X Tecnologia X 38
  • 39. Lei de AmdahlGanho de velocidade (speed-up) devido ao ganho E:speedup(E) = TExec sem E = Desempenho com E TExec com E Desempenho sem ESuponha que a melhoria E acelere a parte S e orestante do programa não é afetada pela melhoria:TExec(com E) = ((1-F) + F/S) × TExec(sem E)speedup(com E) = 1 1 (1-F) + F/S 39
  • 40. Desempenho x TecnologiaPoder da Tecnologia: 1.2 x 1.2 x 1.2 = 1.7 x / ano Tamanho: miniaturização ganha 10%/ ano → velocidade de chaveamento ganha 1.2 / ano. Densidade: aumenta 1.2x / ano. Área da pastilha (die): 1.2x / ano.A lição da abordagem RISC é deixar o conjunto deinstruções (ISA) o mais simples possível: Ciclo de projeto curto → explora de maneira otimizada a tecnologia (~3 anos) Técnicas de pipeline e previsão de desvios (branches) Caches on-chip maiores e mais sofisticados 40
  • 41. PROCESSADOR E MEMÓRIA 41
  • 42. Onde estamos agora?Cinco componentes do computador Computer Processor Memory Devices Control Input Datapath OutputProjetando uma CPU monociclo Projeto da máquina AritméticaConjunto de Instruções tecnologia (parte 1 e 2)(parte 2) 42
  • 43. Filosofia RISC [Tanembaum]...1. Regra de base: Simplificar a via de dados – registradores, ULA e barramentos de interconexão;2. Minimizar tempo de ciclo da via de dados: • Faça o comum executar mais rápido • A simplicidade favorece a regularidade3. “A perfeição é atingida, não quando não existe nada mais a acrescentar, mas quando não existe nada mais a jogar fora!” [St. Exupéry] 43
  • 44. Implementação do conjunto de instruções INSTRUÇÂO opcode operando 1 operando 2 Para executar qualquer instrução: 1. Enviar o valor do PC para a memória que contém o código (opcode) e trazer para a via de dados a instrução armazenada nessa memória 2. Ler registradores (1 ou mais), usando os campos da instrução para selecioná-los (operandos) As ações do hardware para completar a execução da instrução variam, mas em geral, usam a ULA (simpli- cidade e regularidade) 44
  • 45. Visão geral da implementação MIPS Ideal Control Instruction Control Signals Conditions Instruction Memory Rd Rs Rt 5 5 5 Instruction Address A Data 32 Data Next Address Rw Ra Rb Address 32 32 Ideal Out ALU 32 32-bit PC Data Registers Data Memory B In Clk Clk 32 Clk Datapath 45
  • 46. Controle e Via de Dados Controle: define os sinais para acionar o hardware (unidades funcionais) para cada instrução decodificada Via de dados: movimentação de dados mem-reg, reg- reg, reg-ULA (barramentos + unidades) CPU “monociclo”: instrução quebrada em passos correspondentes às unidades funcionais envolvidas somador 4 Endereço de leitura PC InstruçãoEx: Busca dapróxima instrução Memória de instruções 46
  • 47. Implementação “multiciclo” Cada passo de execução da instrução = 1 ciclo de clock Compartilhamento das unidades funcionais dentro do espaço de tempo correspondente a uma instrução Assume-se que o ciclo de clock possa acomodar operações de acesso à memória, uma operação da ULA e acesso (leitura-escrita) aos registradores A via de dados possui registradores “adicionais” para armazenar valores usados nas próximas instruções (registrador de instrução e registrador de dados da memória, saída da ULA, operandos lidos dos reg’s, ...) Ex: Busca da instrução X (PC) → PC = PC +4 → ... PC pode ser incrementado antes do fim da instrução X 47
  • 48. Controle numa CPU multiciclo (1) Complexidade aumenta: Monociclo: tabelas-verdade (combinacional) Multiciclo: próximo estado depende do atual e dos sinais de entrada (seqüencial) Duas soluções: 1. Máquina de estados – seqüência de estados e regras de transição 2. Multiprogramação – representação para o controle semelhante a um programa Quanto mais simples o conjunto de instruções, mais simples e ágil o controle: INTEL 80x86 precisa de milhares de estados (modos de endereçamento, mais opcodes); MIPS 100 instruções 48
  • 49. Controles baseados em Máquinas deEstado Lógica de Controle Combinacional Saídas de controle do caminho de dados Saídas Entradas Próximo estado Registrador de estado Entradas vindas do opcode do registrador de instruções 49
  • 50. Controle por Microprogramação Máquinas de estados não são adequadas para controle de conjunto de instruções complexos! A única saída é a microprogramação Microprograma: conjunto de microinstruções que definem o conjunto de sinais de controle da via de dados a serem ativados em determinado estado Representação simbólica do controle, que deve ser traduzida em termos de sinais para o hardware Em geral, o microprograma está numa ROM ou PLA Ainda fazem parte do controle da CPU: tratamento de interrupções e de exceções que determinam mudança no fluxo normal de execução (overflow, operação de E/S) 50
  • 51. CPU’s de arquiteturas conhecidas Kernel: via de dados e controle Outras técnicas para aumentar o desempenho: pipeline 1985: MIPS R2000 com pipeline Até 80386 sem pipeline 80486, Pentium, Pentium PRO têm pipeline, mas o controle continua extremamente complexo para suporte das instruções da linha 80x86 Pentium e Pentium PRO usam pipeline superescalar: mais de uma instrução por clock replicando os recursos da via de dados Pentium suporta até 2 instruções e o POR, até 4 Pentium PRO usa conceitos RISC 51
  • 52. Aumentando o desempenho: Pipeline Técnica de implementação de processadores que permite a superposição temporal de diversas fases de execução de instruções Cada passo de execução da instrução deve ser executada em 1 ciclo de clock: Tecnologia limita o tempo de clock e o tempo de cada passo do pipeline A idéia de base é aumento a “vazão” e não redução do tempo de execução por instrução: Analogia: Produção de uma linha de montagem de automóveis = 1 automóvel por minuto! 52
  • 53. Implementação um pipeline Busca Ordem deInstrução execuçãoDecodificainstrução 1 2 3 4 5 Executa 1 2 3 4 5Operação 1 2 3 4 5 1 2 3 4 5Acessa 1 2 3 4 5Memória 1 2 3 4 5 Escreve temporesultado 1 clock 53
  • 54. Vantagens do RISC Instruções têm o mesmo tamanho: busca e decodificação simples e com tempo reduzido Instruções simétricas e com uso dos registradores facilita a seqüência das operações do pipeline O uso de apenas instruções load & store para referên- cias à memória permite o uso do estágio de execução para cálculo de memória, para depois, no seguinte, acessar a memória 54
  • 55. Problemas a vista: conflitos do pipeline Conflitos estruturais: com uma memória única para dados e instruções, existe um conflito entre o ciclo de busca de instrução e escrita em memória; a solução é usar duas memórias independentes (design) Conflitos de controle: obrigam a parada do pipeline Instruções de desvio Paradas geram bolhas no pipeline Ordem de execução add $4,$5,$6 busca di ULA mem w reg beq $1,$2,40 busca di ULA mem w reg bolha bolha bolha bolha bolha lw $3,300($0) busca di ULA mem w reg tempo 55
  • 56. Outros conflitosConflitos por dados: a próxima instrução utiliza umoperando da instrução anterior que ainda não estápronto: add $s0, $t0, $t1 sub $t2, $s0, $t1 Ordem de execução add$s0,$t0,$t1 busca di ULA mem w reg busca di sub $t2,$s0,$t3 di ULA mem w reg tempo 56
  • 57. Soluções clássicas para conflitos Reordenação do código (compilador): mudar a ordem de execução sem que o resultado da execução global seja alterado pode evitar as bolhas Incluir instruções do tipo NOP Adiantamento de instruções Pré-suposição da realização do desvio condicional (if) Predição dinâmica em loops e desvios baseado em dados armazenados (história) E em pipelines superescalares? Mais complexidade... 57
  • 58. Próximo passo... Hierarquia de Memória: reduzindo o tempo de acesso aos dados 58
  • 59. Os componentes clássicos de umcomputador Computer Processor Memory Devices Control Input Datapath Output O processador deve buscar cada dado e instrução na memória durante a execução de um programa: o tempo de acesso é fundamental para o desempenho! 59
  • 60. Desafios para a memória... Desempenho da CPU aumenta 25-50% p.a. Desempenho das memórias, cerca de 7% p.a. Capacidade VelocidadeLógica: 2x em 3 anos 2x em 3 anosDRAM: 4x em 3 anos 1.4x em 10 anos DRAMDisco: 2x em 3 anos 1.4x em 10 anos ano Tam Tempo de Ciclo 1980 64 Kb 250 ns 1983 256 Kb 220 ns 1986 1 Mb 190 ns 1989 4 Mb 165 ns 1992 16 Mb 145 ns 1995 64 Mb 120 ns 60
  • 61. Reflexões Sobre Arquiteturas de Memórias A velocidade de memória aumenta muito menos rapidamente que a dos processadores (Lei de Moore) Para máquinas + rápidas, é necessário projetar um sistema de memória de forma a não desperdiçar os ganhos adquiridos com o processador Solução: hierarquia de memória e caches É desejável que o usuário “acredite” que ele tem um espaço de memória enorme, mesmo se a quantidade de memória é sabidamente limitada O SO precisa suprir o mesmo espaço de memória para vários usuários sem que haja conflito Solução: Memória Virtual 61
  • 62. Melhorando o desempenho: Princípio dalocalidade Localidade Temporal Uma palavra de memória que acaba de ser referenciada, tende a ser novamente referenciada Localidade Espacial Itens cujos endereços estão próximos daqueles que acabam de ser referenciados tendem a ser referenciados também brevemente Conclusão: usar mecanismos que permitam armazenar temporariamente o material com que se trabalha Observar a estrutura dos programas: Programas acessam somente uma pequena porção de memória num curto espaço de tempo variáveis – temporal, laços - temporal e espacial, percurso de arrays - espacial 62
  • 63. Idéia de hierarquia para a memóriaDividir o espaço de memória em níveis com tamanhos,velocidades e custos diferentes por nívelO princípio da localidade pode ser aplicado diretamente àhierarquia de memória: quanto mais rápida a memória, maispróxima ao processador Processador Velocidade Tam Custd: $/bit Exemplo + rápida menor + alto 64k SRAM Memória Nível 1 Memória Nível 2 64M DRAM Memória Nível 3 + lenta maior + baixo 6.4 G Mag. Disk capacidade 63
  • 64. Hierarquia de Memória atualmente Fonte: Slides Patterson Capacidade Estágio Nível + Alto Tempo de Acesso Unidade + rápido Registradores CPU ~100 Bytes Registradores ~10 ns prog./compil. Operandos Inst. 1-8 bytes Cache K Bytes Cache 10-100 ns contr. cache Blocos 8-128 bytes Memória Principal M Bytes Memória 100ns-1us SO Páginas 512-4K bytes Disco G Bytes Disco ms-3 -4 user/operador Arquivos Mbytes Tape Maior infinito sec-min Tape Nível + baixo 64
  • 65. Funcionamento a hierarquia (1) Pode conter diversos níveis, mas a gerência é feita entre níveis adjacentes Unidades de mapeamento entre níveis: blocos Se a informação solicitada pelo processador estiver presente no nível superior da hierarquia, ocorre um “acerto” (hit) Se a informação não puder ser encontrada nesse nível, ocorre uma “falha” (miss) e um nível mais baixo é acessado para que o bloco desejado seja recuperado A medida de desempenho da hierarquia é relacionada à taxa de acertos dos acessos: fração dos acessos à me- mória encontrados no nível superior Outra medida: taxa de falhas = 1 – taxa de acertos 65
  • 66. Funcionamento a hierarquia (2)Desempenho = tempo de acesso à memória 1. Tempo de acerto (ta): tempo para acessar o nível superior da hierarquia (RAM) + tempo necessário para se determinar se o acesso é ou não um acerto 2. Penalidade por falta (tf): tempo para substituir um dos blocos do nível superior pelo bloco do nível inferior com a informação desejada + tempo para enviar o dado ao processador ta << tf: tempo de acesso ao nível inferior é muito maior Hierarquia de memória tem influência direta na gerên- cia de memória feita pelo SO, no código gerado pelo compilador e até mesmo no tipo de aplicação a ser executada na máquina. 66
  • 67. Conceitos básicos sobre Memória Cache Cache: esconderijo! ☺ De maneira abrangente: qualquer memória gerenciada que tira proveito das propriedades de localidade Como fazer para guardar os dados e instruções recentemente usados numa cache: Como saber se um item de dado está ou não na cache? Se estiver, como achá-lo? 67
  • 68. Conceitos básicos sobre Memória Cache Caches com mapeamento direto mapeiam cada endereço de memória numa locação específica da cache Várias locações de memória têm a mesma locação na cache Usa um mecanismo modulo N (N é potência de 2) Precisa de uma tag indicando o endereço atualmente armazenado Precisa de um bit de validade indicando se o dado está na cache 68
  • 69. Cache com mapeamento direto simples Memória Cache diretamente mapeado Tamanho = 401 02 13 24 35678910 •Cache de 4 (22) palavras1112 •Endereços de memória “mod 4”13 mapeiam locações de cache14 •Muitos endereços de memória são1516 mapeados p/ uma mesma locação17 •Usa log2N bits de endereços para18 a indexaçao da cache19 69
  • 70. Acesso à cache: Rótulo (tag) eÍndice (index)Considerando endereços de memória de 32-bits : Uma cache com mapeamento direto de 2N bytes: − Índice (index): Os N bits mais baixos dos endereços de memória − Rótulo (tag): Os (32-N) bits mais altos dos endereços de memória 31 Endereços de Memória N 0 Cache Tag Ex: 0x50 Cache Index Ex: 0x03 Armazenados como 2 N Bytes Bit validade parte do cache “state” Cache com Mapeamento Direto Byte 0 0 Byte 1 1 Byte 2 2 0x50 Byte 3 3 : : : Byte 2N -1 2 N- 1 70
  • 71. Alguns comentários… Cache com mapeamento direto precisa ser grande suficiente , por ex, para que as últimas instruções num laço de execução não se sobreponham sobre as anteriores (a cache com 4 blocos é apenas exemplo) Podem existir 2 caches o numa arquitetura: uma para instruções e outra para dados Em geral, não é mais eficiente que apenas uma cache para um tamanho fixo de cache Mas, o dobro de vazão pode ser compensar No start-up, a cache está vazia (ou inválida) e tem-se uma taxa de falhas elevada inicialmente A abordagem trata assim da localidade temporal mas não da localidade espacial 71
  • 72. Cache com 64KB (DECStation 3100) Endereços de Memória 31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0 Index 14 Deslocamento16 V Tag Data-32bits 16k entradasTag 16 32 Data Valid EQ AND HIT 72
  • 73. Localidade temporal A cache mostrada anteriormente apenas explora a localidade espacial Para tratar com a localidade temporal um bloco de mais de uma palavra é transferido para a cache no caso de uma falha (miss) No exemplo seguinte, a cache tem o mesmo tamanho (64KB), mas 4K entradas para blocos de 16 bytes cada: Os próximos devem gerar acertos ao invés de faltas Isso pode provocar um aumento significativo na taxa de acertos, mesmo com pequenos tamanhos de blocos 73
  • 74. Cache com 64KB (DECStation 3100) Endereços de Memória 31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0 Block offset Index V Tag Data-0 Data-4 Data-8 Data-12 4k entriesTag Valid EQ Select AND HIT Data 74
  • 75. Resultados de desempenho das duascaches Programa Tam. Bloco TaxaI-miss Taxa D-miss Taxa Comb. miss gcc 1 6.1% 2.1% 5.4% 4 2.0% 1.7% 1.9% spice 1 1.2% 1.3% 1.2% 4 0.3% 0.6% 0.4% Fonte: Livro P&H p. 329 Tamanho da cache: 128KB (64KB + 64KB) 75
  • 76. Tamanho do Bloco de Cache Em geral, um tamanho maior leva a vantagem da localidade espacial dos dados, MAS: Maior tamanho de bloco significa maior penalidade de falhas (miss penalties) – mais tempo para encher um bloco Se o tamanho do bloco é muito grande em relação ao tamanho da cache, a taxa de falhas irá aumentarTMédio de Acesso = tacerto x (1 – taxa_acerto) + penalidade_falha x tfalhas 76
  • 77. Tamanho do Bloco de CacheTaxa de Taxa de Tempo Médio deFalhas Acerto Explora a Localidade Acesso Espacial Aumenta Miss Penalty Poucos blocos: & Miss Rate compromete a localidade temporal Tam. Bloco Tam. Bloco Tam. Bloco Fonte: Patterson slides 77
  • 78. Acessos em escrita Não é tão simples em se tratando de cache Deve-se assegurar que o dado foi escrito na memória Do contrário, memória e cache podem se tornar inconsistentes 78
  • 79. Acessos em escritaSolução mais simples: write-through Memória e cache escritas ao mesmo tempo Mas se for necessário uma espera para isso, os valores da cache serão perdidos! Usar um buffer (FIFO) no caminho de escrita para a memória Buffers permitem “equalizar” o serviço quando a taxa de chegada de requisições é variável (algo como cadeiras num banco para os clientes esperarem…) 79
  • 80. Outras soluções para escrita… Escrita somente no retorno: write-back Atualização quando o bloco for susbstituído e se houver ocorrido alteração Escrita somente uma vez : write-once Ideal para sistemas multiprocessadores, que compartilham um mesmo barramento (mais adiante) O controlador da cache escreve a atualização na memória principal sempre que o bloco for atualizado pela primeira vez na cache – ou seja, faz um write-through e ainda alerta os demais componentes ligados ao barramento que houve a alteração 80
  • 81. Comparando as três soluções write-through : pode acontecer uma grande quantidade de escritas desnecessárias na memória… write-back : minimiza o problema, mas a memória pode ficar temporariamente desatualizada, obrigando que outros dispositivos acessem os valores via cache… write-once : conveniente, mas apenas em sistemas com múltiplas CPUs; utilização excessiva do barramento pode ser um fator de queda de desempenho… 81
  • 82. Elementos de Projeto de uma Cache Definição do tamanho Função de mapeamento de dados Memória/cache Algoritmos de substituição de dados na cache Política de escrita na cache 82
  • 83. Próximo passo... Hierarquia de Memória: Memória Virtual, Paginação, Aumento de Desempenho 83
  • 84. Hierarquia Completa de Memória Fonte: Slides PattersonCapacidade Estágio Nível + AltoTempo de Acesso Unidade + rápidoRegistradores CPU~100 Bytes Registradores1~10 ns prog./compil. Operandos Inst. 1-8 bytesCacheK Bytes Cache10-100 ns contr. cache Blocos 8-128 bytes Memória Principal M Bytes Memória 100ns-1us SO Páginas 512-4K bytes Disco G Bytes Disco ms-3 -4 user/operador Arquivos Mbytes Tape Maior infinito sec-min Tape Nível + baixo84
  • 85. Requisitos de um Sistema de Memória Dar a ilusão de um vasto espaço de memória total memória para todos os jobs simultâneos > memória real um job pode usar um espaço de endereços > memória atual Acesso rápido à memória Transparência: Livrar os programadores da tarefa de otimizar da utilização da memória → cache:memória:disco Espaço de endereçamento uniforme: Não se pode saber onde os programas serão carregados nem quais partes dos programas serão mudadas e recarregadas durante a execução Ideal: os endereços situados entre 0 e 2N-1 85
  • 86. Endereço virtual x endereço físico O programador usa um espaço de endereçamento virtual “imenso”, por ex. 231 bytes Ele pode escrever programas como se todas essas posições de memória existissem realmente! O SO e a arquitetura de memória gerenciam o mapeamento endereço virtual – físico Se o programa é realmente muito grande, deve existir uma forma de armazená-lo na memória da máquina – seja em memória ou em disco (“memória de massa”) A memória real é normalmente menor que o espaço virtual de endereçamento o tanto quanto puder ser suportado… endereços físicos ou reais 86
  • 87. Memória Virtual (2) Mapeamento endereços virtuais – memória real é feita em blocos – tipicamente de 1 a 8KB Blocos de memória virtual são chamados páginas Páginas de memória virtual que estão no disco são chamadas de paginadas-fora (paged-out) Uma referência feita a uma página que não está na memória principal é chamada de falha de página (page fault) A transformação entre endereços virtuais em endereços físicos (memory mapping) é feito através de uma tabela de paginação (page table) 87
  • 88. Mapeamento de endereços virtuais Prog A Virtual Physical Memory Prog B Virtual Addresses Addresses Addresses0x0000 Unused Unused0x10000x2000 Unused0x3000 Memory address0x4000 space0x50000x60000x7000 No memoryVirtualAddress ::: Disk Addresses :::Space0xD0000xE0000xF000 88
  • 89. Mapeamento de Memória O mapeamento Endereço Virtual x Endereço Físico é também chamado de translação de endereço No INTEL 80386: espaço de end. lógico de 4GB ou 230 bytes – páginas de 4KB – endereços de 12 bits. Uma tabela de página poderia ocupar de memória (entradas de 4 bytes) Endereços virtuais são divididos em Número da Página Virtual (NPV) e offset da página (12 bits nesse caso) Mapeamento de memória feito observando-se o NPV na tabela de páginas e concatenando com o offset da página Nas arquiteturas atuais, o tamanho das tabelas de página varia (esquema de diretório de tabelas) 89
  • 90. Processo de Mapeamento Considere um espaço de endereçamento virtual de4GB 4 GB e um espaço físico em memória de 1 GB 31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0 Número da Página Virtual Deslocamento Translação 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0 Número da Página Física Deslocamento 1GB 90
  • 91. Falhas com Memória Virtual Custo de uma falha é muito alto: em torno de ms para acessar um bloco de disco As páginas devem ser grandes o suficiente para amortizar o alto custo de acesso (4 KB, 8 KB, e mesmo MB …) Mas não tão grandes para evitar a fragmentação… Tamanho fixado pelo hardware (MMU) 91
  • 92. Falhas com Memória Virtual Re-estruturação de programas reduz taxa de falhas Processar as falhas de página por SW e não por HW Algoritmos sofisticados podem ser empregados Pequenos aumentos na miss rate podem ser recompensadas pela redução de custos do algoritmo Evitar a política write-through: Escritas em níveis mais baixos são muito demoradas 92
  • 93. Tabelas de Páginas (1) As páginas deveriam poder ser localizadas em qualquer lugar conveniente na memória Qualquer página virtual pode ser mapeada em qualquer página física disponível Chamado mapeamento totalmente associativo Tabela de páginas faz o mapeamento e reside na memória Cada programa tem sua própria tabela de página O hardware tem um registrador de tabela que aponta para a tabela de página Os diagramas anteriores se tornam então: 93
  • 94. Tabelas de Páginas (2)4GB 31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0 Número da Página Virtual Deslocamento 20 Endereço VirtualRegistrador da tabela de página 12 Validade Número da página física Page table 18 Se Zero : Falha de 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0 página Número da página física Deslocamento Endereço Físico 1GB 94
  • 95. Falhas de Página (Page Faults) (1) Quando o valid bit é zero ele indica que a página não está na memória principal O controle deve ser passado ao SO para buscar a página (ou criar a página, para páginas de dados…) Tipicamente o SO cria uma imagem do programa no disco quando o programa começa Busca as partes relevantes quando é preciso Onde olhar? – um mapeamento é necessário para mostrar onde estão as imagens no disco Pode ser parte da tabela de páginas ou ser feita em separado 95
  • 96. Falhas de Página (Page Faults) (2) Se todas as páginas na memória física estão em uso e o S.O. precisa substituir uma – Qual será escolhida? Política de substituição de páginas Localidade Temporal é um critério normal Menos recentemente usada (MRU ou LRU) i.e., sendo os acessos recentes às páginas: 10, 12, 9, 7, 11, 10. MRU numa falha de página trocaria a página 12; na próxima falha, substituiria a página 9, etc. Tabelas de páginas tem um bit de uso ou referência “Levado a 1” quando a página é acessada Pode ser periodicamente “levado a 0” pelo S.O. Possibilita que o S.O. tenha uma visão aproximada das páginas recentemente utilizadas 96
  • 97. Falhas de Página (Page Faults) (3) Para um endereço virtual de 32-bits, páginas de 4KB (12-bits) com 4 bytes por entrada na tabela de página 220 pag x 4 bytes = 4MB Isto para cada programa ativo → muito memória “presa” em tabelas de páginas não usadas Poderiam ser adicionados registradores de limites e somente mapear as páginas para endereços virtuais baixos para limitar o registrador mas, num modelo normal, o segmento de dados cresce para cima e a pilha para baixo não consistente com a abordagem de limites Usa 2 tabelas de páginas com 2 registradores de limite – um para a pilha e outro para o resto… 97
  • 98. Operações de escrita Write-through para o nível mais baixo da hierarquia (o disco nesse caso) é impraticável nesse caso devido ao alto custo para a escrita no disco A idéia é “salvar as escritas” para depois executá-las Write-back quando a página é substituída! Entretanto... Custoso e desnecessário fazer write-back para páginas para as quais não forem feitas escritas (por ex., páginas de programa) Assim, as tabelas de páginas têm um bit de sujeira (dirty bit) por entrada que é setado quando dados são escritos na página Se esse dirty bit é setado quando a página precisa ser substituída, ele é escrito em write-back para a imagem do programa no disco 98
  • 99. Fazendo isso rápido… Tabela de páginas em máquinas modernas está na memória principal: 2 registradores: um de base da tabela na memória e outro indicando o no. de entradas Portanto ... Cada acesso à memória lógica de um programa necessita de dois outros acessos à memória fícia para achar a tabela de páginas Como agilizar isso? Localidade de referências novamente Inserir numa cache as tabelas de página mais recentementes utilizadas: Translation-lookaside buffer = cache inserida dentro da MMU (memory management unit) 99
  • 100. Translation-Lookaside Buffer (TLB) Número dapágina virtual Validade Rótulo End. Página Física TLB Memória Validade Página Física ou End. Disco Física Tabela de Página Disco 100
  • 101. Translation-Lookaside Buffer TLB é uma cache Se não existir a entrada na TLB, é preciso buscá-la na tabela de páginas que está na memória principal A tabela de páginas tem uma entrada para cada página O TLB e a página usam o dirty bit e o reference bit Usar a abordagem write-back para esses bits da TLB para a página de tabelas numa falha é muito eficiente Características típicas: Block size 1-2 page table entries (4-8 bytes each) Hit time 1/2 to 1 clock cycle Miss penalty 10 to 30 clock cycles Miss rate 0.01% - 1% TLB size 32 to 1024 entries Fonte: Livro P&H p. 492 101
  • 102. Sistemas Modernos de Memória Characteristic Intel Pentium Pro PowerPC 604 Virtual address 32 bits 52 bits Physical address 32 bits 32 bits Page size 4 KB, 4 MB 4 KB, selectable, and 256 MB TLB organization A TLB for instructions and a TLB for data A TLB for instructions and a TLB for data Both four-way set associative Both two-way set associative Pseudo-LRU replacement LRU replacement Instruction TLB: 32 entries Instruction TLB: 128 entries Data TLB: 64 entries Data TLB: 128 entries TLB misses handled in hardware TLB misses handled in hardware Characteristic Intel Pentium Pro PowerPC 604 Cache organization Split instruction and data caches Split intruction and data caches Cache size 8 KB each for instructions/data 16 KB each for instructions/data Cache associativity Four-way set associative Four-way set associative Replacement Approximated LRU replacement LRU replacement Block size 32 bytes 32 bytes Write policy Write-back Write-back or write-through 102
  • 103. Próximo passo... Interface: dispositivos de entrada e saída (E/S) e barramentos 103
  • 104. INTERFACEPROCESSADOR – DISPOSITIVOS 104
  • 105. Os componentes clássicos deum computador Computer Processor Memory Devices Control Input Datapath Output Características extremamente dependentes da tecnologia, assim como os processadores “Um pouco neglicenciados” nos últimos anos... 105
  • 106. Arquitetura TípicaProcessador interrupçõesvia de dados + controle Cache Barramento de Memória – E/S Memória Controlador Controlador Controlador Controlador Principal E/S E/S E/S E/S Display Teclado Rede (monitor) 106
  • 107. Desempenho em Sistemas deEntrada e Saída Seja um programa com tempo de execução de 100s, com 90% do tempo em CPU e 10% E/S Se a CPU aumenta a velocidade 50% por ano, ao fim de 5 anos, o programa passa a ser executado em: 90/(1.5)5 + 10 = 22 → 45% do tempo em E/S !!! Métricas de desempenho complexas: Supercomputadores: leitura de arquivos imensos e escrita de vários arquivos pequenos → vazão Processamento de Informações: tempo de resposta e desempenho em termos de vazão Sistemas de Arquivo: acessos a arquivos pequenos, dados seqüenciais, mais leitura e menos escrita → utilização do espaço e tempo de resposta 107
  • 108. Arquitetura de Entrada/Saída Características dos dispositivos de E/S (I/O) Cada dispositivo tem um endereço de porta Limite de dispositivos ~ número de bits da porta Acesso da CPU via bus + interface do dispositivo Esquemas para a transferência de dados Dispositivos lentos Programada com espera ocupada (polling ou busy- waiting) Acionada por interrupção Dispositivos rápidos Acesso direto à memória – DMA (Direct Memory Access) Utilizando canais de dados – Controle de barramentos 108
  • 109. Tipos de Dispositivos e E/SDispositivo Tipo Parceiro Taxa Ordem (KB/sec)Teclado entrada humano 0.01 0Mouse entrada humano 0.02 0Alto-falante saída humano 0.60 1Line printer saída humano 1 2Floppy disc armazenagem máquina 50 3Laser printer saída humano 100 4Scanner entrada humano 200 4Optical disc armazenagem máquina 500 4LAN entrada/saída máquina 10K-1G 5Hard disc armazenagem máquina >10K 5Display saída humano 60K 6 A arquitetura de E/S deve acomodar uma variedade enorme de dispositivos periféricos, com diferenças significantes de desempenho. 109
  • 110. Dispositivos de E/S simples Lentos, geralmente orientados a caracteres (8bits) : teclados, displays, impressoras, etc. Muito mais lentos que o processador... ... Necessidade de protocolo de controle de fluxo de dados, hand-shaking protocol Requerem, pelo menos: um registrador de dados um registrador de controle com um bit done (colocado em 1 quando pronto para receber ou enviar o próximo dado, ou 0 em caso contrário). 110
  • 111. Mouse Processador lê os contadores para determinar a posição e atualizar a tela Botões pressionados geram eventos Tudo controlado por software Interface E/S por polling (mais adiante...) + 20 em Y + 20 em Y + 20 em Y – 20 em X + 20 em X – 20 em X Posição + 20 em X inicial – 20 em Y – 20 em Y – 20 em X – 20 em Y + 20 em X 111
  • 112. Discos Magnéticos (hard disks) Trilhas Superfície rotativa Superfícies magnética 1 ou mais pratos Rotação a ~ 103 RPM Divididos em (~1000 a Setores 5000) trilhas concêntricas Cada trilha tem tipicamente 64 a 200 setores (entre 512- 4096 bits) 112
  • 113. Discos MagnéticosO setor, às vezes chamado bloco, é a unidadefundamental de transferência (não se podetransferir menos que ela)Discos mais recentes utilizados em PC’s só tem 1prato devido aos ganhos tecnológicos naconfecção dos discosEm geral, fabricantes informam tempo de buscamáximo, mínimo e médio de acesso aos dadosDiscos flexíveis utilizam tecnologia da década de80: menor velocidade, confiabilidade ecapacidadeDiscos ópticos tornam-se parte integrante nosanos 90... 113
  • 114. Desempenho de discos Os braços movem-se entre os pratos rotativos, lendo ou escrevendo informações Tempo de busca (seek time) Tempo para o braço localizar a trilha correta Latência rotacional Tempo para encontrar o setor correto Tempo de transferência Tempo para transferir o bloco de informações Cabeças Muitos discos têm uma cabeça por superfície – alta densidade de dados Alguns discos mais antigos têm múltiplas cabeças por superfície – baixa latência de acesso e alto desempenho. 114
  • 115. E/S com Disco Registradores de dispositivo: Endereço no disco Número de bytes a ser transferido, que pode ser <, = ou > um setor. Endereço de memória para a transferência Registrador de comando: tipo de comando: read - disco para memória; write; write&verify (ler depois de escrever), etc. habilita interrupção go - quando ligado promove a transferência para o início, utilizando os valores correntes nos registradores de endereço e de comprimento. Registrador de status Indicadores de erros - unreadable/unwritable sector, etc. Livre/ocupado (idle/busy) 115
  • 116. Conexão dos Dispositivos deE/S ao Processador e àMemória Conexão via barramento: Nada mais é que um conjunto de ligações (fios) que forma um canal de comunicação compartilhado entre os vários subsistemas (processador, memória, entrada/saída) Limitação: gargalo para a comunicação Desempenho limitado fisicamente pelo número de dispositivos conectados, comprimento Inclui uma via de controle (solicitações) e uma via de dados (informações): A via de controle inclui envolve linhas para requisição do barramento e para garantir o seu controle A via de dados tipicamente tem de 8 a 64 bits de largura, i.e. 8 a 64 ligações separadas 116
  • 117. Interconexão de componentes (1) Diretamente com o processador Nenhuma máquina moderna aplicam esta solução, em geral Nem flexível, nem extensível Barramento plano (backplane) Barramento “curto” e de propósito geral – conecta memória, periféricos e o processador Deve seguir um padrão – ex. VME, PCI, etc. Barramento E/S longo, interligando diferentes tipos de dispositivos Deve seguir um padrão comercial: SCSI, IPI, etc. Barramento processador-memória Barramento “curto” de altíssima velocidade, especializado para otimizar as comunicações memória- processador Geralmente proprietário – específico para a máquina ou vendedor na busca de melhoria de desempenho 117
  • 118. Interconexão de componentes(2) Local Area Network (LAN) Pode ser usada para compartilhar periféricos, como impressoras, sistemas de arquivos, etc. Distâncias muito maiores Geralmente taxas de dados “moderadas/altas” entre 100Kbits/sec e 155 Mbits/sec Projetos de alto desempenho envolvem múltiplos barramentos para produzir caminhos ótimos para os dados. Geração futura deve usar “switches” especializados – derivados da tecnologia LAN 118
  • 119. Barramentos Síncronos eAssíncronos Síncrono: inclui um clock em suas linhas de controle Requer que cada dispositivo do barramento “rode” a uma mesma velocidade. Barramentos Processador-memória : sincronização na leitura e escrita; poucos dispositivos, próximos e muito rápidos Assíncrono: não “segue” um clock Pode ligar vários dispositivos de características diferentes, sem preocupação com o sincronismo Tipicamente para entrada/saída Controlado por um mecanismo de handshaking (vários passos, mas o receptor e transmissor só seguem em frente se ambas as partes envolvidas estão de acordo) 119
  • 120. Arbitragem do barramento (1) Como isso se comporta na prática? O que acontece quando vários dispositivos querem ter acesso ao barramento? Daisy chain Hard Floppy Processador Memória Disk Disk Bus grant Bus request ComandoControlador de 4-8Barramento Endereço ou Árbitro 16-? Dados 8-64 120
  • 121. Arbitragem do barramento (2) Quando um dispositivo (incluindo a CPU) necessita do barramento, ele envia (ou “seta”) uma requisição na request line Existe uma linha única de requisições funcionando em “wired-OR “ Só distingue se existe ou não requisição O árbitro atende uma requisição quando o barramento torna- se disponível “setando” a linha grant line O primeiro dispositivo que “vai para nível 0” pode usar o barramento Bus Request Árbitro do Bus Grant BarramentoA permissão pode Dispositivo Dispositivo Dispositivo Dispositivoou não se propagar 1 2 3 4 121 pela cadeia
  • 122. Arbitragem do barramento (3) Dispositivo que “ganha” o barramento: Torna-se o mestre do barramento Ele não propaga o sinal de “grant” para os outros dispositivos desligados (em nível baixo) Portanto, um mecanismo de prioridade é construído – os dispositivos mais próximos do árbitro têm maior prioridade Garantir que outros dispositivos tenham acesso ao barramento Assim limitar “a janela de tempo” para assegurar que restrições temporais críticas não sejam ultrapassadas nos dispositivos O mestre colocar comandos, endereços e dados no barramento para serem tratados pela memória ou por um outro dispositivo Se a transferência não recebe um acknowledgment, uma 122 exceção de erro de endereço de barramento é gerada
  • 123. Arbitragem do barramento (4) Esquema com nível de prioridades no barramento: nível 2 > nível 1 Conflito: 3 > 4 > 1 > 2 Req. nível 1 Árbitro Req. nível 2 Grant nível 2 do Grant nível 1Barramento Dispositivo Dispositivo Dispositivo Dispositivo 1 2 3 4 123
  • 124. Padrões para barramentos (1) Barramento E/S permite a expansão da máquina: padronização é fundamental! SCSI (Small Computer Systems Interface) e Ethernet são exemplos de padrões criados por reunião de fabricantes PCI criado pela INTEL e depois adotado por outras PCI : barramento para backplane de propósito geral SCSI: barramento de entrada e saída Faz a interface entre o barramento do backplane e o barramento processador-memória 124
  • 125. Padrões para Barramentos (2) Source: P&H p. 395Característica PCI SCSItipo backplane E/Slargura de dados 32 a 64 bits 8 a 32 bitsmestre do bus múltiplos múltiplosArbitragem centralizada, com distribuída, com requisição em paralelo acesso por seleçãoclock Síncrono 33 a 66Mhz Ambos (5 a 10Mhz)Banda passante 80 MB/s 5 or 40 MB/sNo.max dispositivos 1024 7 a 31comprimento max 0.5m 25mNome padrão PCI ANSI Em evolução constante... Dados tabelados em 1997! 125
  • 126. Interface dos Dispositivos E/Scom a Memória, Processador eSO Um protocolo de barramento define exatamente o que deve ser feito em uma transmissão de dados entre subsistemas O SO é responsável pela gerência de toda a E/S: Proteção de acesso aos dispositivos Define abstrações para acesso aos dispositivos Trata as interrupções geradas pelo processador e dipositivos Garante o acesso compartilhado aos dispositivos O SO efetua 3 tipos de comunicação: 1. Envio de comandos aos dispositivos 2. Comunicação do dispositivo indicando fim da tarefa 3. Transferência dos dados entre memória e dispositivos 126
  • 127. Envio de Comandos aosdispositivos Dois métodos de endereçamento: Mapeamento de E/S em memória Comandos especiais de E/S Mapeamento em memória: Parte do espaço de endereçamento é reservada aos dispositivos (e protegido dos programas usuário) Leituras/escritas a esses endereços são interpretadas pelo SO como operações de E/S Vantagem: simplicidade e transparência Comandos especiais de E/S: Instruções incluídas no processador Verifica o estado do dispositivo para saber se o comando foi completado ou não (só em modo kernel) 127
  • 128. Exemplo: Teclado e monitores Teclados produzem caracteres à medida em que são digitados, em geral à taxa média de 10 cps Monitores são capazes de exibir textos alfanuméricos à taxa aproximada de 1200 cps Keyboard Registers Controle Data 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Ready/Done Read-only Display Registers Control Data 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Unused (for now) Ready/Done Write-only 128
  • 129. Exemplo - Estrutura de umprograma “echo” Assuma que os registradores de E/S são mapeados em memória a partir das posições 0xffff 0000: +0 Keyboard control +4 Keyboard data +8 Display control +12 Display data No modo full-duplex os caracteres inseridos através do teclado não são exibidos a menos que haja um programa que instrua a arquitetura para tal, por ex: 1. aguarde o sinal ready do teclado ser ligado 2. leia o caractere - automaticamente zera (desliga) ready 3. envie o caractere ao display 4. aguarde a exibição ( Não necessariamente verdade, já que o display geralmente é muito mais rápido que a digitação ) 5. volte ao começo 129
  • 130. Exemplo - o código... Programa simples em assembly .textmain: li $8, 0xffff0000 usando E/S polledmloop: lw $7, 0($8) # get control register andi $7, $7, 1 # mask out done bit blez $7, mloop # loop waiting for data lw $6, 4($8) # get data/clear kbd donelp2: lw $7, 8($8) # wait for display ready andi $7, $7, 1 # mask out done bit blez $7, lp2 # loop waiting sw $6, 12($8) # display character b mloop # next char 130
  • 131. Analisando o desempenho doPolling A espera “ocupada” do bit done é chamada polling Desperdício de tempo de processamento, já que os dispositivos são (em geral) muito mais lentos do que o processador Por outro lado, no caso de disco magnético o processador pode não dar conta de atender a alta taxa de transferência de dados. Necessidade de outras técnicas é clara: mecanismo de entrada/saída dirigida por interrupção 131
  • 132. Mecanismo de Interrupção Mecanismo que desvia o processador de suas atividades normais quando algum dispositivo precisa ser atendido: 1. A CPU emite uma instrução de E/S e não espera resposta imediata, desviando-se para realizar outra atividade, suspendendo a execução do programa de E/S 2. O processador verifica, no início ou fim do ciclo de execução de cada instrução, se ocorreu alguma interrupção. 3. Em caso positivo (i.e., a interface está para transferir o dado), o controle é transferido para uma rotina de tratamento de interrupção - Interrupt Service Routine ou Interruption Handler 4. O dado é então transferido 5. A CPU retoma ao programa original no ponto em que aconteceu a interrupção. 132
  • 133. Interrupções Internas: Devido a eventos gerados durante a execução de um programa pelas instruções (overflow por divisão por zero, underflow) ou por programação (alarmes) Externas: Devido a sinais externos à CPU: interface de dispositivos de E/S que “avisam” à CPU que existem dados a serem transferidos Algumas podem ser desabilitadas: No nível do dispositivo - afeta apenas um dispositivo No nível do sistema - afeta todos os dispositivos Para lidar com a imensa gama de dispositivos de E/S, os mecanismos de interrupção têm níveis de prioridade definidos 133
  • 134. Como sincronizar asinterrupções? Através de fila ou buffer Estrutura tipo first-in, first-out Uma fila para entrada, outra para saída. Se a fila estiver vazia → nenhum trabalho a ser feito. Se a fila de entrada estiver vazia e o programa do usuário necessita uma entrada, então o Sistema Operacional (SO) suspende o programa assume algum outro que possa dar prosseguimento. De maneira similar, se a fila de saída estiver cheia, o SO precisa re-escalonar os processos até que a rotina de interrupção tenha gerado algum dado. 134
  • 135. Filas de I/OPrograma do usuário Código de Inicialização para habilitar interrupçõesmain: do work call in Rotina de interrupção do work call out Kbd: get data entrada Q put in Q in: get from Q if full beep if empty OS Kbd data resume suspends out: add to Q saída Q Disp: get data from Q if full OS if none disable suspends Display data interrupt send to display resume 135
  • 136. Múltiplos Dispositivos Quando ocorre uma interrupção pode-se sair varrendo um a um para determinar quem interrompeu: test chain Processo lento, utilizado em máquinas antigas. Certos dispositivos têm tempos críticos de resposta: se o dado não for tratado a tempo ele será perdido ou outro prejuízo na aplicação pode acontecer. Diversas soluções: Interrupção vetorizada - cada dispositivo tem associado um endereço exclusivo na memória onde um ponteiro para sua ISR pode estar armazenado. Interrupção com vetorização parcial - dispositivos são divididos em classes com faixa de tempo crítico similares, vetorizados todos para o mesmo endereço. O test chain é realizado para o refinamento da identificação. Interrupção não-vetorizada - test chain e outros truques... 136
  • 137. Vetores de Interrupção .ktext 0x80000000 .word Lkbd # vector for kbd .word Ldisp # vector for display .ktext 0x80000020 .word Lhd # hard disk vector .ktext 0x80000040 .word Lscan # scanner vector .ktext Lkbd: ... # ISR for kbd resume Ldisp: ... # ISR for display resume Lhd: ... # ISR for disk resume Lscan: ... # ISR for scanner resume 137
  • 138. Vetorização Parcial .ktext 0x80000000 .word slow # vector for slow devices .ktext 0x80000020 .word med # vector for med speed devices .ktext 0x80000040 .word fast # vector for fast devices .ktext slow: test kbd # ISR for slow devs test disp test clock Not MIPS code! test mouse resume kbd: ... # ISR for kbd resume disp: # etc. #-------- med: ... # ISR for med speed devs resume #-------- fast: ... # ISR for fast devs resume 138
  • 139. Do ponto de vista da CPU A CPU é interrompida: Qual tipo de interrupção? Qual o dispositivo sinalizou? Reagir imediatamente, mais tarde, ignorar? O que fazer com o programa interrompido? Quando retornar à sua execução? Rotina de Tratamento da Interrupção Antes de ir para a rotina a CPU “salva o contexto” do processo em execução A CPU recebe o endereço inicial da rotina de tratamento da interrupção e inicia sua execução Embora melhore o desempenho, a CPU ainda “perde tempo” com a execução da rotina de interrupção e controle da transferência: imagine a transferência de 100KB do disco para a memória 139
  • 140. Transferência entre Dispositivoe Memória Polling e Interrupções funcionam bem para transfe-rências entre dispositivos de banda passante baixa As interrupções retiram do processador ô “ônus” de ter que esperar cada evento de E/S, mas ainda assim, a transferência do disco para memória não necessitam do controle direto da CPU A solução encontrado foi criar um mecanismo de transferência denominado DMA (direct memory access) ou acesso direto à memória 140
  • 141. Acesso Direto a Memória (DMA) Dados são transferidos entre a memória e o disco diretamente, sem o envolvimento do processador. Interrupção ainda utilizada para dizer à CPU quando a transferência é iniciada e terminada. Transferências DMA: CPU informa ao controlador de disco a operação a ser realizada e os endereços envolvidos. O controlador do dispositivo realiza então a operação, através de DMA, deixando livre a CPU Controlador de barramento faz a arbitragem do barramento. O controlador do dispositivo informa à CPU o término da transferência usando uma interrupção ou no caso de erro 141
  • 142. Análise do DMA (1) Um barramento é um caminho compartilhado de alta velocidade. Considere a execução normal de um programa que requisita acessos à memória ao processador: Processador Tela Teclado Bus Memória DiscoAtividade no Bus (P/M) Processador trabalhando Inst R Data R Inst R Inst R Inst R Data W Inst R 142 Tempo
  • 143. Análise do DMA (2) Agora, com o disco envolvido na transferência DMA Processador Tela Teclado Bus Memória DiscoAtividade no Bus (P/M/D) Inst R Data R Inst R Disk R/W Inst R Disk R/W Data W Tempo Inst R Disk R/W Inst R Inst R Data W Disk R/W Inst R 143
  • 144. Análise do DMA (3) Bus é compartilhado por transferências processador- memória e disco-memória Assim, o desempenho do processador pode sofrer uma redução. Arquiteturas multi-barramentos são usadas para reduzir este efeito É preciso que algo seja usado para organizar o compartilhamento do barramento: árbitro ou controlador de barramento A conexão ao barramento e a tomada de decisões gasta tempo. Em alguns protocolos de barramentos SO, somente rajadas (burst) limitadas de dados podem ser transmitidas: burst-mode 144
  • 145. Próximo passo... Arquiteturas Avançadas: multicomputadores e multiprocessadores 145
  • 146. Sistemas Multiprocessadores (I) Mais que uma CPU Em geral confinadas a um mesmo espaço físico (gabinete, rack, ...) Fortemente acoplados Comunicação via memória compartilhada 146
  • 147. Sistemas Multiprocessadores (II) CPU cache CPU Bus Mem 147
  • 148. Sistemas Multiprocessadores (III) CPU Switch (Ômega) Mem 148
  • 149. Sistemas Multiprocessadores (IV) CPU Mem Crossbar 149
  • 150. Sistemas Multicomputadores (I) Mais que uma CPU Máquinas podem estar geograficamente distantes Sistemas fracamente acoplados Cada processador possui sua memória local própria e a comunicação é feita por passagem de mensagens 150
  • 151. Sistemas Multicomputadores (II) Mem local CPU Rede 151
  • 152. Sistemas Multicomputadores (III) MALHA TRIDIMENSIONAL (k=3, n=3)Mem local CPU 152
  • 153. Desafios Balanceamento de carga entre processadores Adequação aplicação x arquitetura Coerência de memória (cache) Linguagem de programação e compiladores Limitações físicas: temperatura, comprimento das ligações, custo 153

×