Cheat sheet
Fórmulas, notação RV32 e condições dos modelos, para consulta breve.
Fórmulas e condições para consultar depois de resolver os exemplos das lições. Cada linha vale nas condições da lição ligada.
RV32
| Tema | Regra |
|---|---|
| Registos | x0 zero; x1 ra; x2 sp, repor e alinhar 16; t temporários; a argumentos e retorno; s preservados pelo chamado |
| Memória | Endereços em bytes. lw/sw 4 B; lb/lh estendem sinal; lbu/lhu zeros. vetor[i] de elementos de 4 bytes em base+4i. Little endian |
| Imediatos | I/S 12 bits com sinal. lui + addi baixo negativo compensam a alta |
| Saltos | jal/jalr guardam PC+4; jalr salta para (base+imm)&~1. Branch: PC próprio + deslocamento em bytes. blt/bge com sinal |
| Formatos | R funct7 rs2 rs1 funct3 rd opcode; I imm12 rs1 funct3 rd opcode; S parte o imediato; B/J reordenam, bit 0 implícito |
| FP | .s 32 bits, .d 64 bits. flw copia, fcvt converte. Simples em memória, cálculo duplo: flw, fcvt.d.s, fadd.d, avanço 4 B, divisor fcvt.d.w, retorno fcvt.s.d |
| Pilha | Pico soma os tamanhos dos frames ativos; com tamanhos iguais, ativos × tamanho. Caso base conta se reservar antes de testar |
Desempenho
é a fração de instruções da classe ; de Amdahl é a fração do tempo original que melhora. Ganho ; redução . MIPS e frequência isolados não comparam tarefas.
Cache
capacidade de dados em bytes, bytes por bloco, vias por conjunto, número de conjuntos, endereço em bytes.
| Caso | WT/no-allocate | WB/allocate |
|---|---|---|
| Read hit | Cache | Cache |
| Read miss | Carrega | Descarrega vítima dirty; carrega limpa |
| Write hit | Cache + seguinte | Cache, dirty |
| Write miss | Só seguinte | Descarrega dirty; instala e altera |
Acerto exige entrada válida com etiqueta igual à pedida. LRU atualiza em acertos, FIFO não. Escrita parcial lê restantes bytes; no modelo adotado, linha inteira dispensa. Vítima usa etiqueta antiga. Dirty não é inválido.
tempo de acerto; taxa de faltas; penalidade em ciclos. / faltas e penalidade de instruções; / de dados. acerto em L1; faltas locais de L1; acerto em L2; faltas locais de L2; penalidade da RAM.
Penalidades adicionais após a falta, sem sobreposição e fora do custo base. é a fração de instruções com acesso a dados; unificada usa . L2 local divide pelos que chegam a L2. Inversa unificada neste modelo (uma obtenção e no máximo um acesso a dados por instrução): , . Acertos vezes faltas: .
Hierarquia · Políticas · Inversão
Pipeline e saltos
IF, ID, EX, MEM, WB. Período = maior atraso de fase (+ registo). Para fases e instruções sem paragens, no modelo da lição:
| Situação | Custo |
|---|---|
| ALU→ALU | Atalho, sem paragem |
| Load→ALU | 1 bolha com forwarding; 2 sem (WB-primeiro/ID-depois), no modelo de 5 fases |
| Store | Base em EX, dado em MEM; segue o caminho disponível |
| Erro MEM | 3 ciclos; erro ID, 1 + paragens de operandos |
| Branch | ; |
Histerese: 01+T→11, 10+N→00. Saturante: 01+T→10, 10+N→01. Ambas preveem N em 00/01, T em 10/11. Segue a máquina fornecida; prevê antes de atualizar.
Percurso · Pipeline · Predição
ILP e Tomasulo
RAW transporta valor; WAR/WAW saem com renomeação. Memória depende de endereços. Nesta via dupla (uma ALU e uma memória), duas operações de memória não emitem juntas. Unidade com duração e intervalo : . .
Tomasulo no modelo da lição, por instrução:
- Emite: lê as origens (valor se Qi=0, etiqueta se Qi≠0) e só depois renomeia o destino com a etiqueta da estação. Cada estação guarda uma instrução.
- Executa: começa quando Qj=Qk=0, no ciclo seguinte à emissão ou à receção do último operando.
- Difunde: o CDB entrega um par etiqueta/valor por ciclo, com prioridade à instrução mais antiga. O registo aceita o valor se o seu Qi ainda for essa etiqueta.
Confirmar em ordem exige reorder buffer.
SIMD empacotado
RV32, B0/H0 vias baixas. ADD/SUB por via, sem carry. Comparação verdadeira = via toda a 1; escolhe signed/unsigned. Deslocamentos lógicos introduzem zeros; aritméticos à direita replicam o sinal de cada via. Posições: 3 bits para 8, 4 para 16.
| Par | H1 recebe | H0 recebe |
|---|---|---|
| PKBB16 | a.H0 | b.H0 |
| PKTT16 | a.H1 | b.H1 |
| PKBT16 | a.H0 | b.H1 |
| PKTB16 | a.H1 | b.H0 |
- SMUL16: H0xH0 no registo baixo do par, H1xH1 no alto. SMULX16 cruza H0xH1 e H1xH0.
- KMDA soma os dois produtos e satura: com a=b=
0x80008000, cada produto vale e a soma satura em0x7FFFFFFF. - Replicar byte: mascara antes de shifts. Contadores de 8 bits voltam a 0 após 256.
- não cabe em 16 bits com sinal; KABS16 satura em 32767 com overflow assinalado.
Energia, coerência, E/S
energia; potência; duração. temperatura da junção; ambiente; resistência térmica. potência de comutação, com atividade , capacidade , tensão e frequência ; exclui a estática. rapidez com núcleos; fração serial do tempo original.
- Com fixa, ; só com vale .
- Tempo de partições segue . Redução: caminho crítico, não rondas.
Write-invalidate invalida a linha inteira. Falsa partilha gera tráfego, sem alterar resultados. Coerência não ordena posições diferentes nem torna incrementos atómicos.
- Polling: consulta de ciclos a cada ciclos; fração do CPU .
- Interrupções: compara ciclos/s do polling com das interrupções ( consultas, custo, fração com dados).
- DMA: taxa em bytes/s, bytes por bloco, ciclos de preparação e conclusão por transferência, frequência do CPU; fração do CPU e bloco mínimo .
- Em DMA não coerente, a saída exige clean das linhas dirty relevantes; a entrada invalida cópias antigas e impede que dirty velhas voltem a escrever por cima.
- Mensagem sem sobreposição: tempo , com custo de preparação e conclusão e taxa.
HDD: fila + procura + rotação ( s média) + transferência + controlador. MB , KiB 1024. Taxa máxima = mínimo dos limites. Dois buffers: , com tempo de disco e tempo de cálculo por bloco.
Multicore · Coerência · E/S · Armazenamento