Resumo das aulas anteriores
Lu´ıs Nogueiraluis@dei.isep.ipp.pt
Departamento Engenharia Inform ´atica Instituto Superior de Engenharia do Porto
Instruction Set Architecture
• Hardware controlado através de instruções • Conjunto de instruções define arquitectura
◦ Interface entre hardware e software
◦ Exemplos: MIPS, SPARC, PA-RISC, ix86, Alpha • Balanço delicado
◦ No de instruções fornecidas ◦ Formato das instruções
◦ No de ciclos de relógio por instrução ◦ Velocidade do ciclo de relógio
• 2 tipos de abordagens
◦ Complex Instruction Set Computer (CISC) ◦ Reduced Instruction Set Computer (RISC)
MIPS
• Simplicidade e regularidade
• Todas as instruções possuem o mesmo tamanho (32 bits) • Possui 32 registos disponíveis
• Instruções aritméticas exigem sempre 3 registos • Só duas instruções acedem à memória (lw,sw)
• Todas as instruções são convertidas em 1 de 3 formatos ◦ Formato R, I ou J
◦ Mantendo posições dos campos dos registos
Desenho do processador
• ISA tem enorme impacto no desenho do processador • Regularidade e simplicidade do MIPS facilita desenho
• Que componentes vamos precisar?
◦ Memória de instruções para armazenar o programa ◦ Registos para armazenar valores
◦ ALU para operação artiméticas/lógicas ◦ Incrementador para avançar PC
◦ Memória de dados para armazenar estruturas de dados
Desenho do processador
• Como executar uma instrução?
◦ Obter instrução de 32 bits apontada por PC
◦ Ler 1 ou 2 registos, usando campos das instruções
sempre nas mesmas posições
◦ Próximos passos dependem da instrução em causa
◦ Mas em MIPS são muito semelhantes!
• Todas usam a ALU depois de lerem registos ◦ Aritméticas e lógicas por razões óbvias
◦ Acesso à memória para calcular endereço (base +
deslocamento)
◦ Salto condicional para comparar valores dos registos
Desenho do processador
• Depois de usar a ALU diferem um pouco
◦ lw lê conteúdo da memória no endereço calculado e
escreve no registo destino
◦ sw escreve valor do registo no endereço calculado
◦ Aritméticas precisam escrever resultado no registo
destino
◦ Salto condicional precisa determinar se salta ou não • Nesse caso temos de conseguir
◦ Decidir quais os componentes a usar
◦ Controlar o funcionamento desses componentes
• Como?
◦ Usando sinais de controlo que dependem do tipo de
instrução
Sinais de controlo
• Controlar funcionamento dos componentes
◦ ALU pode realizar uma de várias instruções ◦ Instrução pode ler ou escrever na memória ◦ Instrução pode escrever no registo
• Seleccionar input (em conjunto com multiplexador)
◦ PC pode avançar para a próxima instrução ou saltar ◦ Registos actualizados nas operações
aritméticas/lógicas ou lw
◦ ALU recebe endereço ou registo como 2o argumento ◦ Registo destino diferente nos formatos R e I
Arquitectura do processador
PAT05F17.eps Read register 1 Read register 2 Write register Write data Write data Registers ALU Add Zero Read data 1 Read data 2 Sign extend 16 32 Instruction [31–0] ALU result Add ALU result M u x M u x M u x Address Data memory Read data Shift left 2 4 Read address Instruction memory PC 1 0 0 1 0 1 M u x 0 1 ALU control Instruction [5–0] Instruction [25–21] Instruction [31–26] Instruction [15–11] Instruction [20–16] Instruction [15–0] RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Control Resumo – p. 8Melhorar performance com pipelining
• Objectivo
◦ Melhorar performance global sem diminuir tempo de
execução da instrução
• Como conseguir?
◦ Dividir execução da instrução em fases ◦ Ciclo de relógio menor
• Tempo de execução de uma fase em vez de instrução
completa
◦ Todas as instruções demoram mesmo número de ciclos ◦ Sobrepor processamento de várias instruções em fases
distintas
Divis ˜ao da instruc¸ ˜ao em fases
• Instruction Fetch instrução é transferida da memória • Instruction Decode tipo e operandos são determinados • Execute operação executada/endereço calculado
• Memory Access acesso a memória em lw/sw • Write Back resultado escrito em registo
200 400 600 800 1000
Time
add $s0, $t0, $t1 IF ID EX MEM WB
PAT06F04.eps
Sobreposic¸ ˜ao de execuc¸ ˜ao
Program execution order (in instructions) lw $1, 100($0) lw $2, 200($0) lw $3, 300($0)Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC7
IM Reg ALU DM Reg
IM Reg ALU DM Reg
IM Reg ALU DM Reg
PAT06F10.eps
Ciclo ´
unico vs Pipelining
Program execution order (in instructions) lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) Time 200 400 600 800 1000 1200 1400 1600 1800 Instructionfetch Reg ALU
Data
access Reg
Instruction
fetch Reg ALU
Data access Reg Instruction fetch 800 ps 800 ps 800 ps Program execution order (in instructions) lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) Time 200 400 600 800 1000 1200 1400 Instruction
fetch Reg ALU
Data access Reg PAT06F03.eps Instruction fetch Instruction fetch
Reg ALU Data
access Reg
Reg ALU Data
access Reg
200 ps
200 ps
200 ps 200 ps 200 ps 200 ps 200 ps
Implementac¸ ˜ao de pipelining
• No mesmo ciclo de relógio
◦ Instruções em fases distintas ◦ Partilham fluxo de informação
• Necessário armazenar informação intermédia • Adicionar registos entre estágios do pipeline
◦ IF/ID informação da instrução que passa de IF para ID ◦ ID/EX informação da instrução que passa de ID para EX ◦ EX/MEM informação da instrução que passa de EX para
MEM
◦ MEM/WB informação da instrução que passa de MEM
para WB
Arquitectura do processador com pipelining
WB M EX WB M WB M e m W ri te PCSrc M e m to R e g MemRead Add Address Instruction memory Read register 1 Read register 2 Instruction [15–0] Instruction [20–16] Instruction [15–11] Write register Write data Read data 1 Read data 2 Registers Address Write data Read data Data memory Add Add result ALU ALU result Zero Shift left 2 Sign extend PC 4 ID/EX IF/ID EX/MEM MEM/WB PAT06F27.eps 16 32 6 ALU control RegDst ALUOp ALUSrc R e g W In s tr u c ti o n ri te Branch Control 0 M u x 1 0 M u x 1 0 M u x 1 0 M u x 1 Resumo – p. 14Problemas em pipelining
• Objectivo manter pipeline cheio (IPC = 1) • No entanto
◦ Dependências de dados entre instruções sequenciais ◦ Acesso à memória tem latência elevada (lw,sw)
◦ Instruções de salto alteram fluxo de execução
• Próxima instrução não pode executar no próximo ciclo de
relógio
• Como optimizar funcionamento do pipeline? ◦ Melhorando compilador
◦ Adicionando hardware ao pipeline
Depend ˆencias entre instruc¸ ˜oes
Program execution order (in instructions) sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 PAT06F28.eps IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg 10 10 10 10 10/–20 –20 –20 –20 –20 Value of register $2: Resumo – p. 16
Forwarding - Propagac¸ ˜ao de valores
Program execution order (in instructions) sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 PAT06F29.eps IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg 10 10 10 10 10/–20 –20 –20 –20 –20 Value of register $2: Value of EX/MEM: X X X –20 X X X X X Value of MEM/WB: X X X X –20 X X X X Resumo – p. 17
Lat ˆencia no acesso `a mem ´
oria
Program execution order (in instructions) lw $2, 20($1) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 PAT06F34.eps IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg Resumo – p. 18
Lat ˆencia no acesso `a mem ´
oria
• Soluções
◦ Compilador
• Reordena instruções
• Instrução seguinte a lw não depende desta
◦ Hardware
• Detectar dependência em run time • Inserir estados de espera no pipeline
Estados de espera
lw $2, 20($1) Program execution order (in instructions) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 Reg IM Reg Reg IM DM CC 1 CC 2 CC 3 CC 4 CC 5 CC 6Time (in clock cycles)
IM Reg DM Reg IM IM DM Reg IM DM Reg CC 7 CC 8 CC 9 CC 10 DM Reg Reg Reg Reg bubble Resumo – p. 20
Instruc¸ ˜oes de salto
Reg Program execution order (in instructions) 40 beq $1, $3, 28 44 and $12, $2, $5 48 or $13, $6, $2 52 add $14, $2, $2 72 lw $4, 50($7) Time (in clock cycles)CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 PAT06F37.eps IM Reg DM Reg IM Reg DM Reg IM DM Reg IM Reg DM Reg IM Reg DM Reg Resumo – p. 21
Instruc¸ ˜oes de salto - Soluc¸ ˜oes
• Assumir que salto não é efectuado ◦ Execução sequencial
◦ Se salto for efectuado descartar instruções em IF, ID, EX • Reduzir latência da decisão de salto
◦ Antecipar decisão para ID
◦ Exige alterações do hardware • Branch delay slot
◦ Compilador reordena instruções
◦ Coloca instruções que não dependem do salto até ser
conhecida decisão
Instruc¸ ˜oes de salto - Soluc¸ ˜oes
• Branch predication
◦ Eliminar saltos condicionais com lógica de predicados • Previsão dinâmica de saltos
◦ Prever resultado do salto baseado na sua história • Execução especulativa
◦ Executar instruções sequencialmente com base na
previsão do salto
◦ Exige detecção do resultado da previsão
◦ Método para descartar efeitos de instruções que não
deviam ter sido executadas (má previsão)
Como melhorar a performance?
• Equação de performance
tempo CPU = número de instruções IPC * frequência relógio
• Alternativas
◦ Diminuir número de instruções do programa ◦ Aumentar frequência de relógio
◦ Aumentar número de instruções executadas por ciclo • Explorando paralelismo ao nível das instruções
Superpipelining
• Pipeline mais profunda e maior frequência interna dos
estágios
• Exige maior velocidade da memória • Aumentam problemas originados por
◦ Dependências entre instruções ◦ Latência no acesso à memória ◦ Instruções de salto
• Técnica limitada pela velocidade dos circuitos
◦ Necessidade de armazenar valores intermédios nos
registos do pipeline
• Muito usado em unidades funcionais especializadas
Arquitecturas multiple-issue
• Replicar componentes funcionais
• Executar instruções em paralelo no mesmo ciclo de relógio • Recorrem à execução especulativa
• Exige bom previsor de saltos
◦ Má previsão → perda de performance
• Duas abordagens para a distribuição das instruções ◦ Static multiple-issue
• Compilador
◦ Dynamic multiple-issue
• Hardware
Dynamic multiple-issue
• Instruction Fetch and Issue Unit
◦ Obtém, descodifica e distribui instruções
◦ Processadores CISC actuais descodificam instruções
complexas em conjunto de instruções simples
• Várias unidades funcionais
◦ Operandos armazenados em reservation station ◦ Execução fora de ordem
• Assim que todos os operandos são conhecidos ◦ Forwarding para unidades que esperam valores ◦ Envio de resultados para commit unit
Dynamic multiple-issue
• Commit Unit
◦ Register renaming cria registos temporários ◦ Re-order buffer preserva semântica original do
programa
◦ Instrução de salto foi bem prevista • Validação (commit) dos resultados
• Registos temporários → registos do CPU ◦ Instrução de salto mal prevista
• Resultados descartados
Dynamic multiple-issue
PAT06F49.eps Instruction fetch
and decode unit
Reservation station Reservation station Reservation station Reservation station
Integer Integer Floating point Load/ Store Commit unit In-order issue Out-of-order execute Functional units In-order commit ... ... Resumo – p. 29
Static multiple-issue
• Transferir para o compilador ◦ Análise de dependências
◦ Distribuição das instruções pela unidades funcionais • Pacotes de n instruções directamente enviado para as
unidades funcionais
◦ Very Large Instruction Word (VLIW) ◦ Sem dependências entre instruções ◦ Pacote pode ter slots vazios
• Reduz substancialmente a complexidade do hardware • Exige compilador poderoso
◦ Transmeta adiciona camada de software no Crusoe
Very Large Instruction Word
• Exemplo de pacote com 8 instruções ◦ 2 ftp + 2 int + 2 lw/sw + 1 salto
• Pacote sem dependências executado em paralelo
Fraco paralelismo dos progamas
• Exploração do paralelismo através de execução
super-escalar é limitada
◦ Maioria dos programas não possuem paralelismo
suficiente
• Distribuição dinâmica e optimização do compilador em
conjunto
◦ Em média apenas 2 instruções por ciclo em programas
“normais”
• Resultado
◦ Unidades funcionais sub-aproveitadas
◦ Performance máxima do CPU não é atingida
Symmetric Multiprocessing (SMP)
• Executar cada processo/thread num CPU diferente ◦ Foco: processadores multi-core
• Escalonamento do S.O. divide processos pelos CPUs
◦ Maior tempo de execução disponível para os processos ◦ Menor tempo de espera pelo time slice
• Continuam a existir recursos comuns
◦ Acessos resolvidos por exclusão mútua
• SMP não optimiza forma como os programas usam o
hardware de cada CPU
• Multiplica tempo de execução para os processos
◦ Assim como o desperdício de hardware por ciclo de
relógio!
Symmetric Multiprocessing (SMP)
Simultaneous Multithreading (SMT)
• Explorar paralelismo dentro dos processos ◦ Maximizar utilização do CPU
• Apenas um CPU físico
◦ Fornece dois ou mais processadores lógicos ao S.O. • Exige duplicação apenas dos componentes que
armazenam contexto dos processos
◦ Pequena parte do hardware do CPU
◦ Unidades funcionais partilhadas pelas threads
• Processador executa várias threads simultaneamente ◦ Idealmente resultando na maximização da utilização
das unidades funcionais
◦ Aumentando IPC → aumenta performance
Simultaneous Multithreading (SMT)
Arquitecturas Vectoriais
• Executar instrução sobre conjunto de dados ◦ Explora paralelismo ao nível dos dados • Registos e unidades vectoriais especializadas
◦ Vectores mantidos em registos especiais no CPU ◦ Instruções aplicadas sobre registos vectoriais
• Aumenta a performance
◦ Aplicações onde paralelismo de dados é fácil de obter
• SIMD usado em ISAs especializadas
◦ MMX/SSE, 3DNow!, AltiVec
Single Instruction Multiple Data (SIMD)
SISD vs SIMD
Hierarquia de mem ´
oria
• Problema
◦ Velocidade do CPU muito superior à da memória
• Consequência
◦ Acessos à memória provocam perda de performance
• Usar memória com mesma velocidade do CPU
◦ Técnica e economicamente impraticável
◦ Custo por bit de hardware rápido é muito elevado
◦ Memórias rápidas possuem pequena capacidade
• Como disponibilizar grande capacidade a elevada
velocidade?
Hierarquia de mem ´
oria
PAT07F01.eps Speed Fastest Slowest Smallest BiggestSize Cost ($/bit)
Current Technology Highest Lowest SRAM DRAM Magnetic Disk CPU Memory Memory Memory Resumo – p. 40
Hierarquia de mem ´
oria - Onde colocar um bloco?
• Nas caches existem 3 esquemas
◦ Direct-mapped ◦ Fully associative
◦ n-way Set associative
• Vantagem em aumentar grau de associatividade
◦ Diminui miss rate, diminuindo colisões entre blocos • Desvantagens em aumentar grau de associatividade
◦ Maior custo e tempo de pesquisa
• Colocação de páginas em memória é fully associative ◦ Elevada penalização no acesso ao disco
Hierarquia de mem ´
oria - Como pesquisar um bloco?
• Em direct-mapped um bloco só pode estar numa entrada • N-way Set associative e Fully associative
◦ Bloco pode estar numa de n entradas
◦ Para pesquisa ser eficiente tem de ser feita em paralelo ◦ Maior custo do hardware
• Elevada latência do disco exige fully associative em
memória
◦ S.O. pode usar algoritmos de pesquisa mais eficientes • Memória virtual usa tabela de páginas
◦ Exige acesso extra à memória ◦ Para ser eficiente exige TLB
Hierarquia de mem ´
oria - Qual o bloco a substituir?
• Duas técnicas principais em caches associativas • Aleatoriamente
◦ Bloco seleccionado aleatoriamente entre os possíveis
candidatos
• Least Recently Used (LRU)
◦ Bloco substituído é o que não é usado há mais tempo • Na prática LRU é muito custoso com grande
associatividade
◦ Opta-se por LRU aproximado
• Memória virtual usa sempre LRU aproximado ◦ Reference bit
Hierarquia de mem ´
oria - Como lidar com escritas?
• Duas técnicas principais • Write-through
◦ Bloco escrito na cache e na memória
◦ Cache misses nunca requerem escrita em memória
• Write-back
◦ Bloco apenas escrito na cache numa primeira fase ◦ Só é escrito em memória quando tiver que ser
substituído
◦ Múltiplas escritas na cache → uma escrita em memória ◦ Cache misses podem exigir escrita em memória
• Memória virtual usa sempre write-back ◦ Elevada latência do disco
Computac¸ ˜ao paralela
• Criar computadores poderosos ligando vários CPUs
◦ Custos de desenvolvimento de novos processadores ◦ Limites da tecnologia de semicondutores
• Diminuir tempo de execução dos programas ◦ Aumentar throughput
• Tratar problemas mais complexos
◦ Genética, farmacologia, física, . . . • Sistemas robustos e tolerantes a falhas
Quest ˜oes
• Como partilhar dados pelos processadores? ◦ Memória partilhada
◦ Passagem de mensagens
• Como coordenar os diversos processadores? ◦ Sincronização (semáforos)
◦ Primitivas send/receive ◦ Protocolos do S.O.
• Como ligar os diversos processadores? ◦ Bus único
◦ Rede de interconexão
Symmetric Multiprocessors (SMPs)
• Espaço de endereçamento físico global
◦ Fisicamente partilhado através de um bus único ◦ Latência no acesso à memória independente do
processador
• Processadores comunicam através de variáveis partilhadas
em memória
◦ Sincronização através de semáforos ◦ Modelo de programação atractivo
• Cada processador utiliza uma cache individual ◦ Diminuir tráfego no bus partilhado
◦ Mantém cópia de dados partilhados em memória
Symmetric Multiprocessors (SMPs)
Cache Processor Cache Processor Cache Processor Single bus Memory I/O Resumo – p. 48Problema de coer ˆencia das caches
Tempo Evento Cache CPU A Cache CPU B Memória
0 1
1 CPU A lê X 1 1
2 CPU B lê X 1 1 1
3 CPU A escreve 0 em X 0 1 0 • Réplicas nas caches privadas têm de ser coerentes • Necessário garantir
◦ Escritas em memória são visíveis a todos os
processadores (write propagation)
◦ Ordem das escritas é a mesma para todos os
processadores (write serialization)
Snooping
• Controlador da cache monitoriza transacções que passam
no bus
• Todas as transacções são visíveis a todos os controladores • Todos os controladores veêm transacções pela mesma
ordem
• Controladores actuam sobre blocos locais quando
necessário
◦ Write-update ◦ Write-invalidade
• Etiquetas dos blocos em cache são duplicadas
◦ Evitar interferências quando CPU acede à cache ◦ Controlador acede a etiquetas duplicadas
Snooping
Cache tag and data Processor Single bus Memory I/O Snooptag Cache tagand data
Processor
Snoop
tag Cache tagand data
Processor
Snoop tag
Processadores ligados por rede de interconecc¸ ˜ao
• Cada processador possui memória e caches privadas • Processadores ligados por rede de interconecção
◦ Especializada e com diversas topologias • Relativamente à memória
◦ Distribuída
• Memória fisicamente distribuída pelos processadores ◦ Virtualmente partilhada
• Memória fisicamente distribuída mas logicamente
partilhada
Processadores ligados por rede de interconecc¸ ˜ao
Network Cache Processor Cache Processor Cache ProcessorMemory Memory Memory
Arquitecturas de mem ´oria distribu´ıda
• Memória fisicamente distribuída
◦ Processador apenas endereça memória privada • Exige distribuição de tarefas
◦ Distribuir explicitamente dados pelos n processadores ◦ Agrupar resultados
• Comunicação entre processadores é explícita ◦ Enviar mensagem para partilhar dados
◦ Receber mensagem para aceitar dados enviados
Arquitecturas de mem ´
oria virtualmente partilhada
• Memória fisicamente distribuída mas logicamente
partilhada
◦ Camada de software simula espaço endereçamento
único
• Conceito semelhante a memória virtual em uniprocessador ◦ Tabela de páginas indica se página local ou remota
◦ Referências remotas são transformadas em mensagens • Performance muito dependente da localidade das
referências
◦ Miss penalty envolve mensagem pela rede
◦ Largura de banda gasta com transferência de páginas
Coer ˆencia das caches em mem ´oria distribu´ıda
• Espaço de endereçamento único coloca novamente o
problema
◦ Cópias do mesmo endereço em caches distintas • Snooping não resolve problema
◦ Não existe um bus partilhado onde são propagadas
todas as referências à memória
◦ Natureza distribuída do protocolo não é escalonável a
um grande no de processadores
◦ Exige comunicação com todas as caches num cache
miss
• Sem coerência das caches
◦ Apenas dados privados podem estar na cache
◦ Blocos partilhados são marcados como uncacheable
Protocolos de coer ˆencia baseados em direct ´
orios
• Directório central mantém informação dos blocos em cache ◦ Que caches que possuem cópias do bloco
◦ Estado do bloco
• Processador comunica alteração de bloco na cache ao
directório
◦ Directório invalida ou actualiza cópias ◦ Não é necessário broadcast!
• Transições entre estados geradas por mensagens explícitas ◦ Geradas por eventos em snooping
Distribuic¸ ˜ao de direct ´
orios
• Elevada escalabilidade com distribuição de directórios ◦ Cada directório monitoriza caches que referenciam
endereços físicos da porção de memória que controla
• Directórios distribuídos mantêm característica essencial ◦ Informação sobre um dado bloco está apenas num
único directório conhecido
◦ Bits mais significativos usados como etiqueta
Distribuic¸ ˜ao de direct ´
orios
Topologias das redes de interconecc¸ ˜ao
• Redes estáticas
◦ Ligações entre CPUs são fixas
◦ Mensagens seguem rotas bem definidas
• Redes dinâmicas
◦ Usar switches nas ligações entre CPUs
◦ Caminhos para as mensagens encontrados
dinâmicamente
• Características
◦ Largura de banda ◦ Latência
◦ Custo
◦ No máximo de hops entre CPUs ◦ Conectividade