Buscar

Cap 4 Software Basico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Software Básico 
Micro-arquitetura 
 
Tanembaum, capítulo 4 
Ciclo de execução de instruções 
•  Busca instrução da memória para o IR 
•  Atualiza o contador de programa (PC) 
•  Determina o tipo da instrução 
•  Se a instrução usa a memória: 
°  determina a posição do dado 
°  busca o dado da memória 
•  Executa a instrução 
•  Reinicia o ciclo para a próxima instrução 
Data path 
MAR 
MDR 
PC 
IR 
A 
B 
C 
ULA 
Elementos de 
acesso à memória 
Incrementar 
ULA 
Adicionar 
ULA 
Data path: executando A=B+C 
MAR 
MDR 
PC 
IR 
A 
B 
C 
ULA 
IR 
Instrução já está 
decodificada 
Pronto para buscar e 
executar a próxima 
instrução 
Busca prox. 
instrução 
PC 
Recebe 
instrução 
IR 
PC 
Salvar PC 
atualizado 
PC 
IR 
Decodificando 
Instrução 
PC é colocado no 
barramento da ALU 
para ser incrementado 
PC 
Salvar resultado da 
soma no registrador A 
A Registradores 
B e C são lidos 
para os dois 
barramentos 
da ULA 
B 
C 
Passos da execução 
•  Endereço da próxima instrução é colocado 
no barramento 
•  Memória fornece a próxima instrução 
(A = B + C) 
•  Instrução é decodificada 
•  PC é incrementado e guardado de novo 
•  Registradores são habilitados 
•  ULA é programada para executar operação 
•  Resultado é armazenado no destino 
Sinais de controle 
•  Sinais elétricos precisam ser gerados para: 
°  Ativar saída dos registradores para um 
determinado barramento 
°  Controlar a operação da ULA 
°  Habilitar a entrada dos registradores para que 
dados possam ser armazenados 
°  Controlar a interpretação da instrução 
Geração dos sinais de controle 
•  Pode ser feita de duas formas: 
°  Microprograma 
•  Palavras em uma memória ROM indicam 
os sinais a serem ativados a cada passo 
•  Controle apenas lê memória em uma 
sequência definida pelo microprograma 
°  Sequenciador 
•  Circuito temporizado ativa sinais em ordem 
•  Implementa máquina de estados finitos 
•  Sequência de flip-flops e outros circuitos 
Compromissos velocidade x custo 
•  Soluções simples usualmente são lentas 
•  Formas de acelerar a execução 
°  Reduzir o # de ciclos para cada instrução 
°  Melhorar o hardware para que ciclos sejam 
mais curtos (p.ex.: ripple carry x select carry) 
°  Sobrepor os passos de execução de várias 
instruções 
Redução de ciclos por instrução 
•  Usar hardware especializado para 
acelerar operações comuns 
•  Módulo de incremento do PC 
°  Evita uma ativação do data path 
•  Unidade de busca de instruções 
°  PC não é acessado durante todo o 
processamento da instrução 
°  Busca da próxima instrução pode ser 
feita paralelamente à execução da 
instrução corrente (prefetching) 
Prefetching 
•  Ciclo de execução não precisa mais 
esperar pela memória 
•  Mas e se a instrução atual é um desvio? 
°  Descarta operação já buscada (Intel) 
•  Stall: interrupção da execução em paralelo 
•  Perde-se sempre um ciclo a cada desvio 
•  Exige hardware mais complexo 
°  Sempre executa instrução seguinte (SPARC) 
•  Delay slot: instrução seguinte ao desvio 
•  Caso não seja possível usá-lo: NOP 
Sobreposição de passos 
•  Princípio básico de uma pipeline 
•  Extensão da idéia de prefetching 
•  Elementos do data path são isolados para 
serem usados em paralelo por instruções 
diferentes 
•  Registradores de armazenamento 
temporário (latches) inseridos pelo circuito 
•  Como cada elemento é mais simples que 
o todo, eles podem ter ciclo menor 
Data path utilizando latches 
Busca de 
instruções 
Banco de 
registradores 
ULA T1 ULA T2 
ULA out 
ULA 
PC 
T 
M 
P 
Data path utilizando latches 
Busca de 
instruções 
Banco de 
registradores 
ULA T1 ULA T2 
ULA out 
ULA 
PC 
T 
M 
P 
Pipeline (exemplo) 
Busca 
instrução 
Decodifica 
instrução 
Agrupa 
operações 
Obtém 
operandos 
Executa 
tarefas 
Armazena 
resultados 
Acessa 
memória 
Problemas em pipelines 
•  Como calcular o próximo endereço se a 
instrução atual é um desvio condicional? 
•  Como processar uma instrução se outra 
na pipeline usa os mesmos registradores? 
•  Como continuar se um acesso à memória 
demora para ser atendido? 
•  Conflitos e dependências causam 
bloqueios em estágios da pipeline (stalls) 
Organização de pipelines: scoreboards 
•  “Quadros de reservas” 
•  Cada instrução iniciada marca quais 
módulos e registradores usará no futuro 
•  Novas instruções só podem ser 
executadas se os recursos não estiverem 
reservados 
•  Caso contrário novas instruções são 
interrompidas até que os recursos sejam 
liberados 
Técnicas para melhorar o desempenho 
•  Predição de desvios (branch prediction) 
•  Execução fora de ordem 
•  Re-assinalamento de registradores 
•  Execução especulativa 
•  Utilização de vários níveis de cache 
Predição de desvios (branch prediction) 
•  Desvios incondicionais podem causar 
stalls de um ciclo 
°  Delay slots podem ser utilizados para aproveitar 
o ciclo com uma instrução 
•  Desvios condicionais causam stalls maiores 
•  Ao identificar um desvio condicional CPUs 
tentam “adivinhar” se ele será executado 
Predição de desvios (branch prediction) 
•  Previsão estática: 
°  desvios para trás são tomados (loops) 
°  desvios para a frente, não (exceções em ifs) 
•  Previsão dinâmica: 
°  hardware “lembra” o resultado de saltos no 
passado - última vez ou várias execuções 
•  Suporte do compilador/programador: 
°  versões especiais dos desvios com “dica” de 
qual o resultado esperado para os mesmos 
Execução fora de ordem 
•  Instruções podem ter diferentes tempos 
•  Conflitos no quadro de reservas podem 
não se aplicar a outras instruções na fila 
•  Arquiteturas super-escalares tem vários 
caminhos, então instruções não 
relacionadas deveriam poder seguir 
•  Problemas: 
°  determinação do ponto exato de interrupções 
°  solução de conflitos falsos por registradores 
Re-assinalamento de registradores 
write-after-read (WAR) 
1: A = 7 
2: C = A 
3: A = 3 
write-after-write (WAW) 
1: A = B - C 
2: JNZ xxx 
3: A = 3 
•  Em ambos os casos, A=3 fora de ordem 
poderia afetar as instruções anteriores 
•  Mas se a linha 3 fosse re-escrita “X = 3” 
e da mesma forma referências 
posteriores a A, não haveria problemas 
Re-assinalamento de registradores 
•  Processadores modernos possuem 
bancos de registradores reserva 
•  Conflitos são resolvidos usando-se 
re-assinalamento de registradores 
•  Registradores do banco são alocados 
para solucionar conflitos 
•  Acessos posteriores são mapeados 
para os novos registradores 
Execução especulativa 
•  Execução fora de ordem e renomeamento 
levados ao limite 
•  Instruções condicionais são iniciadas 
cedo sem que haja certeza de seu uso 
•  Se o desvio for tomado, ganha-se tempo 
•  Se o desvio não for tomado, pode ser 
necessário desfazer operações 
•  Como tratar “if y≠0 then x=1/y”? 
°  Interrupções exigem tratamento especial 
Cache: características de programas usuais 
•  Localidade temporal 
°  Endereços de memória usados recentemente 
tendem a ser utilizados novamente em breve 
•  Localidade espacial 
°  Posições de memória próximas a uma 
posição acessada tendem a ser acessadas 
em um futuro próximo 
Memória cache 
•  Memória pequena, rápida, próxima à CPU 
•  Tabela organizada em linhas (blocos com 
vários bytes, usualmente entre 4 e 64) 
•  Um acesso à memória leva toda a linha 
onde aquela posição está para a cache 
•  Cache hit: acesso a posições de memória 
que já estão em linhas da cache•  Cache miss: acesso a posições que não 
estão na cache 
Impacto da cache 
•  Exemplo: 
°  Cache hit: 
•  90% dos acessos servidos direto da cache 
°  Acessos encontrados na cache levam 5 ns 
°  Cache misses exigem outros 50 ns 
°  Tempo médio de acesso: 
•  Tm = 0,9 x 5 + 0,1 x 55 
•  Tm = 10 ns 
Cache: organização 
•  Tabela acessada por endereços 
•  Endereços divididos em três partes: 
°  Tag: guardada na cache para diferenciar linhas 
°  Linha: identifica entrada da tabela para o endereço 
°  Byte/palavra: identifica o byte dentro da linha 
•  Endereços com mesmo valor de linha 
compartilham mesmas posições da cache 
Tag Linha Byte/palavra 
Organização de cache em linhas 
•  Mapeamento direto 
°  Todas as linhas de mesmo valor compartilham 
uma única entrada da tabela 
•  Set associative 
°  Linhas de mesmo valor compartilham um 
conjunto de entradas comuns 
•  Associatividade completa 
°  Não há endereço de linha: qualquer endereço 
pode ocupar qualquer posição da tabela 
Cache: questões a serem respondidas 
•  Se uma nova linha tem que ser carregada, 
que linha é retirada? 
°  Mapeamento direto: não há opção 
°  Outros: políticas de substituição 
•  LRU: remove a linha usada há mais tempo 
•  Como processar uma escrita na cache? 
°  write back/write through 
•  Como processar um miss na escrita? 
°  carrega linha (write allocate)/não carrega 
Pentium II 
•  Instruções CISC são transformadas em 
sequências de operações RISC pela 
unidade de busca e decodificação 
•  Pipeline profunda: 12 estágios 
•  Predição de desvios sofisticada 
•  40 registradores de “rascunho” 
Pentium II 
•  Execução fora de ordem 
°  Até três micro-operações geradas por ciclo 
°  Até cinco micro-operações disparadas por ciclo 
•  Controle de dependências e conflitos 
complexo 
•  Instruções são confirmadas em ordem 
•  Execução especulativa com rollback 
Microarquitetura do Pentium II 
Unidade de interface com barramentos 
Cache 
nível 2 
Barramento local 
para a ponte PCI 
Cache de dados 
nível 1 
Cache de instruções 
nível 1 
Unidade de 
busca e 
decodificação 
(7 estágios) 
Unidade de 
disparo e 
execução 
Unidade de 
retirada 
(retire unit) 
pool de micro-instruções 
ReOrder Buffer (ROB) 
Unidade de disparo e execução do Pentium II 
Estação de 
controle de 
reservas 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Porto 0 
Porto 1 
Porto 2 
Porto 3 
Porto 4 
ULA 
inteira 
ULA 
ponto flutuante 
Unidade 
MMX 
ULA 
inteira 
ULA 
ponto flutuante 
Unidade 
MMX 
Unidade 
de leitura 
Unidade 
de escrita 
Unidade 
de escrita 
Loads 
Stores 
Stores 
ROB 
UltraSPARC II 
•  RISC tradicional com operações gráficas 
•  Super-escalar de 4 caminhos 
•  Instruções agrupadas por conflitos 
•  Carga especulativa de operandos 
•  Predição de desvios sofisticada e “dicas” 
•  Pipeline de 9 estágios 
•  Instruções executadas e completadas fora 
de ordem 
Microarquitetura do UltraSPARC II 
Unidade de interface de memória 
Unidade de cache externa 
Prefetch/disparo 
I-cache nível 1 
Cache nível 2 
D-cache nível 1 
Leitura/escrita 
Fila de 
leitura 
Fila de 
escrita 
Ponto flutuante 
Registradores PF 
Unidade gráfica 
ALU PF ALU PF 
Unidade inteira 
Registradores 
ALU ALU 
Lógica de agrupamento 
Memória principal 
Pipeline do UltraSPARC II 
Fetch Decode Group 
Execute 
Register 
Cache 
X1 
N1 
X2 X3 
N2 
N3 Write 
Pipeline para operações com inteiros 
Pipeline para ponto flutuante/gráficos 
Micro-arquiteturas: observações finais 
•  Em se tratando de micro-arquiteturas, 
cada caso é um caso 
•  Pequenas variações nas decisões de projeto 
podem levar a soluções bem diversas 
•  Compatibilidade com versões anteriores é 
normalmente um fator limitante 
•  Caches são imprescindíveis e bem variadas

Continue navegando