Organização e Arquitetura de Computadores PUCC 1 Agenda - Aula 01 • Computador • Programas • Elementos básicos da máquina • Máquina multinível • Evolução dos computadores PUCC 2 Computador Digital • Máquina capaz de resolver problemas através da execução de instruções que lhe são passadas. • Os circuitos eletrônicos do computador executam um conjunto limitado de instruções simples: adição, subtração, deslocamento, OR, AND. PUCC 3 Computador Digital Memória CPU Execução das instruções de um programa Programas + Dados E/S Buffers PUCC Teclado Vídeo 4 Computador Digital oUnid. controle IR Reg. PC MAR Memória Programas + Dados MBR AC ALU E/S oUnid. processamento Buffers PUCC Teclado Vídeo 5 Programa • Seqüência de instruções que mostra como executar uma determinada tarefa. Pode ser escrita em uma linguagem específica. Por exemplo: - Some dois números. - Imprima “positivo” se o resultado for > 0. - Imprima “negativo” se o resultado for < 0. PUCC 6 Programa Problema Programa Computador Solução Qual a linguagem que o computador entende? PUCC 7 Programa • Computador executa um conjunto limitado de instruções simples: adição, subtração, deslocamento, OR, AND. Os programas são convertidos nestas instruções antes de serem executados. • Cada instrução deve ser executada pela máquina na qual o programa está instalado. • Apenas algumas linguagens contém instruções que podem ser diretamente executadas. PUCC 8 Programa Tradução e Execução • Os programas cujas instruções não podem ser diretamente executadas devem ser compilados ou interpretados para a linguagem que permita a execução direta de suas instruções. PUCC 9 Programa Compilação Execução linguagem não executável programa fonte Faça isto e aquilo linguagem executável programa objeto 0100111 0101101 dados entrada saída Máquina PUCC 10 Programa • O processo de compilação traduz todo o programa fonte para um programa objeto. Compilação Interpretação Faça isto e aquilo 0100111 0101101 • A interpretação traduz comando a comando do programa fonte, que são executados à medida que são traduzidos. Máquina PUCC 11 Programa O processo de execução de um programa envolve: • Executar cada instrução do programa objeto. • Obter os dados necessários para a computação. • Produzir as saídas resultantes da computação. 0100111 0101101 dados entrada saída Máquina PUCC 12 Elementos Básicos da Máquina • Memória • Unidade aritmética e lógica • Unidade de controle • Barramento • Dispositivos de entrada e saída PUCC 13 Elementos Básicos da Máquina O sistema no qual o programa será executado deve ser capaz de: • Armazenar o programa e os dados utilizados na computação. • Localizar cada instrução e identificar a ação que deve ser realizada. • Executar a ação, possivelmente obtendo, transformando e armazenando dados. • Comunicar-se com outros dispositivos (entrada e saída). PUCC 14 Elementos Básicos da Máquina O sistema no qual o programa será executado deve ser capaz de: Memória • Armazenar o programa e os dados utilizados Aritmética e na computação. Lógica • Localizar cada instrução e identificar a ação Controle que deve ser realizada. Canais de Comunicação • Executar a ação, possivelmente obtendo, Dispositivos transformando e armazenando dados. • Comunicar-se com outros dispositivos (entrada e saída). PUCC 15 Máquina Multinível Linguagem Assembly Linguagem C swap: Swap (int v[], int k) {int temp: temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Código Executável 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 PUCC 16 Máquina Multinível • Uma máquina pode ser vista como tendo vários níveis, cada um capaz de executar um conjunto de instruções específicas. Isto é, cada nível possui linguagens apropriadas para descrever as instruções que nele podem ser executadas. MÁQUINA VIRTUAL • A maioria dos computadores possui dois ou mais níveis. Descreveremos a organização de uma máquina de seis níveis. PUCC 17 Máquina Multinível Nível 5: linguagem orientada a problemas Tradução (Compilador) Nível 4: linguagem de montagem Tradução (Montador) Nível 3: sistema operacional Interpretação Parcial (SO) Nível 2: máquina convencional Interpretação (Microprograma) Nível 1: microprogramação Executados Diretos pelo Hardware Nível 0: lógica digital dispositivos PUCC 18 Máquina Multinível linguagem orientada a problemas linguagem de montagem sistema operacional • Formado pelos transistores individuais máquina convencional • Tensão, corrente, circuitos, etc. microprogramação lógica digital dispositivos PUCC 19 Máquina Multinível linguagem orientada a problemas linguagem de montagem sistema operacional máquina convencional • Portas lógicas e CI. • Implementam a manipulação de sinais executando funções lógicas básicas: AND, OR, NOT, deslocamento de bits, etc. microprogramação soma lógica digital dispositivos PUCC vai um 20 Máquina Multinível linguagem orientada a problemas linguagem de montagem sistema operacional máquina convencional microprogramação lógica digital • Microinstruções constituem de microprogramas que controlam a entrada e saída de sinais para os vários dispositivos e controlam as várias portas lógicas. • Instruções binárias. dispositivos PUCC 21 Máquina Multinível linguagem orientada a problemas linguagem de montagem sistema operacional máquina convencional microprogramação • Comandos para executar funções específicas da máquina: formato de instruções endereçamento, interrupções, dependente da arquitetura utilizada. MOV 0 ACC; ADD 03FC; lógica digital dispositivos PUCC 22 Máquina Multinível linguagem orientada a problemas linguagem de montagem sistema operacional máquina convencional microprogramação lógica digital Comandos para executar funções específicas da máquina: • Gerenciamento de tarefas, • Sistema de arquivos, • Memória virtual e paginação. dispositivos PUCC 23 Máquina Multinível linguagem orientada a problemas Assembler linguagem de montagem sistema operacional máquina convencional microprogramação Cada comando corresponde exatamente a uma instrução a ser executada. Utiliza-se mnemônicos e endereços simbólicos. MOV 0 ACC; MOV 0 R1; lógica digital dispositivos PUCC ... GTO A R1 24 Máquina Multinível linguagem orientada a problemas C, C++, Pascal, Cobol linguagem de montagem sistema operacional Aux:= 0; do máquina convencional microprogramação print(Aux); Aux:= Aux + 1; while Aux <= 10; lógica digital dispositivos PUCC 25 Evolução dos Computadores • PUCC GERAÇÃO ZERO - 1836 - Anos 30 – Máquinas mecânicas ou baseadas em relés • dificuldade de construção • pouca exatidão – 1 nível: • nível de lógica digital – Exemplos: • 1936 - Zuze - Z1 – Primeira máquina calculadora a relés • 1943 - Governo Britânico - Colossus – Primeiro computador eletromecânico 26 Evolução dos Computadores • PRIMEIRA GERAÇÃO - Anos 40 – Válvulas com processadores • Caras, lentas, queimavam com facilidade – ENIAC, UNIVAC – 2 níveis: • nível convencional • nível de lógica digital – Exemplos: • 1946 - Eckert/Mauchkley - Eniac 1 – A História do computador moderno começa aqui! PUCC 27 Evolução dos Computadores • SEGUNDA GERAÇÃO - Anos 50 – Transistores • menores, mais baratos, rápidos, duráveis – 3 níveis: • nível de montadores (assembly) • nível de máquina convencional • nível de lógica digital – Exemplo: • 1952 - Von Neumann - IAS – Modelo da maioria das máquinas atuais. PUCC 28 Evolução dos Computadores • TERCEIRA GERAÇÃO - Anos 60 – Circuitos Integrados (CI`s) – 4 níveis: • nível de montadores/compiladores • nível de sistema operacional • nível de máquina convencional • nível de lógica digital – Exemplos: • 1960 - DEC - PDP 11 – Primeiro minicomputador (50 unidades vendidas) • 1964 - IBM - 360 – Primeira linha de produtos projetada como uma família. PUCC 29 Evolução dos Computadores • QUARTA GERAÇÃO - Anos 70 – Microprocessadores/ Mem. semicondutora • VLSI Very Large Scale Integration – 5 níveis: • nível de montadores/compiladores • nível de sistema operacional • nível de máquina convencional • nível de microprogramação • nível de lógica digital – Exemplos: • 1974 - Intel - 8080 – Primeira CPU de uso geral em um chip. PUCC 30 Evolução dos Computadores • QUINTA GERAÇÃO - Anos 80 – Máquinas RISCs • Crise do Software • Linguagem C – 4 níveis: • nível de montadores/compiladores • nível de sistema operacional • nível de máquina convencional • nível de lógica digital – Exemplos: RISC, MIPS, Sparc. PUCC 31 Evolução dos Computadores • Crise do Software – Diminuição do preço de hardware • Aumento do preço relativo do software – Dificuldades em achar programadores • Aumento do preço absoluto do software – Aumento da complexidade dos sistemas • Impulsionou linguagens de alto nível • Gap semântico • Melhoria da tecnologia dos compiladores PUCC 32 Evolução dos Computadores • ... Anos 90 – Arquiteturas Superescalares – Arquiteturas VLIW ou EPIC (Explicit Parallel Instruction Coding, ex: Merced IA64 da Intel) – Arquiteturas Superpipeline – 3 níveis • nível de sistema operacional • nível de máquina convencional • nível de lógica digital – Exemplos: • Pentium, Alpha, Power. PUCC 33 PUCC 34