PCS-2529
Introdução aos Processadores
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 sequê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 as quais 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”
1. INTRODUÇÃO
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.
1. INTRODUÇÃO
Como tornar a linguagem de máquina (L0) mais simples de ser utilizada ?
Projetar um novo conjunto de instruções, formando uma linguagem L1, mais
fácil de programar.
1aAlternativa: Tradução
Método que consiste na substituição de cada instrução do programa escrito na linguagem L1 por uma sequência de instruções equivalente na linguagem L0.
O computador executa o programa em L0.
2aAlternativa: Interpretação
Método em que um programa escrito na linguagem L0 recebe os
programas escritos em L1, e cada instrução em L1 é executada por uma sequência equivalente em L0.
O computador executa o programa em L0.
Comparação entre Tradução e Interpretação: Similares.
Ambas executam sequências equivalentes em L0 de cada instrução em L1.
1. INTRODUÇÃO
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.
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”.
1. INTRODUÇÃO
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 3 Máquina Virtual M3, com linguagem de máquina L3 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 M0, ou são traduzidos para L1 ou L0.
Nível 1
Máquina Virtual M1, com linguagem de
máquina L1
Os programas em L1, ou são interpretados por interpretadores em execução em M0, ou são traduzidos para L0.
Nível 0
Computador Real M0, com linguagem de
Os programas em L0 podem ser executados diretamente pelos circuitos eletrônicos.
1.1. Considerações Sobre Máquinas Virtuais
Se uma máquina de linguagem L1 pudesse ser construída a um custo baixo, a
máquina de linguagem L0 não existiria.
As linguagens L0 e L1 não devem ser muito diferentes, para facilitar o
processo de 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 C++ ou Java 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
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) ou execução direta
Nível 1 Nível de microprogramação
Os microprogramas são executados diretamente pelo hardware
1.2. Máquinas Multinível Contemporâneas
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, OR, XOR, NOT, 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
1.2. Máquinas Multinível Contemporâneas
Nível 3 - Nível de Sistema Operacional É um nível híbrido.
Uma parte das instruções deste nível é idêntica às instruções do nível
2, que são interpretadas pelos microprogramas.
Outra parte é interpretada pelo sistema operacional. Nível 4 - Nível de Linguagem de Montagem (“Assembly”)
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 (“assembler”). Nível 5 - Nível de Linguagem de Alto Nível
Exemplos: C, C++, Java, Perl, Python e PHP.
Compilador: traduz os programas em linguagem de alto nível para os níveis 3
1.2. Máquinas Multinível Contemporâneas
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
1.3. Evolução das Máquinas Multinível
1940’s:
2 níveis: lógica digital (Nível 0) e máquina convencional (Nível 2). Difícil de entender e de construir.
Não confiáveis. 1951:
3 níveis: lógica digital (Nível 0), microprogramação (Nível 1) e máquina
convencional (Nível 2).
Interpretador embutido e imutável.
Simplificação do hardware: passa a ter que executar microprogramas. Maior confiabilidade (menos válvulas).
1950’s:
1.3. Evolução das Máquinas Multinível
1960’s:
Surgimento do nível de sistema operacional. Sistemas batchs (em lote).
Sistemas time-sharing (tempo compartilhado). 1970’s:
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: “É o 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”: brinquedos, instrumentos, BIOS. Hardware e Software são logicamente equivalentes!
Uma determinada operação pode ser implementada diretamente por
hardware ou simulada por software.
ADD - soma de dois operandos.
1.4. Hardware, Software e Máquinas Multinível
Atualmente, muitas das operações antigamente programadas no nível de
máquina convencional (Nível 2) 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).
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.
1.4. Hardware, Software e Máquinas Multinível
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.
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).
1.5. Evolução dos Computadores
1834 - Máquina analítica - Charles Babbage
Foi a primeira tentativa de se construir um computador digital. Possuía 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.
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.
1.5. Evolução dos Computadores
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 kW. 20 registradores de 10 dígitos decimais. Programação: 6.000 chaves e soquetes. 1949 - EDSAC - Wikes
Primeiro computador de programa armazenado. 1951 - Whirlwind I - M.I.T.
1.5. Evolução dos Computadores
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
EntradaUnidade
Unidade
Lógica e
de
Aritmética
SaídaControle
1.5. Evolução dos Computadores
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.
1.5. Evolução dos Computadores
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. 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
1.5. Evolução dos Computadores
A Terceira Geração - Circuitos Integrados (1965-1980)
1964... - 360 - IBM
Primeira linha de produtos projetados como uma família (continuação). Toda a família com a mesma linguagem de montagem.
Multiprogramação: vários programas simultaneamente na memória.
Endereçamento de 224 (16 Mbytes). Sucessores: 370, 4300, 3080, 3090.
Linha baseadas em circuitos integrados. 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 5121.5. Evolução dos Computadores
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: 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
Primeiro supercomputador.
CPU(*) Memória Terminal Console E/S de fita de papel Outras E/S Omnibus
1.5. Evolução dos Computadores
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.
Diminuem-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, na época, dos computadores:
(*) MIPs: Milhões de Instruções por Segundo.
Fronteira entre essas categorias de computadores é dinâmica e muda
rapidamente. “O mainframe de hoje é o microcomputador de amanhã”.
Tipo MIPs(*) típicos (relativo) Mbytes tí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.
1.5. Evolução dos Computadores
A Quinta Geração - Computadores de Baixa Potência e Invisíveis
1989: primeiro tablet
1993: PDA (Personal Digital Assistants) 1990’s: Smartphone
Quinta Geração: mudança de paradigma, não de arquitetura! Computação Ubíqua, Computação Pervasiva
Tipo
Preço (US$)
Exemplo de aplicação
Computador descartável 0,5 Cartões de natal/aniversário
Microcontrolador 5 Relógios, carros, eletrodomésticos Computador móvel e de jogos 50 Videogames domésticos e smartphones Computador pessoal 500 Computador (desktop ou notebook) Servidor 5K Servidor de rede
1.5. Evolução dos Computadores
1.5. Evolução dos Computadores
1.5. Evolução dos Computadores
A Família Intel
1971 - 4004
Primeiro microprocessador (CPU em uma única pastilha).
O objetivo era servir de base para a construção de calculadoras. 4 bits, 45 instruções, 4 Kbytes de endereçamento.
1972 - 8008
Processador de 8 bits construído para controlar terminais. 8 bits, 48 instruções, 16 Kbytes de endereçamento.
1973 - 8080
Características: 64 Kbytes 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ápida.
1.5. Evolução dos Computadores
1978 - 8086
Características: 16 bits, 1 Mbytes de endereçamento. Utilizado para a construção de microcomputadores. Deu origem a família 80x86.
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
1.5. Evolução dos Computadores
1983 - 80286
Versão do 8086 com 16 Mbytes de endereçamento.
1 Gbytes 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 multitarefa.
4 Gbytes de endereçamento.
64 Tbytes de espaço de endereçamento de memória virtual. 80386DX: via de dados externa de 32 bits.
80386SX: via de dados externa de 16 bits. Permitiu a migração do hardware
1.5. Evolução dos Computadores
1989 - 80486
Versão melhorada do 80386.
8 Kbytes 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 16 Kbytes (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
1.5. Evolução dos Computadores
1.5. Evolução dos Computadores
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, e registradores de 32 bits. Nem todas as instruções trabalham com 32 bits.
Não é compatível com os anteriores (projeto novo). Utilizado nos microcomputadores Macintosh.
1.5. Evolução dos Computadores
1980 - 68008
Versão do 68000 com via de dados externa de 8 bits e vias de endereços de 20
bits (1 Mbytes de endereçamento), que não foi muito utilizado.
1983 - 60010
Evolução do 68000 com controle de memória virtual. 16 Mbytes de endereçamento.
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.
1.5. Evolução dos Computadores
1990 - 68040
Versão com co-processador numérico 68881.
Memória cache interna de 4 Kbytes, para dados e instruções, independentes. Equivalente ao 80486.
1994 - 68060
1.5. Evolução dos Computadores
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é 8 Mbytes de memória. Possui memória cache para dados e instruções de 256 bytes e unidade de
1.5. Evolução dos Computadores
A Arquitetura ARM
Surgiu nas décadas de 1980 e 1990.
Exemplo de aplicação: tablet Samsung Galaxy Tab.
Sucesso nos mercados de dispositivos de baixa potência, móveis e embutidos. Até 2011, vendeu cerca de 15 bilhões de dispositivos.