Você está na página 1de 58

Processadores

Disciplina: Arquitetura de Computadores

Prof.ª Daniella Dias


danidias.jp@gmail.com
Organização de Computadores
Computador eletrônico digital
Processador
Memória
Dispositivos de entrada/saída
Interconexão entre as essas partes
(barramento)
Organização de um Computador
Organização de um Computador
Organização de um Computador
Processador
Cérebro do computador
Executa programas armazenados na memória
principal, buscando as instruções,
examinando-as, e executando-as em
seqüência
Barramento
Provê a interligação entre os componentes do
computador
Conjunto de fios paralelos para a transmissão
de dados, endereços e sinais de controle
Organização de um Computador
Barramento
Externo ao processador  conexão à memória e
dispositivos de entrada/saída
Interno ao processador
Composição do Processador
Unidade de controle  busca e decodifica as
instruções
ULA  realiza as instruções (aritméticas e lógicas)
Registradores  armazena resultados temporários e
algumas informações de controle. São de acesso
rápido por estarem dentro do processador.
Organização de um Computador
Registradores mais importantes
Contador de programas (PC – Program Counter) 
aponta para a próxima instrução
Registrador de instruções (IR – Instruction
Register)  armazena a instrução que está sendo
executada
Organização do Processador

Caminho de dados
Organização do Processador
Composição do caminho de dados
Registradores  1 a 32
ULA
Barramento
Instruções de um processador
Registrador-memória  permite que uma 
palavra de memória seja armazenada no
registrador, e vice-versa
Registrador-registrador  instrução que opera
sobre 2 registradores e coloca a saída em outro
registrador (ciclo de caminho de dados)
Organização do Processador
Ciclo de caminho de dados
Define, sob certos aspectos, o que a máquina
pode fazer
Conceito muito importante na maioria dos
processadores
A velocidade do ciclo do caminho de dados
determina, em última análise, a velocidade do
processador
Execução de Instruções
 Ciclo de busca-decodificação-execução
1. Busca próxima instrução na memória, a partir do
endereço armazenado no PC, e armazena no IR
2. Atualiza Contador de instrução PC para apontar
para a próxima instrução
3. Determina tipo de instrução armazenada no IR
4. Determina endereço dos dados na memória, se a
instrução requer dados adicionais
5. Trazer palavras (dados) da memória, caso a
instrução precise, e armazena-as em outros
registradores
6. Executa instrução
7. Retorna ao passo 1
Execução de Instruções
É possível escrever um programa que simule a
função de um processador
Esse programa não precisa ser executado por
um processador eletrônico
Um programa pode ser executado por outro
programa que busque, decodifique e execute
suas instruções
Esse programa é o interpretador
Execução de Instruções
Ao especificar uma linguagem de máquina
L0 deve-se decidir entre a construção de um
processador ou de um interpretador
Interpretador
Divide as instruções em um conjunto de
pequenos passos
Processador mais simples e mais barato
Os primeiros computadores possuíam
poucas instruções que evoluíram com o
desenvolvimento de máquinas mais velozes
Execução de Instruções
IBM (final dos anos 50)
Criou a uma família de computadores com as
mesmas instruções  surgia a arquitetura de
computadores
Arquitetura única  múltiplas implementações
Arquitetura  descreve o nível de
compatibilidade entre as máquinas
Como construir um computador de baixo
custo que execute instruções complexas
presentes em máquinas mais caras?
Conceito de interpretação por microprogramação
Execução de Instruções
Vantagens da interpretação de instruções
Capacidade de corrigir no campo eventuais erros
na implementação das instruções
Oportunidade de incorporar nova instruções às
máquinas existentes
Projeto estruturado que permitia o
desenvolvimento, o teste e a documentação de
instruções complexas de modo muito eficiente
Execução de Instruções
Memória de controle
ROMs de alta velocidade
Armazenavam o interpretador
Reduzia o tempo de processamento
Microinstrução
São os passos necessários para a execução de
uma instrução pelo interpretador
Principais inovações
(desde Von Neuman)
Conceito de família - Arquitetura x Organização
(1968)
Unidade de controle microprogramada (1951)
Memória cache (1968)
Pipeline (paralelismo)
Múltiplos processadores (organizações e
objetivos diferentes)
Arquitetura de computadores com conjunto
reduzido de instruções (RISC)
RISC x CISC
Fim da década de 70
Projeto de instruções complexas, com
implementação simples a partir de interpretador
Busca pela redução da distância entre a
linguagem de máquina e as necessidades das
linguagens de programação de alto nível
Anos 80
Surgimento de processadores com um conjunto
reduzido de instruções e sem interpretação
RISC x CISC
RISC (Reduced Instruction Set Computer)
Processador com pequeno número de instruções
muito simples
Instruções capazes de serem executadas em um
único ciclo do caminho de dados
CISC (Complex Instruction Set Computer)
Tecnologia mais antiga e usada para famílias de
computadores compatíveis a nível de software.
Número maior de instruções
Uso extensivo de interpretação (principalmente
para modelos mais baratos) Por quê??
RISC x CISC
Argumento RISC
Mesmo que uma máquina RISC precisasse de 4
ou 5 instruções para fazer o que uma máquina
CISC faria com apenas 1 instrução, se a instrução
RISC fosse 10 vezes mais rápida (só hardware) a
máquina RISC venceria
RISC x CISC
Por que a RISC não suplantou a CISC?
Problemas de compatibilidade com máquinas
antigas com software já desenvolvido.
Aparecimento de soluções híbridas: Por exemplo,
a INTEL usa RISC para instruções de uso mais
frequente (Núcleo RISC) e interpretação para
instruções mais complexas e de uso menos
frequente.
Princípios de Projeto RISC para
Computadores Modernos
Todas as instruções são diretamente executadas
por hardware
Maximizar a taxa na qual as instruções são
executadas
As instruções precisam ser facilmente
decodificadas
Somente as instruções de Load (leitura) e Store
(escrever) devem referenciar a memória
Projetar uma máquina com muitos registradores
RISC x CISC
Paralelismo
Melhora do desempenho
Processadores mais rápidos (por exemplo,
aumento da velocidade do clock) existem um
limite tecnológico
Paralelismo
Paralelismo
Execução de duas ou mais operações ao mesmo
tempo
Aumenta o desempenho mantendo o mesmo clock
Paralelismo
Tipos de paralelismo
Nível de instruções  um único processador deve
executar mais instruções por segundo
Nível do processador  vários processadores
trabalhando juntos para a solução do mesmo
problema
Paralelismo no Nível de
Instruções
Execução em Pipeline
O maior gargalo para a velocidade de execução de
instruções é o acesso à memória
Solução  busca antecipada de instruções na
memória
Utilização de um buffer de pré-busca  conjunto de
registradores que armazenam as instruções
antecipadas
Pré-busca  divide a execução das instruções em
busca e execução efetiva
Pipeline  Divisão da execução da instrução em
várias partes, com um hardware dedicada a cada
uma delas
Paralelismo no Nível de
Instruções

(a) Pipeline de 5 estágios.


(b) Estado dos estágios em função do tempo
Paralelismo no Nível de
Instruções
Execução em Pipeline
Ciclo dessa máquina  2ns
Duração de uma instrução (5 estágios)  10ns
Instruções por segundo  aparentemente
100MIPS, mas como temos uma nova instrução a
cada 2ns temos na verdade 500MIPS
MIPS  Milhões de Instruções por Segundo
Paralelismo no Nível de
Instruções
Arquiteturas Superescalares
Se um pipeline é bom, dois é ainda melhor
Um única unidade de busca de instrução busca
pares de instruções e põe cada uma em um
pipeline (execução em paralelo)
Não pode haver conflitos pela utilização de
recursos
O resultado de uma das instruções não pode
depender da outra
Esse tratamento pode ser feito pelo compilador ou
por um hardware extra.
Paralelismo no Nível de
Instruções

Pipeline duplo de 5 estágios


Paralelismo no Nível de
Instruções
 Intel começou a utilizar pipelines a partir do 486
 Pentium original utilizava pipeline duplo de 5 estágios
semelhante ao apresentado
 Conjunto de regras simples determinavam se duas
instruções eram compatíveis e podiam ser executadas
em paralelo
 Pares de instruções não compatíveis eram “retidas” para
execução em paralelo com a próxima instrução
 Construção de compiladores específicos para o Pentium
 Programas compilados com esse compilador executavam
2 vezes mais rápido
– E as camadas de abstração?!
Paralelismo no Nível de
Instruções
Muitos pipelines implicam em um aumento
considerável do hardware
Estágio de execução requer um tempo maior →
todos os estágios precisam ter a mesma duração
(LIMITAÇÃO)
Instruções diferentes possuem tempo de execução
diferentes
Solução → processadores superescalares:
– único pipeline com diversas unidades funcionais
(estágio 4 do pipeline - E4)
– Essas unidade funcionais executam em uma
velocidade menor que o processo de busca
Paralelismo no Nível de
Instruções

Processador superescalar com 5 unidades funcionais


Paralelismo no Nível de
Instruções
Arquiteturas Superescalares
Intel introduziu essa solução a partir das famílias
Intel Core
Definição de “superescalar” evoluiu →
processadores que emitem múltiplas instruções
(frequentemente, 4 ou 6) em um único ciclo de clock
Mesmo princípio
• várias unidades funcionais
• Tempo diferente de execução para instruções
• Maior capacidade de fornecer instruções (E3) do
que executá-las (E4)
Superescalar X Superpipeline

Superescalar
– Evolução do pipeline
– Execução de instruções independentemente e
concorrentemente em pipelines diferentes
– Permite que as instruções sejam executadas em
uma ordem diferente do programa (melhor
aproveitamento das unidades funcionais)
Superpipeline
– Explora o fato de que muitos estágios executam
suas tarefas em menos da metade de um ciclo de
clock
Superescalar X
Superpipeline
Paralelismo em nível de
instruções
Limitações
– Dependência de dados
– Dependência procedural
– Conflito de recursos
– Dependência de saída
Paralelismo no nível de instrução aumenta o
desempenho na ordem de 5 a 10 vezes
Para se ter um aumento de desempenho da
ordem de 50, 100 ou mais, é necessário
recorrer a computadores com mais de um
processador
Taxonomia de Flynn
Single Instruction, Single Data stream (SISD)
Single Instruction, Multiple Data streams (SIMD)
Multiple Instruction, Single Data stream (MISD)
Multiple Instruction, Multiple Data streams (MIMD)
Taxonomia de Flynn
Single Instruction, Single Data stream (SISD)
– único fluxo de instruções → único fluxo de
dados.
– Processador único, única sequência de
instruções, única memória.
– Característico da máquina de Von Neuman
(computadores pessoais)
– Podem usar pipeline → única unidade de
controle (pode possuir mais de uma unidade
funcional)
Taxonomia de Flynn
Single Instruction, Multiple Data streams (SIMD)
– vários dados sob o comando de apenas uma
instrução.
– Múltiplos dados → organização de memória em
diversos módulos.
– A unidade de controle é única e existem diversas
unidades funcionais.
– Nesta classe estão os processadores vetoriais e
matriciais.
Taxonomia de Flynn
Multiple Instruction, Single Data stream (MISD)
– Múltiplas unidades de controle executando
instruções distintas sobre o mesmo dado.
– Não é implementada comercialmente
Taxonomia de Flynn
 Multiple Instruction, Multiple Data streams (MIMD)
– Processamento de múltiplos dados por múltiplas
instruções
– Várias unidades de controle comandam suas
unidades funcionais → vários módulos de memória
– Maioria das arquiteturas paralelas da atualidade.
– De acordo com o método de comunicação entre os
processadores, pode ser divida em:
• Memória compartilhada (fortemente acoplada) →
Multiprocessador simétrico (SMP) e Acesso não
uniforme à memória (NUMA)
• Memória distribuída (fracamente acoplada) → clusters
Taxonomia de Flynn
Taxonomia de Flynn
Projeto de Organizações
Paralelas
SMPs (Symmetric Multiprocessor),
NUMA (Nonuniform memory acess) e Clusters
Questões complexas que envolvem:
– Organização física
– Estruturas de interconexão
– Comunicação entre processadores
– Projeto de sistemas operacionais
– Técnicas de aplicações de software
Paralelismo no Nível do
Processador
Demanda por desempenho X Custo do hardware
Multiprocessadores Simétricos - SMP (Symmetric
Multiprocessor)
Refere-se a uma arquitetura de hardware e também
ao comportamento do SO que a reflete.
Características:
– Dois ou mais processadores semelhantes
– Mesma memória principal e recursos de E/S
– Interconectados por um barramento ou outro esquema
de conexão interna
– Controlados pelo SO que fornece interação entre
processadores e programas
Paralelismo no Nível do
Processador
Multiprocessadores
Vários processadores x memória única x
barramento único  conflitos entre os
processadores
Solução  memória local para cada processador,
que armazena o programa e os dados que não
precisam ser compartilhados
Com a redução do uso do barramento
compartilhado, diminui o tráfego e reduz as
possibilidades de conflito
Paralelismo no Nível do
Processador

(a) Multiprocessador com um único barramento e memória


única
(b)Multiprocessador com memórias locais aos processadores
Clusters
 Sistema com poucos multiprocessadores são fáceis de serem
construídos.
 Com aumento no número processadores:
– vários processadores independentes compartilhando a mesma
memória
– as atividades dos processadores devem ser coordenadas para
que um não interfira na atividade do outro
– gerenciar a memória que cada um usa para não haver conflitos
– Compartilham um barramento único (alta concorrência)
 Solução:
– Grande número de computadores completos interconectados,
sem memória compartilhada: multicomputadores (clusters)
– Alternativa aos SMPs para fornecer alto desempenho
Clusters
 Sistemas com um grande número de computadores
interconectados
 Não existe nenhum tipo de memória comum sendo
compartilhada
 Comunicação entre computadores é feita por meio de
troca de mensagens com alta velocidade
 Computador não precisa estar ligado diretamente com
todos os outros (uso de topologias em árvore, anéis,
etc..)
 Mensagens podem ser roteadas do computador fonte
para o destino (usando computadores intermediários)
Multiprocessador x
Multicomputador
Sistemas multiprocessadores
– Mais fáceis de programar
– Mais próximo do modelo original de processador
único (maioria das aplicações desenvolvidas)
– Menos espaço físico e consumo de energia
– Mais estáveis (mais antigos)
Sistemas multicomputadores
– Tendência para servidores de alto desempenho
– Superiores aos SMPs em escalabilidade e
disponibilidade
Computação Vetorial
 Necessidade por computadores para resolução de problemas
matemáticos intensivos.
 Supercomputadores capazes de efetuar bilhões de operações
em ponto flutuante por segundo.
 Diferem de mainframes que são projetados para
multiprogramação e E/S intensivo.
 Mesmos cálculos efetuados em diversos conjuntos de dados
ao mesmo tempo (SIMD)
 Duas soluções de paralelismo para solucionar os problemas
científicos
– Processador matricial
– Processador vetorial
Processador matricial
Composto por um grande número de processadores
idênticos
Cada processador executa a mesma sequência de
instruções em conjuntos de dados (carregados no
momento da inicialização) diferentes
Possui um única unidade de controle que envia
instruções em broadcast (difusão) para todos os
processadores
Processador matricial

Processador matricial do tipo ILLIAC IV


Processador no núcleo da GPU Fermi da Nvidia
Processador Vetorial
Muito parecido com o processador matricial
Operações aritméticas são realizadas em uma
única ULA operando em pipeline
Trabalha com registradores vetoriais 
Registradores convencionais que podem ser
carregados por meio da execução de uma única
instrução, que os carrega de modo serial
Matricial X Vetorial
Processador matricial x vetorial
programação para o matricial voltada ao paralelismo
(mais difícil)
processador matricial é, em geral, mais rápido
principalmente para repetição de um mesmo
processamento em vários "pedaços" dos dados
processador vetorial se adapta a processamentos
paralelos e não paralelos
hardware do matricial é mais caro (muitas ULAs)
Instruções MMX e SSE do Pentium 4 usam
processamento matricial para acelerar software de
multimídia.

Você também pode gostar