1. INTRODUÇÃO - sites.poli.usp.brsites.poli.usp.br/d/pcs2529/index_arquivos/1-INTRODUCAO.pdf · 1...

23
1 1. INTRODUÇÃO Computador Digital: “É uma máquina capaz de solucionar problemas através da execução de instruções que lhe são fornecidas”. Programa: “É uma seqüência de instruções que descrevem como executar uma determinada tarefa”. Instruções de Máquina: “Instruções que o computador é capaz de reconhecer e executar, para o qual todos os programas devem ser convertidos antes que eles possam ser executados”. Em geral não são muito complicadas. Exemplos: “Somar dois números” “Verificar se um número é zero” “Mover um dado de uma parte da memória para a outra” Linguagem de Máquina: “Linguagem que torna possível as pessoas se comunicarem com o computador, composta pelas instruções primitivas de máquina”. Quanto mais complexa a linguagem, e portanto as instruções, mais complicados são os circuitos eletrônicos para implementá-las. Quanto mais simples a linguagem, mais difícil é a sua utilização.

Transcript of 1. INTRODUÇÃO - sites.poli.usp.brsites.poli.usp.br/d/pcs2529/index_arquivos/1-INTRODUCAO.pdf · 1...

1

1. INTRODUÇÃO

♦ Computador Digital: “É uma máquina capaz de solucionar problemas através da execução de instruções que lhe são fornecidas”.

♦ Programa: “É uma seqüência de instruções que descrevem como executar uma determinada tarefa”.

♦ Instruções de Máquina: “Instruções que o computador é capaz de reconhecer e executar, para o qual todos os programas devem ser convertidos antes que eles possam ser executados”.

• Em geral não são muito complicadas. • Exemplos:

∗ “Somar dois números” ∗ “Verificar se um número é zero” ∗ “Mover um dado de uma parte da memória para a

outra”

♦ Linguagem de Máquina: “Linguagem que torna possível as pessoas se comunicarem com o computador, composta pelas instruções primitivas de máquina”.

• Quanto mais complexa a linguagem, e portanto as instruções, mais complicados são os circuitos eletrônicos para implementá-las.

• Quanto mais simples a linguagem, mais difícil é a sua utilização.

2

♦ Como tornar a linguagem de máquina (L1) mais simples de ser utilizada ?

• Projetar um novo conjunto de instruções, formando uma linguagem L2, mais fácil de se programar.

• 1a Alternativa: Tradução ∗ Método que consiste na substituição de cada

instrução do programa escrito na linguagem L2 por uma seqüência de instruções equivalente na linguagem L1.

∗ O computador executa o programa em L1. • 2a Alternativa: Interpretação

∗ Método onde um programa escrito na linguagem L1 recebe os programas escritos em L2, e cada instrução em L2 é executada por uma seqüência equivalente em L1.

∗ O computador executa o programa em L1. • Comparação entre Tradução e Interpretação:

∗ Similares. ∗ Ambas executam seqüências equivalentes em L1 de

cada instrução em L2. ∗ Na tradução, o programa em L2 é descartado,

obtendo-se um programa equivalente em L1.

♦ Máquina Virtual: “É um computador hipotético de linguagem de máquina de um nível mais elevado do que a linguagem inerente do computador”.

• Pode-se ter também máquinas virtuais baseadas em outras máquinas virtuais.

3

♦ Máquina Multinível: “É um computador que possui máquinas virtuais dispostas em camadas ou níveis, umas sobre as outras. Cada linguagem utiliza a sua predecessora como base”.

Nível n Máquina Virtual Mn, com linguagem de

máquina Ln

Os programas em Ln ou são interpretados por um interpretador em execução em uma linguagem de máquina de nível inferior, ou são traduzidos para a linguagem de máquina de uma máquina de nível inferior.

...

Nível 4 Máquina Virtual M4, com linguagem de

máquina L4

Nível 3 Máquina Virtual M3, com linguagem de

máquina L3

Os programas em L3 ou são interpretados por interpretadores em execução em M2 ou M1, ou são traduzidos para L2 ou L1.

Nível 2 Máquina Virtual M2, com linguagem de

máquina L2

Os programas em L2 ou são interpretados por interpretadores em execução em M1, ou são traduzidos para L1.

Nível 1 Computador Real M1, com linguagem

de máquina L1

Os programas em L1 podem ser executados diretamente pelos circuitos eletrônicos.

4

1.1. Considerações Sobre Máquinas Virtuais

♦ Se uma máquina de linguagem L2 pudesse ser construída a um custo baixo, a máquina de linguagem L1 não existiria.

♦ As linguagens L1 e L2 não devem ser muito diferentes, para facilitar a tradução/interpretação.

♦ Cada máquina virtual ou real tem a sua linguagem de máquina (instruções que a máquina é capaz de executar).

♦ Uma máquina real com linguagem de máquina como o C ou Pascal seria muito complicada para os padrões atuais.

♦ O programador de um determinado nível não precisa conhecer os níveis inferiores.

♦ O termo “Organização Estrutural de Computadores” vem desta forma de se visualizar o computador, como um conjunto hierárquico de níveis”.

5

1.2. Máquinas Multinível Contemporâneas

♦ Em geral, os computadores modernos são máquinas de seis níveis:

Nível 5 Nível de linguagem orientada

para problemas

Tradução (compilador)

Nível 4 Nível de linguagem de

montagem

Tradução (montador)

Nível 3 Nível de sistema operacional

Interpretação parcial (sistema operacional)

Nível 2 Nível de máquina convencional

Interpretação (microprograma)

Nível 1 Nível de microprogramação

Os microprogramas são executados diretamente pelo hardware

Nível 0 Nível de lógica digital

6

♦ Nível 0 - Nível de Lógica Digital

• Nível de portas lógicas. ∗ Entrada: 0 ou 1 ∗ Saída: função simples sobre as entradas (AND, etc.).

♦ Nível 1 - Nível de Microprogramação

• É o nível real de linguagem de máquina. • Cada computador tem seu nível de microprogramação. • Em geral, o número de instruções (micro-instruções) não

ultrapassa 20. ∗ Maior parte: movimentação de dados.

• Possui microprogramas executados neste nível: ∗ Define uma linguagem de nível 2. ∗ Interpreta as instruções de nível 2.

♦ Nível 2 - Nível de Máquina Convencional

• Existe muita semelhança entre os fabricantes neste nível. • Cada fabricante tem o seu “Manual de Referência de

Linguagem de Máquina”.

♦ Nível 3 - Nível de Sistema Operacional

• É um nível híbrido. ∗ Uma parte das instruções deste nível é idêntica as

instruções do nível 2 que são interpretadas pelos microprogramas.

∗ Uma outra parte é interpretada pelo sistema operacional.

7

♦ Nível 4 - Nível de Linguagem de Montagem

• Provê um método para as pessoas escreverem programas para os níveis 1, 2 e 3 (linguagem simbólica).

• Os programas escritos em linguagem de montagem são traduzidos para as linguagens de nível 1, 2 ou 3 e interpretados pela máquina virtual ou real.

• Quem faz a tradução é o programa montador.

♦ Nível 5 - Nível de Linguagem de Alto Nível

• Exemplos: Basic, C, Cobol, Fortran, Lisp, Modula 2 e Pascal.

• Compilador: traduz os programas em linguagem de alto nível para os níveis 3 ou 4.

♦ Nível 6 e superiores - ?

• Depende da aplicação. • Pode ser criado para atender a necessidades específicas.

♦ Arquitetura de Computadores ou Organização de Computadores: “É o estudo de como projetar as partes de um computador que são visíveis aos programadores”.

8

1.3. Evolução das Máquinas Multinível

♦ 1940’s:

• 2 níveis: lógica digital e máquina convencional. • Difícil de entender e construir. • Não confiáveis.

♦ 1951:

• 3 níveis: lógica digital, microprogramação e máquina convencional.

• Interpretador embutido e imutável. • Simplificação do hardware: passa a ter que executar

microprogramas. • Maior confiabilidade (menos válvulas).

♦ 1950’s:

• Surgimento dos montadores e compiladores.

♦ 1960’s:

• Surgimento do nível de sistema operacional. • Sistemas batchs (em lote). • Sistemas time-sharing (tempo compartilhado).

♦ 1970’s:

• Generalização da interpretação e nível de microprogramação.

9

1.4. Hardware, Software e Máquinas Multinível

♦ Hardware do computador: “É o conjunto de três elementos:

• Circuitos eletrônicos • Memória • Dispositivos de Entrada e Saída (E/S)”.

♦ Software: “Conjunto de instruções que constituem os programas, armazenados em algum meio físico”.

♦ Firmware: “É o software embutido no dispositivo eletrônico durante a sua fabricação”.

• Exemplos: ∗ Software imutável: briquedos, instrumentos, BIOS.

♦ Hardware e Sofware são logicamente equivalentes !

• Uma determinada operação pode ser implementada diretamente por hardware ou simulada por software. ∗ ADD - soma de dois operandos. ∗ MULT - multiplicação de dois elementos.

♦ Atualmente, muitas das operações antigamente programadas no nível de máquina convencional passaram a ser executadas pelo hardware ou microprogramas.

1. Instruções para multiplicação e divisão de inteiros. 2. Instruções aritméticas de ponto-flutuante. 3. Instruções aritméticas de dupla precisão (aritmética de

números com duas vezes o número de algarismos significativos).

10

4. Instruções para chamar e retornar de procedimentos. 5. Instruções para acelerar laços (loops). 6. Instruções de contagem (somar 1 a uma variável). 7. Instruções para manipular cadeias de caracteres. 8. Aspectos de aceleração de computações envolvendo

matrizes (indexação e endereçamento indireto). 9. Características para permitir que os programas fossem

movidos na memória (facilidades de relocação). 10. Relógios para temporizar programas. 11. Sistemas de interrupção que avisam o computador tão

logo uma operação de entrada ou saída esteja completada.

12. A capacidade de parar um programa e iniciar outro utilizando poucas instruções (chaveamento entre processos).

♦ A fronteira entre o hardware e o software é variável.

♦ É transparente se uma determinada instrução é realmente executada por hardware ou por software.

• A funcionalidade é a mesma. • Muda a velocidade.

11

1.5. Evolução dos Computadores

A Geração Zero - Computadores Mecânicos (1642-1945)

♦ 1642 - Primeiro computador - Blaise Pascal

• Computador mecânico com engrenagens e manivelas. • Soma, subtração.

♦ 1672 - Computador mecânico - Leibniz

• Equivalente a uma calculadora de bolso: soma, subtração, multiplicação e divisão.

♦ 1830’s - Máquina de diferenças - Charles Babbage

• Cálculo de tabelas para a navegação naval através de somas e subtrações sucessivas (método das diferenças finitas).

• Perfurava os resultados numa placa de cobre.

♦ 1834 - Máquina analítica - Charles Babbage

• Foi a primeira tentativa de se construir um computador digital.

• Possuia 4 componentes: ∗ Armazenamento (memória). ∗ Engenho (unidade de cálculo). ∗ Seção de entrada (leitora de cartões perfurados). ∗ Seção de saída (saída perfurada e impressa).

• Programação: Ada Byron.

12

♦ 1936 - Z1 - Zuse

• Primeira máquina calculadora a relés a funcionar.

♦ 1940 - Calculadora - Stibbitz

• Aritmética binária. • Memória dinâmica a capacitores (necessitavam de

refrescamento).

♦ 1944 - Mark I - Aiken

• 72 palavras de 23 dígitos decimais. • Ciclo de instrução de 6 segundos.

A Primeira Geração - Válvulas (1945-1955)

♦ 1943 - COLOSSUS - Governo Britânico

• Primeiro computador eletrônico digital do mundo. • Segredo militar.

♦ 1946 - ENIAC I - Eckert/Mauchley

• Início da história do computador moderno. • Computador e Integrador Numérico Eletrônico. • 18.000 válvulas e 1.500 relés. • 30 toneladas e consumo de 140 Kwatts. • 20 registradores de 10 dígitos decimais. • Programação: 6.000 chaves e soquetes.

♦ 1949 - EDSAC - Wikes

• Primeiro computador de programa armazenado.

13

♦ 1951 - Whirlwind I - M.I.T.

• Primeiro computador de tempo real.

♦ 1951 - UNIVAC I - Eckert/Mauchley

• Primeiro computador vendido comercialmente.

♦ 1952 - IAS - von Neumann

• Programação por chaves e cabos era lenta. • O programa era armazenado na forma digital na

memória junto com os dados. • Substituição da representação decimal (10 válvulas por

dígito) na memória pela representação digital. • Projeto básico é atual: máquina de von Neumann.

Memória

Entrada

Unidade

Unidade Lógica e

de Aritmética Saída

Controle

Acumulador

14

• Memória: 4096 palavras de 40 bits. • Palavra: 40 bits.

∗ 2 instruções de 20 bits. ∗ 1 no inteiro 39 bits com sinal.

• Instrução: 20 bits. ∗ 8 bits - tipo de instrução. ∗ 12 bits - endereço de 1 palavra na memória.

• Instruções típicas envolvendo o Acumulador (Ac): ∗ Ac ← Ac + Conteúdo de uma palavra na memória. ∗ Memória ← Ac.

♦ 1953 - 701 - IBM

• 2K palavras de 36 bits de núcleo de ferrite. • 2 instruções por palavra.

♦ 1956 - 704 - IBM

• 4K palavras de 36 bits. • Hardware de ponto-flutuante.

A Segunda Geração - Transistores (1955-1965)

♦ 1960 - PDP-1 - DEC

• Primeiro minicomputador (50 vendidos). • 4K palavras de 18 bits. • Ciclo de instrução de 5 µseg. • Custava cerca de US$ 120.000. • Display visual (CRT), com 512x512 pontos.

15

♦ 1961 - 1401 - IBM

• Máquina comercial de pequeno porte muito popular.

♦ 1962 - 7094 - IBM

• Dominou a computação científica no início dos anos 60.

♦ 1963 - B5000 - Burroughs

• Primeira máquina projetada para uma linguagem de alto nível (Algol 60).

♦ 1964 - IBM 360 - IBM

• Primeira linha de produtos projetados como uma família (início).

♦ 1964 - 6600 - CDC

• Primeira máquina com amplo uso de paralelismo internamente.

A Terceira Geração - Circuitos Integrados (1965-1980)

♦ 1964... - 360 - IBM

• Primeira linha de produtos projetados como uma família. • Toda a família com a mesma linguagem de montagem. • Multiprogramação: vários programas simultaneamente

na memória. • Endereçamento de 224 (16Mbytes). • Sucessores: 370, 4300, 3080, 3090. • Linha baseadas em circuitos integrados.

16

• Linha IBM 360:

Modelo Propriedade 30 40 50 65 Desempenho Relativo 1 3,5 10 21 Tempo de Ciclo (ns) 1000 625 500 250 Memória Máxima (K) 64 256 256 512 Bytes Buscados por Ciclo 1 2 4 16 No Máximo de Canais de Dados 3 3 4 6

♦ 1965 - PDP-8 - DEC

• Primeiro minicomputador de venda em massa (50.000 unidades vendidas).

• Barramento: conjunto de fios paralelos para conectar componentes de um computador. ∗ Omnibus:

CPU(*) Memória TerminalConsole

E/S de fita de papel

Outras E/S

Omnibus

(*) CPU: Unidade Central de Processamento.

♦ 1970 - PDP-11 - DEC

• Minicomputadores que dominaram os anos 70.

♦ 1974 - 8080 - Intel

• Primeira CPU de uso geral em uma única pastilha.

♦ 1974 - CRAY-1 - Cray

17

• Primeiro supercomputador.

♦ 1978 - VAX - DEC

• Primeiro supermini de 32 bits.

A Quarta Geração - Computadores Pessoais e VLSI (1980...)

♦ Com a evolução da microeletrônica, tornou-se possível a construção de circuitos integrados com milhões de transistores por chip.

• Computadores menores, mais rápidos e mais baratos. • Diminui-se as necessidades dos centros de computação

muito sofisticados.

♦ Passou a ser possível a construção de computadores de uso pessoal (microcomputadores).

• Processadores de textos, planilhas, divertimento, internet.

♦ Divisão atual dos computadores:

Tipo MIPs(*)

típicos(relativo)

Mbytestípicos(relativo)

Máquina exemplo

Exemplo de uso

Computador pessoal 1x 1x IBM PS/2 - PC Processamento de textos, etc.Minicomputador 2x 4x PDP-11/84 Controle de tempo real. Supermini 10x 32x SUN-4 Servidor de arquivos (rede). Mainframe 30x 128x IBM-3090/300 Bancos. Supercomputador 125x 1024x Cray-2 Previsão de tempo.

(*) MIPs: Milhões de Instruções por Segundo.

♦ Fronteira entre estas categorias de computadores é dinâmica e muda rapidamente. “O mainframe de hoje é o microcomputador de amanhã”.

18

♦ Supercomputadores: maximizam o número de FLOPs (Operações em Ponto-Flutuante por segundo).

A Família Intel

♦ 1971 - 4004

• Primeiro microprocessador (CPU em uma única pastilha).

• O objetivo era servir de base para a construção de calculadores.

• 4 bits, 45 instruções, 4Kbytes de endereçamento.

♦ 1972 - 8008

• Processador de 8 bits construído para controlar terminais. • 8 bits, 48 instruções, 16Kbytes de endereçamento.

♦ 1973 - 8080

• Características: 64Kbytes de endereçamento, clock 10 vezes mais rápido que o do 8008, compatível com a família TTL.

♦ 1976 - 8085

• Nova versão do 8080, mais rápido. • Incorpora gerador de clock e sinais de controle de sistema

internamente a pastilha.

♦ 1978 - 8086

• Características: 16 bits, 1Mbytes de endereçamento. • Utilizado para a construção de microcomputadores. • Deu origem a família 80x86.

19

♦ 1979 - 8088

• Versão simplificada do 8086, com via de dados de 8 bits. • Permitiu a construção de microcomputadores mais

baratos • Escolhido pela IBM como o microprocessador do

IBM PC original.

♦ 1982 - 80186

• Versão do 8086 que incorpora o gerador de clock, controlador de interrupção, temporizador e unidade de acesso direto a memória. Foi pouco usado.

♦ 1982 - 80188

• Versão simplificada do 80186, com via de dados de 8 bits.

♦ 1983 - 80286

• Versão do 8086 com 16Mbytes de endereçamento. • 1Gbytes de espaço de endereçamento de memória virtual. • Unidade de gerenciamento de memória. • CPU do microcomputador PC-AT e de algumas versões

do PS/2.

♦ 1985 - 80386

• Versão do 8086 de 32 bits. • Suporte a multi-tarefa. • 4Gbytes de endereçamento. • 64Tbytes de espaço de endereçamento de memória virtual. • 80386DX: via de dados externa de 32 bits.

20

• 80386SX: via de dados externa de 16 bits. Permitiu a migração do hardware do 80286 de forma mais direta.

♦ 1989 - 80486

• Versão melhorada do 80386. • 8Kbytes de memória cache interna. • Características de máquinas RISC. • 80486DX: versão com o co-processador numérico 80387. • 80486SX: versão sem o co-processador numérico.

♦ 1992 - Pentium

• Versão melhorada do 80486, com via de dados externa de 64 bits, trabalhando internamente com 2 processadores.

• Cache interno de 16Kbytes (8 para dados e 8 para instruções).

♦ 1995 - Pentium Pro

• Versão do Pentium com cache de nível 2 embutido na pastilha do microprocessador.

21

A Família Motorola

♦ 1974 - 6800

• Primeiro microprocessador da Motorola de 8 bits.

♦ 1978 - 6809

• Evolução do 6800 com registradores adicionais, novas instruções de manipulação de dados de 16 bits e mais modos de endereçamento.

♦ 1975 - 6502

• Microprocessador popular da Motorola, utilizado nas máquinas Apple, compatível com o 6800.

♦ 1979 - 68000

• Microprocessador de 16/32 bits possuindo vias de dados internas de 32 bits e externas de 16 bits, registradores de 32 bits. Nem todas as instruções trabalham com 32 bits.

• Não é compatível com os anteriores (projeto novo). • Utilizado no microcomputadores Macintosh. • Deu origem a família 680x0.

♦ 1980 - 68008

• Versão do 68000 com via de dados externa de 8 bits e vias de endereços de 20 bits (1Mbytes de endereçamento), que não foi muito utilizado.

♦ 1983 - 60010

• Evolução do 68000 com controle de memória virtual. • 16Mbytes de endereçamento.

22

♦ 1983 - 60012

• Versão do 60010 com 2 Gbytes de endereçamento.

♦ 1984 - 68020

• Microprocessador de 32 bits, com memória cache interna de 256 bytes. Todas as instruções trabalham com 32 bits.

• Utilizado pelas estações de trabalho Sun, Apollo e HP.

♦ 1987 - 68030

• Versão melhorada do 68020 e com uma unidade de gerenciamento de memória dentro da pastilha.

• Equivalente ao 80386.

♦ 1990 - 68040

• Versão com co-processador numérico 68881. • Memória cache interna de 4Kbytes para dados e

instruções independentes. • Equivalente ao 80486.

♦ 1994 - 68060

• Apresenta um projeto super-escalar, com múltiplas unidades de execução.

23

A Família Zilog

♦ A Zilog foi fundada em 1974, como uma dissidência da Intel, e projetou o famoso microprocessador Z80.

♦ 1974 - Z80

• Processador de 40 pinos, sendo uma versão melhorada do 8080, de 8 bits.

♦ 1979 - Z8000

• Microprocessador de 16 bits capaz de endereçar até 8Mbytes de memória.

• Possui memória cache para dados e instruções de 256 bytes e unidade de gerenciamento de memória.