Arquitectura de Computadores Introdução • Evolução histórica • Arquitectura básica de um computador • Processo de desenvolvimento de um programa Arquitectura de Computadores – LEIC Prof. Renato Nunes 1 O impacto dos computadores • O computador é um dos maiores feitos do Homem. Tornou áreas de trabalho obsoletas, criou outras, tornou possível coisas impossíveis. • Mais do que a própria televisão, o computador é “a caixa que mudou o mundo”. • Melhoria das capacidades de comunicação e a convergência do computador, dos telemóveis e da televisão de alta definição permite: – distribuição de informação multimédia; – interacção global (internet, comunicação audio e video, TV interactiva); – processamento local de informação. 2 Os computadores são inteligentes? • Um computador não tem nada de mágico nem pode ser considerado um sistema inteligente. • É fiável e determinístico (não se cansa nem erra) e é muito rápido. • Tem de ser exaustivamente programado pelo utilizador, que tem de prever todas as situações. • A inteligência aparente do computador é apenas a inteligência do programador. • Um computador limita-se a seguir cegamente as regras que foram definidas (instruções do programador). Não tem visão de conjunto nem sabe o que está a fazer! 3 Motivação para a divulgação dos computadores • Antes dos computadores tudo era manual (mão-deobra intensiva). • O computador permite: – Automatizar tarefas repetitivas (sem nunca se cansar); – Manipular grandes quantidades de informação (possui grande capacidade de memória e de processamento); – Executar operações com grande rapidez (milhões de vezes mais rápido que o ser humano); – Executar operações de forma fiável (o erro humano é muito frequente); – Redução de custos (o computador não recebe ordenado…). Vantagens (ainda) das pessoas: – inteligência, criatividade, trabalho físico especializado. 4 Primeiro objecto de cálculo • Ábaco - desde 3000 A.C. • Usado ainda hoje (China, por exemplo) 5 Primeiro somador mecânico • 1642 – Blaise Pascal (filho de um cobrador de impostos…) • Primeiro “e vai um” automático 6 Primeira automatização • 1801 – Joseph-Marie Jacquard • Máquina de tecer com cartões perfurados • Causou motins contra as máquinas substituirem as pessoas 7 Primeira grande aplicação • Recenseamento em 1890 nos Estados Unidos • Hollerith Tabulating Company • Deu origem à IBM em 1924 8 Primeiras aplicações de dados • 1959 • ERMA • Processamento automático de dados • Produção automatizada de cheques • Início do verdadeiro impacto na sociedade e no mercado de trabalho 9 Funcionamento de um computador • Um computador processa informação (manipulação simbólica) de acordo com um conjunto de regras definidas pela sua programação Informação Informação deentrada entrada de Processamento Processamento Informação Informação desaída saída de 10 Algoritmo • Qualquer processamento pressupõe um algoritmo (conjunto de passos elementares para se atingir um dado objectivo). • O mesmo processamento pode ser implementado por algoritmos diferentes. • Exemplo: cálculo do perímetro de um rectângulo: – Algoritmo 1: Somar os lados todos; – Algoritmo 2: Somar um lado com outro diferente e depois multiplicar a soma por dois. • Pessoas e computadores podem usar algoritmos diferentes para resolver o mesmo problema porque têm capacidades específicas diferentes. 11 Componentes básicos de um computador Processador Processador Interface Interface comoomundo mundo com Memória Memória deprograma programa de Memória Memória dedados dados de 12 Ciclo básico do processador Memória 1. Lê uma instrução da memória de Memória Processador de programa Processador de programa programa; 2. Interpreta a instrução (vê que operação é preciso fazer); Memória Memória Interface de dados Interface de dados com o mundo 3. Lê operandos da memória de dados; com o mundo 4. Executa a operação; 5. Armazena o resultado na memória de dados; 6. A memória de dados pode ser substituída pela interface com o mundo exterior nos passos 3 ou 5 ou em ambos; 7. Volta ao passo 1 onde irá ler a instrução seguinte na memória de programa. A vida de um computador é muito monótona!... 13 Os computadores e as Pessoas Processador Processador Interface Interface com o mundo com o mundo Memória Memória de programa de programa Memória Memória de dados de dados Manual de procedimentos Cérebro Bloco de notas 5 sentidos, voz, membros 14 Arquitectura de um computador Processador Memóriade deprograma programa Memória Unidade de controlo Memóriade dedados dados Memória Unidade aritmética e lógica Periféricos (entradas/saídas) • Arquitectura de Harvard – Memória de Programa separada da Memória de Dados 15 Arquitectura de von Neumann (1946) • Um sistema de memória único que contém programa e dados Processador Unidade de controlo Unidade aritmética e lógica Memória Memória (programa dados) (programa ++dados) Periféricos (entradas/saídas) 16 Representação de dados • Pessoas: – seres vivos que funcionam por processos químicos e bioeléctricos, com valores contínuos e lógica difusa; – Números: 10 dígitos decimais (0 a 9) – Alfabeto: 26 letras (A a Z) • Computadores: – sistemas electrónicos, com base em tensões eléctricas, com valores discretos (binários) e lógica booleana; – Números: 2 dígitos binários (0 e 1) (cada dígito binário designa-se por bit, 8 bits = byte) – Alfabeto: não tem (solução: codificação das letras em números códigos ASCII e Unicode) 17 Das pessoas até aos computadores Pessoa "...depositar 100 euros..." Programador saldo = saldo + 100; Compilador ADD R1, 100 Assemblador 10011011 01100100 Automático Códigomáquina máquina Código Sistema gestão bancária Utilizador Manual Ideiaou ou Ideia conceito conceito Língua Língua natural natural Linguagem Linguagem deprogramação programação de Linguagem Linguagem assembly assembly Computador 18 O ciclo típico de um programa Editor Programa em C Compilador Programa em assembly debugger Assembler Módulo pré-compilado (biblioteca) Código máquina Processador Linker Run (SO) Memória Loader (SO) Programa executável 19 Ciclo de desenvolvimento de um programa para o P3 Editor Programa em assembly P3AS Assembler Código máquina (programa executável) P3SIM debugger Processador Run Memória Loader 20 Estrutura básica de um computador Periférico Periférico22 Bus de controlo Periférico Periférico11 Unidadede de Unidade dados dados Bus de endereços Interface Interfacede de memória memória Unidade de controlo Memória Memória Processador Processador Bus de dados 21 E o que é um barramento? Unidade de Unidade de dados dados Periférico 2 Periférico 2 Bus de controlo Memória Memória Bus de endereços Interface de Interface de memória memória Unidade de controlo Periférico 1 Periférico 1 Processador Processador Bus de dados • Conjunto de fios que circulam em paralelo (formando um conjunto solidário). • Forma simples de representar um conjunto de bits logicamente relacionados. • Serve para transferir informação em conjuntos de bits. • Bus ≡ barramento. 22 Interligação dos módulos Bus de controlo Periférico Periférico22 Unidadede de Unidade dados dados Bus de endereços Memória Memória Periférico Periférico11 Unidade de controlo Interface Interfacede de memória memória Processador Processador Bus de dados • Todos ligam aos 3 barramentos: – O barramento de dados transfere a informação – O barramento de endereços especifica: • Qual o módulo de/para onde transferir (memória, periférico 1, …) • Qual a célula de memória/registo envolvido na transferência – O barramento de controlo estabelece o protocolo de transferência (quando começa, quando acaba, sentido da transferência, etc) 23 Funcionamento básico • O processador é o mestre e comanda tudo. • A memória e os periféricos são escravos que só “falam” quando o mestre lhes pergunta alguma coisa. • A execução de um programa envolve essencialmente as operações seguintes por parte do processador: – – – – – – Ler da memória as instruções do programa; Ler da memória os operandos das instruções; Fazer cálculos e tomar decisões; Armazenar na memória os resultados das instruções; Ler dados dos periféricos; Escrever dados nos periféricos; … e passa a vida a fazer isto!… 24 Periféricos Unidade de Unidade de dados dados Memória Memória Periférico 1 Periférico 1 Bus de endereços Unidade de controlo Bus de controlo Bus de dados – Porto de entrada: lê os valores dos bits do circuito externo; – Porto de saída: o porto memoriza o valor da última escrita. Os bits dessa palavra ligam ao circuito externo; – Alguns portos podem ser programados por software para entrada ou saída (palavra a palavra ou bit a bit). • Um periférico pode ter vários portos. • Há periféricos mais inteligentes: controlador de disco, controlador de ethernet, controlador gráfico, … 25 Barramento de endereços Unidade de Unidade de dados dados Bus de controlo Memória Memória Bus de endereços Periférico 2 Periférico 2 – na memória – nos periféricos Unidade de controlo Interface de Interface de memória memória • Permite endereçar palavras ou bytes individuais: Periférico 1 Periférico 1 Processador Processador Bus de dados • A sua largura em bits: – indica o espaço de endereçamento do processador. Exemplos: • 16 bits 64K; • 32 bits 4 G; – é independente da largura do barramento de dados 1K = 1024 = 210 1M = 1K * 1K = 220 1G = 1M * 1K =230 1T = 1G * 1K = 240 (10 bits) (20 bits) (30 bits) (40 bits) • É unidireccional 26 Periférico 2 Periférico 2 Processador Processador Interface de Interface de memória memória • Comportam-se como pequenas memórias cujos bits ligam ao mundo exterior. • Cada endereço designa-se por porto: Espaço de endereçamento – Não pode haver duas células diferentes no mesmo endereço! – A memória não tem que ser contígua. – Cada periférico pode ter várias células • Nem todos os endereços têm de ter célula válida (leitura sem célula válida dá valor aleatório). Unidade de Unidade de dados dados Periférico 2 Periférico 2 Memória Memória Bus de controlo Periférico 1 Periférico 1 Bus de endereços Interface de Interface de memória memória Unidade de controlo Bus de dados Espaço de endereçamento (com 16 bits) • Conjunto de células individualmente endereçáveis pelo processador: Processador Processador Memória 2 FFFFH Periférico 3 Periférico 2 Periférico 1 Memória 1 0000H 27 Barramento de dados • É bidireccional • A sua largura em bits: Unidade de Unidade de dados dados Bus de controlo Periférico 2 Periférico 2 Bus de endereços Memória Memória Unidade de controlo Periférico 1 Periférico 1 – na memória – nos periféricos Processador Processador Interface de Interface de memória memória • Permite ler e escrever dados: Bus de dados – é igual à largura da palavra do processador – é geralmente uma potência de 2 ≥ 8 (8, 16, 32, 64, …) – define a gama de valores inteiros que é possível guardar numa só célula • Também serve para ler as instruções da memória • As leituras/escritas só são efectuadas depois de o barramento de endereços ter o valor correcto. 28 Barramento de controlo • Sinais típicos (activos a zero): Unidade de Unidade de dados dados Bus de controlo Periférico 2 Periférico 2 Bus de endereços Memória Memória Unidade de controlo Periférico 1 Periférico 1 – à memória – aos periféricos Interface de Interface de memória memória • Controla o acesso: Processador Processador Bus de dados – Read (/RD) – Write (/WR) 29 Ciclos de acesso à memória e aos periféricos Unidade de Unidade de dados dados Bus de controlo Memória Memória Bus de endereços Interface de Interface de memória memória Unidade de controlo Periférico 2 Periférico 2 • O processador acede à memória e aos periféricos através dos 3 barramentos com um protocolo bem definido. • Cada ciclo (de leitura ou de escrita) envolve essencialmente: Periférico 1 Periférico 1 Processador Processador Bus de dados – Colocar endereço no barramento de endereços (para especificar a célula que quer ler/escrever) – Activar sinais de controlo (/RD, /WR, etc.) – Ler/escrever dado no barramento de dados 30 Ciclo de leitura Bus de endereços endereço Unidade de Unidade de dados dados Periférico 2 Periférico 2 Bus de controlo Memória Memória Relógio Bus de endereços Interface de Interface de memória memória Unidade de controlo Periférico 1 Periférico 1 Processador Processador Bus de dados 1. Coloca endereço 2. Activa /RD 3. Memória/periférico /WR activa bus de dados 4. Lê dado Bus de dados 5. Desactiva /RD dados 6. Retira endereço 7. Memória/periférico • Este ciclo também é usado para ler instruções. desactiva bus de dados /RD 31 Ciclo de escrita Bus de endereços endereço /RD /WR Bus de dados dados Unidade de Unidade de dados dados Periférico 2 Periférico 2 Bus de controlo Memória Memória Relógio Bus de endereços Interface de Interface de memória memória Unidade de controlo Periférico 1 Periférico 1 Processador Processador Bus de dados 1. 2. 3. 4. 5. Coloca endereço Activa bus de dados Activa /WR Desactiva /WR Memória/periférico memoriza dado 6. Retira endereço 7. Desactiva bus de dados 32 Primeiro computador mecânico • 1822 – Charles Babbage • Difference Engine • Máquina para calcular tabelas 33 Primeiro computador electromecânico • 1944 • Harvard Mark I • Usado no cálculo de tabelas matemáticas e navegação • Objectivo semelhante à máquina de Babbage • 3 segundos para uma multiplicação de 10 dígitos 34 Primeiro “bug” documentado • 1945 • Testes no Harvard Mark II • Descobriram que um relé não fazia contacto devido a uma traça. • Este bug era real… Traça em fita-cola 35 Primeiro computador electrónico • 1946 • ENIAC • 18000 válvulas electrónicas • 30 toneladas • Sala com 30 metros • Cada registo: 60 cm • 1000 vezes mais rápido que o Mark I (3 ms para uma multiplicação de 10 dígitos) 36 A revolução: o transistor • 1947 • Tecnologia de semicondutores • Permitiu a substituição das válvulas • Menor consumo • Maior integração • Deu um prémio Nobel 37 Primeiro computador comercial • 1952 • UNIVAC • Fez uma previsão correcta dos resultados da eleição presidencial de 1952. 38 Primeiro minicomputador • 1965 • DEC PDP-8 • Começo da era do down-sizing 39 Nova revolução – o primeiro microprocessador • 1971 • Nascimento da Intel (com empregados da Motorola e Texas Instruments) • 4004 • Microprocessador 4 bits • 108 KHertz • 2300 transistores • Tecnologia 10 µ 40 Primeiro computador pessoal • • • • 1975 ALTAIR Preço: $375 Memória: 256 bytes • PCs (2005): 256 Mega bytes (2008: 2 GB) 41 Início da indústria do SW • 1975 • Compilador de Basic para o Altair • Bill Gates • Desistiu do curso na Universidade de Harvard 42 8086 • • • • • • 1978 Microprocessador 16 bits 5 MHertz 29000 transistores Tecnologia 3 µ Primeiro microprocessador “a sério”. Ainda hoje os Pentiums são compatíveis com o 8086. 43 Início da era IBM-PC • 1981 • PC - Personal Computer, com um 8088 • IBM: HW e SW não IBM. Além disso, publicou os detalhes (o que acabou por permitir os “clones”). • O PC foi declarado o “man of the year” de 1982 pela revista Time Magazine. 44 O PC actual • O site http://www.pctechguide.com contém informação muito boa e actualizada sobre toda a tecnologia PC. A não perder! 45 A placa mãe (motherboard) (ou mainboard) 46 Placa de vídeo AGP (daughterboard) 47 Arquitectura do PC-AT Controlador de interrupções Co-processador matemático 80x86 Barramento local buffer Barramento de sistema RAM buffer Slots ISA Barramento X Controlador de DMA CMOS RAM + RTC Controlador de teclado Timer Portos paralelos e série ROM BIOS 48 A evolução dos microprocessadores Micro Ano Bits MHz Transistores Tecnologia 8086 1978 16 5 29 K 3µ 80286 1982 16 12 134 K 1.5 µ 80386 1988 32 33 275 K 1.5 µ 80486 1992 32 66 1.4 M 0.8 µ Pentium 1996 32 166 3.1 M 0.8 µ Pentium II 1998 32 450 7.5 M 0.25 µ Pentium 4 2002 32 2200 55 M 0.13 µ 49 VLSI – Very Large Scale Integration • Fundamental para o hardware de computadores (que têm muitos circuitos). • Longe vai o tempo do IBM 360 (chips com 4 transistores) e de um famoso relatório que dizia que os transistores não tinham futuro e o que era preciso era miniaturizar as válvulas! 50 Embalagem • É um dos factores mais cruciais e caros num microprocessador • Um Pentium pode dissipar cerca de 20 W e ter mais de 400 pinos. • Os sockets têm passado por muitas gerações. 51 Conclusões • Os computadores substituiram as pessoas nas tarefas mais repetitivas e de mais baixo nível. • Os computadores não entendem as pessoas directamente. Têm de ser programados por meio de um algoritmo, uma linguagem de programação e um compilador. • O modelo de computador mais usado é o de von Neumann (processador, memória, periféricos). • A evolução dos computadores tem sido rápida e profunda. 52