Cheat sheet
Fórmulas, condições e erros frequentes para rever representação, circuitos e RV32.
Cada linha resume uma regra com a condição junto do método e aponta para a explicação completa.
Sistemas digitais
- Bit é 0 ou 1 lógico; níveis elétricos com margens definem o que conta como 0 ou 1. CMOS usa NMOS para ligar à massa e PMOS para ligar à alimentação.
- NAND CMOS tem NMOS em série e PMOS em paralelo. A saída só desce a 0 quando A e B valem 1, porque só aí o caminho para a massa conduz e nenhum PMOS conduz.
- NOR CMOS inverte a topologia. Segue primeiro os caminhos completos até à alimentação e à massa para descobrir a função.
Inteiros e overflow
- Valor posicional: . Fração binária finita só quando o denominador reduzido é potência de 2. Hex usa 4 bits por algarismo, octal usa 3.
- Intervalos com bits: sem sinal ; C2 ; sinal e magnitude com dois zeros.
- C2 tem MSB com peso negativo. Negar é inverter e somar 1. Alargar repete o sinal. não tem simétrico.
- A soma guarda os bits inferiores. Sem sinal, carry final 1 indica overflow. Em C2, usa , com o carry que sai do bit de sinal e o carry que entra nele.
- Overflow C2 na adição : operandos com o mesmo sinal e resultado com sinal diferente. Na subtração : operandos com sinais diferentes e resultado com sinal diferente do sinal de .
Vírgula fixa e flutuante
- Qm.n usa bits com sinal e fracionários, , passo . Produto: calcula com intermédio largo e divide por . Divisão: calcula , com divisor , numerador alargado e arredondamento definido.
- IEEE 754 binary32 tem 1 sinal, 8 expoente e 23 fração, bias 127. e lêem-se sem sinal, é a largura da fração e é o expoente todo a 1, 255 em binary32.
- Normal : . Subnormal : . dá zero. dá infinito se e NaN se .
- Em binary32, o menor normal positivo é , o menor subnormal positivo é e o maior finito é . Nos normais binary32 em , o passo é ; nos subnormais o passo é fixo em .
- Multiplicação: XOR dos sinais, soma dos expoentes reais, produto dos significandos, depois normaliza e arredonda no fim.
- Bfloat16 usa a disposição 1/8/7 da tabela. Não se deve inferir que qualquer operação de bfloat16 segue as mesmas regras de um ambiente IEEE 754 completo.
Texto e imagens
- ASCII tem 128 códigos;
Aé 65 e os dígitos0a9são 48 a 57. UTF-8 usa 1 a 4 bytes; conta bytes, pontos de código e símbolos separadamente. - Raster guarda pixéis; vetor guarda formas. Tamanho raster: largura vezes altura vezes bits por píxel, a dividir por 8. Paleta soma cores vezes bytes por cor.
Álgebra de Boole e Shannon
- AND escreve-se , OR escreve-se , NOT escreve-se . Precedência: NOT, AND, OR. XOR vale 1 com entradas diferentes.
- Absorção: e . De Morgan: e .
- SOP canónica soma os mintermos das linhas 1; POS canónica multiplica os maxtermos das linhas 0.
- Expansão de Shannon por : , onde os cofatores fixam em 0 e em 1. Esta forma escolhe entre os dois cofatores conforme ; um multiplexador selecionado por implementa esta seleção.
Karnaugh
- Ordem Gray
00,01,11,10; grupos de células com adjacência por fronteiras. SOP agrupa 1, POS agrupa 0; X é opcional em cada grupo. - Confirma cada fator do produto de somas: substituir um zero coberto tem de anular o fator.
Circuitos combinatórios
- MUX 2:1: . MUX de entradas usa bits de seleção. Descodificador de bits ativa uma de saídas.
- Igualdade compara bit a bit. Ordem sem sinal segue do MSB para o LSB; com sinal distingue os sinais primeiro.
- Full adder: e . Ripple liga carries do LSB para o MSB.
- Somador e subtrator com controlo : aplica a cada bit e usa . Com calcula ; com calcula . Só inverter sem pôr não subtrai.
- Atraso soma módulos em série em cada percurso e fica com o máximo entre percursos.
Circuitos sequenciais
- Latch segue o nível; flip-flop guarda no flanco. Todos os registos síncronos lêem o estado antigo no mesmo flanco.
- Flip-flop D guarda . Flip-flop T conserva com e troca com , com ; é o estado atual e o próximo estado. Para projetar com T, usa .
- Registo com enable carrega D se e conserva se : bit a bit. Reset síncrono só atua no flanco; reset assíncrono atua de imediato. Com prioridade ao reset: reset ativo dá 0, senão enable ativo carrega D, senão conserva. Confirma polaridade e prioridade no símbolo.
- Contador soma 1 por ciclo com regra de paragem explícita. Para módulo 6, os estados válidos são 0 a 5; com estado antigo 5 e enable ativo, o próximo é 0. Define o destino dos códigos não usados para o contador não ficar preso.
- Setup usa o caminho mais lento, hold usa o caminho mais rápido. Aumentar o período não corrige hold.
Máquinas de estados
- Moore: saída depende do estado. Mealy: saída depende do estado e da entrada. O próximo estado é comum às duas leituras.
- Binária usa flip-flops; one-hot usa flip-flops. Define reset e trata estados inválidos; a recuperação one-hot só vale com essa definição.
- Soma em memória de 64 words: contador i de 6 bits percorre 0 a 63; em Soma, e ; done é 1 só em Concluído. Para módulos de 32 bits, usa acumulador sem sinal de 38 bits, pois .
- Resto módulo 3: com reset em R0 e saída 1 em R0. Em
110, o percurso R0, R1, R0, R0 mostra o resto depois de cada bit.
Memórias
- SRAM guarda em circuito estável alimentado; DRAM guarda em carga com refresh; ambas são voláteis. ROM tem conteúdo fixo; Flash apaga por blocos.
- Chip tem linhas de endereço e de dados, com bits. Largura em paralelo aumenta ; profundidade usa seleção.
- Descodificação parcial cria aliases, não capacidade. Z é alta impedância, não valor guardado.
- Paridade deteta número ímpar de erros. SECDED corrige um e deteta dois no modelo do código.
Registos e endereçamento RV32
- RV32I tem 32 registos inteiros x0 a x31 de 32 bits; x0 vale sempre 0 e o PC é separado destes registos.
- No RARS,
ecallé convenção do simulador, não instrução da ISA RV32: a7 escolhe o serviço e a0 leva o valor. Serviço 1 imprime o inteiro em a0, 11 imprime o carácter em a0, 10 termina o programa. - Endereço é em bytes, little endian no RARS. Num vetor de words com base B, endereço do elemento 0, o elemento i fica em bytes; o apontador avança 4 bytes por elemento. Texto avança de 1 em 1.
Instruções e codificação
lw rd,d(rs1)lê 4 bytes em e guarda o valor em .sw rs2,d(rs1)lê o valor em e escreve-o na memória em .lb/lhestendem o sinal;lbu/lhuestendem com zeros.- Instruções R escrevem o resultado da ALU em . Branch compara e segue o PC da instrução mais o deslocamento em bytes.
jalguarda PC+4;jalrlimpa o bit 0 do destino. - Formato B reconstrói
imm[12],imm[11],imm[10:5],imm[4:1],0.luimaisaddicompensa metade baixa negativa. - Pseudo-instruções são conveniências do assembler. Conta as instruções máquina reais produzidas pela expansão, que pode ter vários elementos.
li,laecallpodem emitir mais de uma instrução.
Programação RV32
- Condições traduzem comparação e salto com o teste da condição inversa para o else. No ciclo de soma do vetor: à entrada de cada iteração, t2 é a soma dos elementos já lidos, t0 aponta para o próximo e t1 conta os que faltam.
- Máscaras: testar o bit k com
x & (1<<k); limpar com AND do complementar; pôr a 1 com OR; trocar com XOR. - Conversão decimal: acumulador , passo com . Para 32 bits sem sinal com , rejeita antes de alterar se ou se e , com comparações sem sinal; testar depois de
muleaddnão basta porque guardam só 32 bits. - Soma de 64 bits em duas words: com carry se em comparação sem sinal; a igualdade não indica carry. Depois .
Procedimentos e pilha
- a0 a a7, t0 a t6 e ra são caller-saved; s0 a s11 e sp são callee-saved. O chamado repõe o valor de que recebeu.
- Se o chamador precisa de t0 depois da chamada, guarda-o na sua pilha, recalcula-o depois ou move-o para um já preservado no seu próprio frame. A terceira só vale com esse preservado, pois ele tem de voltar intacto ao seu próprio chamador.
- Non-leaf preserva ra antes do
jalinterior. Reserva antes de escrever; sp alinhado a 16; mesmo tamanho em todos os retornos.
Datapath uniciclo
lw x5,12(x8)calcula na ALU, lê a memória e escreve o conteúdo em através do MUX MemtoReg.swusa o mesmo endereço mas escreve o valor da segunda leitura do banco. R escreve o resultado da ALU em .beqsó muda o PC.- . X em MemtoReg, em sw e beq, significa que o MUX de writeback é ignorado porque RegWrite é 0 e impede a escrita no banco. ALUSrc e MemWrite continuam a importar num sw: ALUSrc é 1 para escolher o imediato e MemWrite é 1 para autorizar a escrita.
- Falha MemtoReg preso em 0 escreve o endereço no lugar do conteúdo; só se vê quando endereço e conteúdo diferem. Falha PCSrc preso em 0 só falha branches tomados.
CPU multiciclo
- Recursos partilhados guardam resultados em IR, MDR, A, B e ALUOut. Totais com fetch (estado 0) e decode (estado 1) incluídos:
lwusa 5 ciclos (0, 1, 2, 3, 4),swusa 4 (0, 1, 2, 5), R usa 4 (0, 1, 6, 7) ebequsa 3 (0, 1, 8). - IorD escolhe PC ou ALUOut; ALUSrcA escolhe PC ou A; ALUSrcB escolhe B, 4 ou imediato. PC escreve-se quando vale 1.
- Alvo arquitetural é PC da instrução mais . Neste modelo o fetch já avançou 4, por isso o decode soma . Outra organização guarda o PC da instrução; a compensação é deste modelo, não da ISA.
- Conta execuções reais, incluindo expansões de pseudo-instruções e excluindo instruções saltadas.
Desempenho
- : é o tempo de CPU, o número de instruções máquina executadas, os ciclos por instrução e a frequência. com fração do número de instruções. Speedup .
- Amdahl com fração do tempo original melhorada vezes, com e : . Limite para ; dá 1 e dá .