Software Básico Introdução aos sistemas de computação Tanembaum, capítulo 1 A visão do usuário O usuário enxerga software, velocidade, capacidade de armazenamento e funcionalidades de periféricos Organização Estruturada de Computadores 2 “Visão do computador” • Circuitos eletrônicos ° Transistores interconectados ° Chaves ligadas ou desligadas • Linguagem de máquina ° Conjunto de instruções fundamentais que a máquina executa ° Expressa como um padrão de 0s e 1s Organização Estruturada de Computadores 3 Adendo: escalas, unidades e convenções • • • • Bit (b), Byte (B), Word (w) Kilo (k/K), Mega(M), Giga(G), Tera(T) Mili(m), Micro(µ), Nano(n), Pico(p) Diferentes escalas: ° B: bytes (potências de 2) • 64 KB = 65.565 bytes ° b: bits (potências de 10) • 1 Mb/s = 1.000.000 bits por segundo ... há divergências... – você sabe o que é Kibi, Mibi, Gibi, Tibi?... Organização Estruturada de Computadores 4 Arquiteturas em níveis • Qualquer computador atual é extremamente complexo para ser estudado de uma vez… • A solução é organizar a máquina em níveis: ° cada nível é definido em função do anterior ° problemas são expressos em função da interface definida para cada nível ° máquinas virtuais e linguagens associadas Organização Estruturada de Computadores 5 Máquina virtual • Imagine que exista uma máquina hipotética (virtual) capaz de executar a linguagem L ° Máquina M • Escreva um programa em L ° M deve ser capaz de executar esse programa diretamente • Mesmo que a máquina virtual seja complexa, o programa ainda pode ser executado a partir da máquina do nível inferior Falha recorrente no livro: máquinas “reais” Organização Estruturada de Computadores 6 Tradução x Interpretação • Programas representados em um nível têm que ser convertidos para processamento no nível inferior • Tradução (compilação) ° Programa na linguagem do nível L é convertido em equivalente no nível L-1 • Interpretação ° Cada instrução do nível L é analisada e o seu efeito é simulado pelo interpretador (programa de M-1) Organização Estruturada de Computadores 7 Linguagens, Níveis e Máquinas Virtuais Organização Estruturada de Computadores 8 Arquiteturas em níveis atuais Linguagens de alto nível Interpretação Tradução (compilador) Linguagem assembly Tradução (assembler) Sistema operacional Interpretação parcial (chamadas do sistema) Linguagem de máquina Execução direta Interpretação (microprograma) Microarquitetura Hardware Lógica digital Organização= Estruturada Linguagem de máquina nível de deComputadores Arquitetura do Conjunto de Instruções - ISA 9 Arquiteturas em níveis atuais Programadores de aplicações Linguagens de alto nível Interpretação Programas contêm Palavras e abreviações Tradução (compilador) Linguagem assembly Tradução (assembler) Sistema operacional Suporte aos Níveis superiores Interpretação parcial (chamadas do sistema) Linguagem de máquina Programadores de Execução sistemas direta Programas consistem em séries de números Interpretação (microprograma) Microarquitetura Hardware Lógica digital Organização Estruturada de Computadores Java: código primeiro compilado para bytecode (semelhante à ISA – nível 2) 10 depois interpretado Arquiteturas em níveis atuais •Arquitetura = conjunto de tipos de dados, operações e características de cada nível •Arquitetura de um nível • trata de aspectos que são visíveis ao usuário daquele nível • ex: quantidade de memória disponível é parte da arquitetura • aspectos de implementação não fazem parte da arquitetura • tecnologia usada para construir memória não é parte da arquitetura Hardware e Software • Hardware: objetos tangíveis ° Circuitos eletrônicos, componentes físicos • Software: idéias abstratas ° Algoritmos, programas • Início: fronteira era nítida • Com o tempo: adição, remoção, fusão de níveis : fronteira indistinta Organização Estruturada de Computadores 12 Hardware e Software • Software e hardware são logicamente equivalentes! • “Hardware é apenas software petrificado”, Karen Panetta Lentz • Qualquer instrução em software pode ser implementada em hardware • Qualquer instrução executada em hardware pode ser simulada em software • Decisão depende de custo, velocidade, confiabilidade, e frequência de mudanças esperadas. Organização Estruturada de Computadores 13 Evolução das máquinas multiníveis • Primeiros computadores, década de 40: • 2 níveis: • Programação feita no nível ISA • Nível lógical digital (hardware) executava • Circuitos complicados, dífíceis de entender e de montar • Baixa confiabilidade Organização Estruturada de Computadores ENIAC, 1946 14 Evolução das máquinas multiníveis • Invenção da microprogramação (Wilkes, 1951) ° Interpretador embutido imutável (microprograma) ° Instruções do nível ISA eram interpretadas por várias operações mais simples ° Simplificação do hardware: reduzir número de válvulas, aumentar confiabilidade ° Tempo de processamento necessário para fazer a interpretação (overhead) ° Microprogramação: atingiu seu apogeu na década de 1970 Organização Estruturada de Computadores 15 Evolução das máquinas multiníveis • A programação evoluiu: ° passou a ser feita com cartões perfurados • Mas o programador ainda tinha que controlar o computador diretamente ° Máquina ociosa Organização Estruturada de Computadores 16 Evolução das máquinas multiníveis • Ex de job no SO FMS • ~1960: sistema operacional Automatizar trabalho do operador • Minimizar desperdício de tempo • Programador produzia cartões de controle junto dom o programa que eram lidos e executados pelo SO • *JOB, 5494, BARBARRA * FORTRAN Programa Fortran * DATA Cartões de dados * END Organização Estruturada de Computadores 17 Evolução das máquinas multiníveis • Os sistemas operacionais evoluíram: • novas instruções, prinipalmente de E/S • No início: • processamento em batch ou lote (fim dos '50) • Várias horas entre instante em que programa entrava na máquina e horário que terminava • Sistemas de tempo compartilhado/time sharing (início ´60) • Vários programadores se comunicam diretamente com o computador • Terminais remotos conectados ao computador central por linhas telefônicas IBM 709, 1959 Organização Estruturada de Computadores 18 Evolução das máquinas multiníveis • Migração de funcionalidade para microcódigo ('70) ° Extensão do microprograma equivalia a acrescentar novo hardware ° Explosão de novas instruções para simplificar a vida do programador assembly ° Muitas insruções não eram essenciais pois seu efeito podia ser conseguido com facilidade com outras instruções • EX: INC vs. ADD ° Exemplos importantes: DEC PDP, DEC VAX ° Incorporada aos micro-processadores (menos HW) Organização Estruturada de Computadores 19 Evolução das máquinas multiníveis • Eliminação da microprogramação ('90) ° Microprogramas extensos geram lentidão ° Tendência: • Eliminar/reduzir microprograma • Reduzir drasticamente conjunto de instruções • Execução direta das instruções restantes ° Compiladores não precisam de instruções complexas ° Hardware se tornam mais barato ... Mas o mundo continua dando voltas ... Java e congêneres utilizam byte codes (interpretados) Organização Estruturada de Computadores 20 Um pouco de história Era uma vez... Organização Estruturada de Computadores 21 A pré-história • Máquinas mecânicas • Computadores baseados em relés • O computador ABC (não terminado) Organização Estruturada de Computadores 22 Computadores Mecânicos (1642 – 1945) • Blaise Pascal, 1642: 1ª máquina de calcular operacional ° totalmente mecânico, ° funcionava com uma manivela operada à mão, ° projetado para ajudar o pai, coletor de impostos, ° fazia soma/subtração Blaise Pascal • Pascaline – calculadora simples, 1642 Organização Estruturada de Computadores 24 Leibniz • Calculadora c/ 4 operações básicas, 1672 Organização Estruturada de Computadores 25 Computadores Mecânicos (1642 – 1945) • Charles Babbage (1792 – 1871) ° 1ª tentativa: dispositivo mecânico • soma/subtração, • realizava um único algoritmo • saída: perfurava resultados sobre chapa e gravação de cobre (prenúncio de CD-Roms) ° 2ª tentativa (1834): 1ª máquina analítica (ainda mecânica) • 4 unidades: armazenagem, moinho, leitora de cartões perfurados, saída perfurada e impressa • armazenagem: 1000 palavras de 50 algarismos decimais • moinho: soma/subtração/multiplicação/divisão / testes • uso geral: podia realizar cálculos diversos • Produção de software: Babbage contratou Ada Lovelace – 1ª programadora de computadores Babbage (1792-1871) • Engenho diferencial Organização Estruturada de Computadores 27 Charles Babbage (1792-1871) • Engenho analítico Organização Estruturada de Computadores 28 Charles Babbage (1792-1871) Organização Estruturada de Computadores 29 Computadores Mecânicos (1642 – 1945) • Charles Babbage (1792 – 1871) ° 1ª tentativa: dispositivo mecânico, soma/subtração , realizava um único algoritmo, saída: perfurava resultados sobre chapa e gravação de cobre (prenúncio de CD-Roms) ° 2ª tentativa (1834): 1ª máquina analítica (ainda inteiramente mecânica) 4 unidades: armazenagem, moinho, leitora de cartões perfurados, saída perfurada e impressa armazenagem: 1000 palavras de 50 algarismos decimais moinho: soma/subtração/multiplicação/divisão / testes uso geral: dependendo dos cartões de entrada, podia realizar cálculos diversos Produção de software: Babbage contratou Ada Lovelace – 1ª programadora de computadores • Konrad Zuse, 1930´s: 1ª máquina calculadora automática com relés eletromagnétios ° Vários outros esforços nesta época ° John Atanasoff: máquina super-avançada para época, baseada em aritmética binária. Máquina nunca se tornou realmente funcional ° Howard Aiken,: revisitou trabalho de Babbage e decidiu construir com relés um computador de uso geral. Quando terminou, os computadores de relés estavam obsoletos. Hollerith • Proc. de cartões perfurados (censo 1890) • Empresa viria a se transformar na IBM (1924) Organização Estruturada de Computadores 31 Computadores Mecânicos (1642 – 1945) • Konrad Zuse, 1930´s: ° 1ª máquina calculadora automática com relés eletromagnétios • John Atanasoff: ° máquina super-avançada para época, baseada em aritmética binária. ° Máquina nunca se tornou realmente funcional • Howard Aiken: ° revisitou trabalho de Babbage e decidiu construir com relés um computador de uso geral. ° Quando terminou, os computadores de relés estavam obsoletos. Atanasoff-Berry Computer (ABC), 1939 • • • • Incompleto válvulas lógica binária memória dinâmica Organização Estruturada de Computadores 33 Conrad (?) Zuse • Máquina digital (relés), 1941 Organização Estruturada de Computadores 34 Harvard Mark I • Calculador baseado em relés • Primeiro “totalmente automático” Organização Estruturada de Computadores 35 Primeira geração: válvulas (1945-1955) • Substitutos naturais dos relés • Menor espaço, maior velocidade, sem partes móveis • Grande estímulo para computador eletrônico: • Segunda Guerra Mundial • Mensagens alemãs enviadas codificadas usando ENIGMA Organização Estruturada de Computadores 36 Alan Turing • COLOSSUS, 1943 • Primeiro computador eletrônico (válvulas) programável • Projeto do Governo Britânico • Segredo militar por anos • Desenvolvido para decodificar msgs nazistas 50 Organização Estruturada de Computadores 37 Eckert e Mauchley • ENIAC (Eckert e Mauchley, 1946) ° ° ° ° ° ° Necessidade de cálculos pesados pelo exército dos EUA Idéias de Atanasoff e outros 18000 válvulas e 1500 relés 30 toneladas, 140 kW Cabos e 6000 chaves Arquitetura:20 registradores cada um um número decimal de 10 algarismos ° Primeiro “bug” ° Após a guerra,“escola de verão” Organização Estruturada de Computadores 38 Mauchley & Eckert: ENIAC Electronic Numerical Integrator and Compute Mauchley & Eckert: UNIVAC (#1 no mercado) John Von Neumann • IAS – a máquina de von Neumann (1952) ° Arquitetura dos computadores modernos ° Programa armazenado em memória ° Unidades de controle e aritmética Memória Unidade de controle Unidade lógicaaritmética Acumulador Organização Estruturada de Computadores Entrada Saída 41 John Von Neumann • IAS – a máquina de von Neumann (1952) ° Memória: 4096 palavras de 40 bits ° Cada palavra: 2 instruções de 20 bits ou um inteiro de 40 bits com sinal ° Instruções: 8 bits para identificar tipo, 12 bits para especifica um das 4096 palavras de memória ° Registrador Acumulador: dentro da Unidade Lógica e Aritmética A Primeira Geração: Válvulas (1945 – 1955) • IBM, 1953: 701 ° 2048 palavras de 36 bits ° Início da atuação da IBM no mercado de computadores ° Primeiro de uma série de máquinas científicas que passaram a dominar o setor na próxima década Outros computadores da época • • • • EDSAC, 1949 UNIVAC, 1951 Whirlwind, 1951 MANIAC, 1952 Organização Estruturada de Computadores 44 Segunda geração: transistor (1955-1965) • • • • • Menos falhas, menor espaço DEC PDP-1 IBM 1401 CDC 6600 Burroughs 5000: programação em ALGOL incluíram muitas características no hardware para facilitar tarefa do compilador “software também é importante” Organização Estruturada de Computadores 45 A Segunda Geração: Transistores (1955 – 1965) • MIT, 1950´s: TX-0 – Transistorizes eXperimental Computer 0 ° 1º computador transistorizado ° Depois veio o TX-2 que acabou nao dando em nada ° Kenneth Olsen, um dos engenheiros, fundou a empresa Digital Equipment Corporation (DEC) em 1957 • DEC, 1960: PDP-1 ° 4096 palavras de 18 bits ° Podia executar 200 mil instruções por segundo: metade do desempenho do IBM 7090, o mais rápido na época ° Porém o PDP1 custava 120 mil dólares, o 7090 custava milhões ° DEC vendeu dezenas de PDP-1: nascia a indústria de minicomputadores ° Visor e capacidade de plotar pontos na tela -> criação de videogames DEC PDP-1, 1960 • Primeiro “mini-computador” Organização Estruturada de Computadores 47 A Segunda Geração: Transistores (1955 – 1965) • IBM: computação científica ° 7090, 7094 tempo de ciclo de 2 microssegundos • IBM, processamento comercial, periféricos ° 1401: máquina pequena voltada para empresas ° 1401: arquitetura complexa, sem registrador, palavra sem tamanho fixo Control Data: CDC 6600, 1964 • Primeiro “super-computador” ° ° ° ° várias unidades de processamento estrutura pipeline múltiplas threads Arquitetura estava décadas a frente do seu tempo Projetista: Seymour Cray Organização Estruturada de Computadores 49 DEC PDP-8, 1965 • Mini-computador com barramento padrão ° Inovação: barramento único (omnibus) conectando cpu, memória, console, E/S • Berço do Unix (Bell Labs) Organização Estruturada de Computadores 50 Terceira geração: CIs (1965-1980) • Invenção do circuito integrado por Robert Noyce em 1958: ° dezenas de transistores em um único chip • Maior integração permitiu reduções significativas de tamanho Organização Estruturada de Computadores 51 IBM System/360 • Arquitetura de máquina comum a vários modelos ° Família de máquinas • compatibilidade ° multiprogramação ° emulava 1401 e 7090 (máquinas virtuais) ° Microprogramado • Um microprograma para cada máquina alvo ° Espaço de endereçamento: • 224 bytes: parecia muito no início mas gerou problemas de compatibilidade na década de 80 (memória insuficiente) Organização Estruturada de Computadores 52 DEC PDP-11 • Bastante popular em universidades • Ligado à difusão do Unix • Instruções complexas • Seguido pela linha VAX Organização Estruturada de Computadores 53 Quarta geração: VLSI (1980-?) • Integração em Escala Muito Grande • Computador em um chip (4004) • Explosão dos computadores pessoais ° Kit com chip Intel 8080 x Apple • IBM decide entrar no mercado de computadores pessoais ° IBM Personal Computer construído com peças do mercado (Intel 8080): grande popularidade ° Sistemas operacional MS-DOC da Microsoft ° Projeto aberto: vários clones, assim nascia a indústria de PCs • Apple Macintosh – interface gráfica • Microsoft Windows – rompimento com IBM • 1992: DEC lança o ALPHA de 64 bits Organização Estruturada de Computadores 54 Quarta geração: VLSI (1980-?) • Era dos antagonismos: ° ° ° ° ° IBM PC x Macintosh IBM PC x Workstations RISC x CISC DOS/Win x Unix Microsoft x o resto Organização Estruturada de Computadores 55 Quinta geração – computadores invisíveis? • A Internet está presente em todo lugar • Processadores estão cada vez menores • Podem ser embutidos em quase tudo ° ° ° ° ° ° PDAs Celulares Eletro-eletrônicos Máquinas (automóveis) Sensores RFIDs • A idéia existe há anos, mas “a hora é agora” Organização Estruturada de Computadores 56 Tendências fundamentais: “Lei” de Moore O no. de transistores dobra a cada 18 meses Organização Estruturada de Computadores 57 Tendências fundamentais: “Lei” de Moore O no. de transistores dobra a cada 18 meses Organização Estruturada de Computadores 58 Tendências fundamentais: “Lei” de Nathan • Software é um gás: ele se expande até ocupar todo o recipiente que o contém • Exemplo clássico: Win* Organização Estruturada de Computadores 59 Marcos da Arquitetura de Computadores Organização Estruturada de Computadores 60 Marcos da Arquitetura de Computadores Organização Estruturada de Computadores 61 Espectro dos computadores atuais Tipo Computador descartável Preço 1 Computador embutido 10 Computador de jogos 100 Computador pessoal Servidor Clusters de estações Mainframe Supercomputadores 1K 10K 100K Aplicação Cartões musicais Relógios, carros, eletro-eletrônicos Jogos (vídeo-games simples) Estações de trabalho Servidores de rede Supercomputadores departamentais 1M Processamento de grande volume de dados 10M Previsão do tempo, armas nucleares Organização Estruturada de Computadores 62 Computador Pessoal Organização Estruturada de Computadores 63 Exemplos de famílias de computadores • Pentium 4 da Intel • UltraSPARC III da Sun Microsystems • O chip 8051 da Intel, para sistemas embutidos Organização Estruturada de Computadores 64 Família de computadores Intel Organização Estruturada de Computadores 65 Família de computadores Intel Lei de Moore para chips de CPU (Intel). Organização Estruturada de Computadores 66 Família de computadores Intel Chip Pentium 4. Direitos de reprodução da Intel Corporation, 2003, utilização permitida. Organização Estruturada de Computadores 67 Família de computadores Sparc • Estações de trabalho pessoais Unix • Sun computers (Stanford University Network) ° “The Network is the Computer” • SPARC: Scalable Processor Architecture ° Apenas definiu a arquitetura, diversos fabricantes fizeram suas implementações • Exemplo clássico de processador RISC ° Posteriormente o conjunto de instruções foi extendido Organização Estruturada de Computadores 68 Família MCS-51 • “Um computador em um chip” ° ° ° ° ° ° CPU 8 bits Memória ROM Memória RAM UART (serial) Temporizadores Saídas de controle (binárias ou analógicas) Organização Estruturada de Computadores 69 Família MCS-51 Organização Estruturada de Computadores 70 Próximo capítulo • Introdução aos componentes básicos da arquitetura ° processador ° memória ° dispositivos de entrada e saída • Princípios de projeto dos vários componentes Organização Estruturada de Computadores 71 Organização Estruturada de Computadores 72