Capítulo 12 - Othon Batista

Propaganda
William Stallings
Organização e Arquitetura de
Computadores
8a Edição
Capítulo 12
Função e Estrutura do
Processador
Estrutura da CPU
• A CPU deve:
—Buscar instruções
—Interpretar instruções
—Buscar dados
—Processar dados
—Escrever dados
CPU Com os Barramentos do Sistema
Estrutura Interna da CPU
Registradores
• A CPU deve ter algum espaço de trabalho
(armazenamento temporário)
• Eles são os registradores
• A quantidade e a função dos registradores
variam conforme os projetos de
processadores.
• Isso é uma das maiores decisões de
projeto.
• Esse é o nível mais alto na hierarquia de
memória.
Registradores Visíveis ao Usuário
•
•
•
•
Propósito geral
Dados
Endereços
Códigos de Condição
Registradores de Propósito Geral (1)
• Podem ter propósito geral verdadeiro
• Podem ser restritos
• Podem ser usados para dados ou
endereçamento
• Dados
—Acumulador
• Endereçamento
—Segmento
Registradores de Propósito Geral (2)
• Faça-os de propósito geral
—Aumente a flexibilidade e as opções do
programador
—Aumente o tamanho da instrução e a
complexidade
• Faça-os especializados
—Instruções menores (mais rápidas)
—Menos flexibilidade
Quantidade de Registradores de
Propósito Geral
• Entre 8 - 32
• Menos = mais referências de memória
• Aumentar a quantidade não diminue as
referências de memória e absorve o real
domínio do processador
• Veja também RISC
Tamanho de um Registrador de
Propósito Geral
• Grande o suficiente para armazenar um
endereço completo
• Grande o suficiente para armazenar uma
palavra completa
• Geralmente é possível combinar dois
registradores de dados. Em C:
—double int a;
—long int a;
Registradores de Código de Condição
• Conjuntos de bits individuais
—por exemplo: o resultado da última operação
foi zero
• Pode ser lido (implicitamente) pelos
programas
—por exemplo: desvie se zero
• Não pode ser modificado por programas
(geralmente)
Registradores de Controle e Status
•
•
•
•
Contador de Programa (PC)
Registrador de Instruções (IR)
Memory Address Register (MAR)
Memory Buffer Register (MBR)
• Revisão: Qual a função destes?
Palavra de Status de Programa
•
•
•
•
•
•
•
•
•
Um conjunto de bits.
Inclui códigos de condições.
Sinal do último resultado.
Zero
Vai um
Igual
Overflow
Interrupções habilitadas/desabilitadas
Supervisor
Modo de Supervisor
• Intel ring zero
• Modo Kernel
• Permite que instruções privilegiadas
sejam executadas
• Usado pelo Sistema operacional
• Não disponível aos programas de usuário
Outros Registradores
• Podem existir registradores apontando
para:
—Process control blocks (veja sistemas
operacionais)
—Vetores de interrupção (veja sistemas
operacionais)
• Os projetos da CPU e do Sistema
operacional estão intimante ligados
Exemplos de Organizações de
Registradores
Ciclo de Instrução
• Veja o capítulo 3!!!
Ciclo Indireto
• Pode necessitar de acesso à memória para
buscar operandos
• O endereçamento indireto necessita de
mais acessos à memória
• Isso pode ser pensado como um subciclo
adicional de instrução
Ciclo de Instrução com Indireção
Diagrama de Estados do Ciclo de
Instrução
Fluxo de Dados (Busca de Instrução)
• Depende do projeto da CPU
• Em geral eis o fluxo da busca:
—PC contém o endereço da próxima instrução
—O endereço é copiado para o MAR
—O endereço é colocado no barramento de
endereço
—A unidade de controle requisite uma leitura à
memória
—O resultado é colocado no barramento de
dados, copiado para o MBR, e então para o IR
—Enquanto isso o PC é incrementado
Fluxo de Dados (Busca de Dados)
• IR é examinado
• Se o endereçamento é indireto, um ciclo
indireto é realizado
—Os bits mais à direita do MBR são transferidos
para o MAR
—A unidade de controle requisite uma leitura à
memória
—O resultado (endereço do operando) é copiado
para o MBR
Fluxo de Dados (Diagrama de Busca)
Fluxo de Dados (Diagrama Indireto)
Fluxo de Dados (Execução)
• Pode tomar várias formas
• Depende da instrução sendo executada
• Pode incluir
—Escrita/leitura de memória
—Entrada/Saída
—Transferência entre registradores
—Operações da ULA
Fluxo de Dados (Interrupção)
• Simples
• Previsível
• O conteúdo atual do PC é salvo para
permitir voltar ao ponto em que estava
• O conteúdo do PC é copiado para o MBR
• Uma posição especial de memória (SP) é
carregado para o MAR
• O MBR é escrito na memória
• O PC é carregado com o endereço da
rotina de manipulação de interrupção
• A próxima instrução (primeira do
manipulador de interrupção) pode ser
recuperada
Fluxo de Dados (Diagrama de
Interrupção)
Busca Antecipada
• Busca acessando a memória principal
• A execução normalmente não acessa a
memória principal
• Pode buscar a próxima instrução durante
a execução da atual
• Isso é chamado de busca antecipada de
instrução
Desempenho Melhorado
• Mas não dobrado:
—a busca é normalmente mais curta que a
execução;
– pré-busca de mais que uma instrução?
—qualquer desvio faz com que as instruções
buscadas antecipadamente não sejam as
necessárias
• Adiciona mais estágios para melhorar o
desempenho
Pipeline de Dois Estágios
Pipeline
•
•
•
•
•
•
Busca instrução
Decodifica instrução
Calcula os operandos
Busca os operandos
Executa instruções
Escreve resultado
• Sobreponha estas operações
Diagrama de Tempo para Operação de
Pipeline de Instruções
O Efeito de um Desvio Condicional na
Operação de um Pipeline de Instrução
Pipeline de
Seis Estágios
Representação Alternativa de Pipeline
Fatores de
Velocidade em
Pipelinine
Problemas no Pipeline
• Pipeline, ou alguma porção do pipeline,
deve parar
• Também conhecido como a bolha do
pipeline
• Tipos de problemas
—Recursos
—Dados
—Controle
Problemas de Recurso
• Duas (ou mais) instruções no pipeline
precisam do mesmo recurso
• Execução serial é melhor que paralela para
parte do pipeline
• Também chamado de problema estrutural
• Por exemplo assuma um pipeline simples
de cinco estágios
—Cada estágio leva um ciclo do relógio
• O caso ideal é uma nova instrução entrar
no pipeline a cada ciclo do clock
Problemas de Recurso
• Assuma que a memória principal tem uma
porta única
• Assuma que buscas de instruções e
leituras e escritas de dados são realizadas
uma por vez
• Ignore a memória cache
• A leitura ou escrita de operando não pode
ser realizada em paralelo com a busca de
instrução
Exemplos de Problemas de Recursos
Problemas de Recurso
• O estágio de busca de instrução deve ficar
ocioso por um ciclo buscando I3
—Múltiplas instruções prontas para entrar
na fase de execução de instrução
• ULA única
• Uma solução: aumente os recursos
disponíveis
—Múltiplas portas de memória principal
—Múltiplas ULA
Problemas de Dados
• Conflito ao acessar uma localização de
operando
• Duas instruções a serem executadas em
sequência
• Ambas acessam um operando de
registrador ou memória
• Se ocorre em uma sequência estrita,
nenhum problema acontece
Problemas de Dados
• Se ocorre em um pipeline, o valor do
operando poderia ser atualizado de tal
forma que produz um resultado diferente
de uma execução estritamente sequencial
• Por exemplo, em Assembly x86:
—ADD EAX, EBX
—SUB ECX, EAX
/* EAX = EAX + EBX
/* ECX = ECX – EAX
Problemas de Dados
• A instrução ADD não atualiza EAX até o
final do estágio 5, no ciclo de clock 5
• A instrução SUB precisa do valor no início
do seu estágio 2, no ciclo de clock 4
• O pipeline deve aguardar por dois ciclos
de clock
• Sem hardware especial e algoritmos de
prevenção específicos, isso resulta em um
uso ineficiente do pipeline.
Exemplo de Problema de Dados
Tipos de Problemas de Dados
• Ler após escrever (RAW), dependência
verdadeira
—Uma instrução modifica um registrador ou uma
posição de memória
—A próxima instrução lê dados nesta posição
—Problema se a leitura ocorrer antes da escrita
Tipos de Problemas de Dados
• Escrever após ler (RAW), ou
antidependência
—Uma instrução lê um registrador ou posição de
memória
—A instrução após escreve na posição
—Problema se a escrita completa-se antes da
leitura
Tipos de Problemas de Dados
• Escrever após escrever (RAW), ou
dependência de saída
—Duas instruções escrevem na mesma posição
—Problema se a escrita toma lugar em ordem
contrária da sequência pretendida
• O exemplo anterior é o problema de RAW
• Veja também o capítulo 14
Problema de Controle
• Também conhecido como problema de
desvio
• O Pipeline toma decisão errada com
relação à previsão de desvio
• Traz instruções ao pipeline que devem ser
descartadas logo depois
• Meios de lidar com desvios
—Múltiplos fluxos
—Busca antecipada do alvo do destino
—Buffer de laço
—Previsão de desvio
—Desvio atrasado
Fluxos Múltiplos
• Ter dois pipelines
• Fazer busca antecipada de cada
possibilidade do desvio em um pipeline
separado
• Usar o pipeline apropriado
• Isso leva à contenção de barramento &
registro
• desvios múltiplos levam à necessidade de
mais pipelines
Busca Antecipada do Alvo do Desvio
• O alvo do desvio é buscado
antecipadamento, além da instrução após
o desvio.
• O alvo é mantido até que o desvio seja
executado
• Usado pelo IBM 360/91
Buffer de Laço
• Memória muito rápida
• Mantido pelo estágio de busca do pipeline
• Verifica o buffer antes de buscar na
memória
• Muito bom para laços ou desvios
pequenos
• Parece uma memória cache
• Usado no CRAY-1
Exemplo de Buffer de Laço
Previsão de Desvio – Abordagem Estática
• Previsão nunca tomada
—Assume que o desvio não ocorrerá
—Sempre busca a próxima instrução
—68020 & VAX 11/780
—VAX não fazia a busca antecipada após um
desvio se resultasse em falta de página
(projeto de sistema operacional X projeto de
CPU)
• Previsão sempre tomada
—Assume que o desvio ocorrerá
—Sempre busca a instrução alvo
Previsão de Desvio – Abordagem Estática
• Previsão por Código de Operação
—Algumas instruções têm maior probabilidade
de resultar em um desvio do que outras
—Pode-se conseguir 75% de successo
Previsão de Desvio – Abordagem Dinâmica
• Chave tomada/não tomada
—Baseada na história
—Boa para laços
—Refinada pelo histórico de desvio em dois
níveis ou baseado em correlação
• Baseado em correlação
—Em desvios de fechamento de laço, a história
é uma boa previsão
—Em estruturas mais complexas, a direção do
desvio está correlacionada com a dos desvios
relacionados
– Também usa a hisória de desvios recentes
Previsão de Desvio – Abordagem Dinâmica
• Desvio Adiado
—Não execute o desvio até que seja necessário
—Rearranje instruções
—Examinada no capítulo 13 - RISC
Fluxograma de Previsão de Desvio
Diagrama de Estados de Previsão de
Desvio
Lidando com
Desvios
Pipeline no Intel 80486
• Busca
— Instruções são obtidas da memória cache memória externa
— Elas são colocadas em um dos dois buffers de busca
antecipada de 16 bytes
— O buffer é preenchido assim que dados são consumidos pelo
primeiro estágio de decodificação de instrução
— As instruções podem ocupar de 1 a 11 bytes
— Em média há 5 instruções no buffer
— Este estágio é independente dos outros para manter o buffer
sempre cheio
Pipeline no Intel 80486
• Estágio de decodificação 1
— Toda informação de código de operação e modo de
endereçamento é decodificada neste estágio
— Esta informação está, no máximo, nos 3 primeiros bytes de
cada instrução
— Pode direcionar o estágio de decodificação 2 para pegar o
resto da instrução (dados imediatos e de deslocamento)
• Estágio de decodificação 2
— Expande os códigos de operação em sinais de controle
— Computa os modos de endereçamento mais complexos
• Execução
— Operações da ULA, acesso à memória cache, atualização de
registradores.
• Escrita
— Atualiza os registradores e flags de estado modificados no
processo de execução anterior
— Eventuais resultados são enviados à memória cache e a
interface de barramento escreve nos buffers
concomitantemente
Três Exemplos de Pipeline no 80486
a) Sem atraso de carga de dados no pipeline
b) Atraso de carga de apontador
c) Temporização de instrução de desvio
Registradores do Pentium II
a) Unidade de inteiros no modo 32 bits
Tipo
Quantidade
Comprimento (bits)
Propósito
Propósito Geral
8
32
Genéricos
Segmento
6
16
Seletores de segmento
EFLAGS
1
32
Bits de estado e controle
Ponteiro da instrução
1
32
Ponteiro da instrução
b) Unidade de ponto flutuante
Tipo
Quantidade
Comprimento (bits)
Propósito
Numérico
8
80
Números de ponto flutuante
Controle
1
16
Bits de controle
Estado
1
16
Bits de estado
Palavra de marcação
1
16
Especifica o conteúdo de
registradores numéricos
Ponteiro da instrução
1
48
Aponta para a instrução
interrompida pela exceção
Ponteiro de dados
1
48
Aponta para o operando
interrompido pela exceção
Registrador EFLAGS
Registradores de Controle
Mapeamento de Registrador do MMX
• MMX usa diversos tipos de dados de 64
bits
• Usa campos de endereços de registrador
de 3 bits
—8 registradores
• Nenhum registrador específico MMX
—Mapeamento para os registradores de 64 bits
de ordem baixa (mantissa)
—8 registradores MMX são formados
Mapeamento dos Registradores MMX
para Registradores de Ponto Flutuante
Etiqueta
de ponto flutuante
Registradores de ponto flutuante
Registradores MMX
Processamento de Interrupção do Pentium
• Interrupções
—Mascaráveis
—Não mascaráveis
• Exceções
—Detectadas pelo processador
—Programadas
• Tabela de vetor de interrupções
—Cada tipo de interrupção tem um número
—Índice para a tabela de vetor
—256 * 32 bit vetores de interrupção
• 5 classes de prioridade
Atributos ARM
• RISC
• Matriz moderada de registradores uniformes
— Mais que a maioria dos CISC, menos que muitos RISC
• Modelo carrega/armazena
— Operações realizadas em operandos apenas em
registradores
• Instrução uniforme de comprimento fixo
— Conjunto padrão de 32 bits e 16 bits Thumb
• Deslocamento ou rotação pode pré-processar
registradores fonte
— ULA separada e unidades de deslocamento
Atributos ARM
• Pequena quantidade de modos de
endereçamento
— Todos os endereços de carga/armazenamento dos
registradores e campos de instruções
— Nenhum endereçamento indireto ou indexado
envolvendo valores em memória
• Endereçamento de auto-incremento e autodecremento
— Melhora os laços
• Execução condicional de instruções minimiza os
desvios condicionais
— Redução no descarte de pipeline
Organização ARM Simplificada
Organização do Processador ARM
• Muitas variações dependendo da versão do ARM
• Dados trocados entre processador e memória
através do barramento de dados
• Item de dados (carrega/armazena) ou instrução
(busca)
• Instruções passam pelo decodificador antes da
execução
Organização do Processador ARM
• Pipeline e geração do sinal de contrle na unidade
de controle
• Dados vão para o arquivo de registrador
— Conjunto de registradores de 32 bit
— Byte & sinal de dados em complemento de dois de
metade de palavra estendidos
• Tipicamente dois registradores fonte e um de
resultado
• Rotação ou deslocamento antes da ULA
Modos do Processador ARM
• Usuário
• Privilegiado
—6 modos
– SO pode adequar uso de software básico
– Alguns registradores são dedicados para cada modo
privilegiado
– Mudanças de contexto mais rápidas
• Exceção
—5 dos modos privilegiados
—Entra em certas exceções
—Substitui alguns registradores por
registradores de usuário
– Evita corrupção
Modos Privilegiados
• Modo de sistema
— Não exceção
— Usa os mesmos resgistradores do modo de usuário
— Pode ser interrompido por...
• Modo supervisor
— SO
— Interrupção de software usada para invocar serviços do
sistema operacional
• Modo de Aborto
— Faltas de memória
Modos Privilegiados
• Modo indefinido
— Tenta instrução que não é suportada pelo coprocessador de
núcleo inteiro
• Modo de interrupção rápida
— Sinal de interrupção da fonte de interrupção rápida designada
— Interrupção rápida não pode ser interrompida
— Pode interromper uma interrupção normal
• Modo de interrupção
• Sinal de interrupção de qualquer outra fonte de interrupção
Modos
Modos Privilegiados
Modos de exceção
Tabela
de
Organiza
ção de
Registra
dores
ARM
Usuário
Sistema
Supervisor
Aborto
Indefinido
Interrupção
Int. Rápida
R0
R0
R0
R0
R0
R0
R0
R1
R1
R1
R1
R1
R1
R1
R2
R2
R2
R2
R2
R2
R2
R3
R3
R3
R3
R3
R3
R3
R4
R4
R4
R4
R4
R4
R4
R5
R5
R5
R5
R5
R5
R5
R6
R6
R6
R6
R6
R6
R6
R7
R7
R7
R7
R7
R7
R7
R8
R8
R8
R8
R8
R8
R8_fiq
R9
R9
R9
R9
R9
R9
R9_fiq
R10
R10
R10
R10
R10
R10
R10_fiq
R11
R11
R11
R11
R11
R11
R11_fiq
R12
R12
R12
R12
R12
R12
R12_fiq
R13 (SP)
R13 (SP)
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14 (LR)
R14 (LR)
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
R15 (PC)
R15 (PC)
R15 (PC)
R15 (PC)
R15 (PC)
R15 (PC)
R15 (PC)
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
SPSR_svc
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq
Organização de Registrador ARM
• 37 registradores x 32-bit
• 31 registradores de propósito-geral
—Alguns têm propósitos especiais
—I.e. PC
• Seis registradores de status de programa
• Registradores em bancos parcialmente
sobrepostos
—Modo do processador determina o banco
• 16 registradores numerados e um ou dois
registradores de status de programa
visíveis
Uso Geral de Registrador
• R13 normalmente apontador de pilha (SP)
—Cada modo de exceção tem seu R13
• R14 registrador de ligação (LR)
—Subrotina e endereço de retorno de modo de
exceção
• R15 contador de programas (PC)
CPSR
• CPSR registrador de statud de processo
—Modos de exceção têm SPSR dedicado
• 16 msb são flags de usuário
—Códigos de condição (N,Z,C,V)
—Q – overflow ou saturação em algumas
instruções SMID
—J – instruções Jazelle (8 bit)
—GEE[3:0] SMID usa [19:16] como flag de
maior que ou igual
CPSR
• 16 lsb flags de sistema para modos
privilegiados
—E – endian
—Desabilita interrupção
—T – Instrução normal ou Thumb
—Modo
ARM CPSR e SPSR
Processamento de Interrupção
(Exceção) ARM
•
•
•
•
Mais que uma exceção permitida
Sete tipos
Execução forçada dos vetores de exceção
Múltiplas exceções manipuladas em
ordem de prioridade
Processamento de Interrupção
(Exceção) ARM
• Processador para a execução após a
instrução atual
• O estado do processador é preservado no
SPSR para exceção
—O endereço da instrução que está para
executar é colocado no registrador de ligação
—O retorno ocorre pela movimentação de SPSR
to CPSR e R14 para o PC
Leitura Adicional
• Exemplos de processadores
• Capítulo 12 do livro de William Stallings
• Especificações e sites na web de
fabricantes
Download