Cheat sheet

Fórmulas, notação RV32 e condições dos modelos, para consulta breve.

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

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

TemaRegra
Registosx0 zero; x1 ra; x2 sp, repor e alinhar 16; t temporários; a argumentos e retorno; s preservados pelo chamado
MemóriaEndereç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
ImediatosI/S 12 bits com sinal. lui + addi baixo negativo compensam a alta
Saltosjal/jalr guardam PC+4; jalr salta para (base+imm)&~1. Branch: PC próprio + deslocamento em bytes. blt/bge com sinal
FormatosR 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
PilhaPico soma os tamanhos dos frames ativos; com tamanhos iguais, ativos × tamanho. Caso base conta se reservar antes de testar

Assembly · Recursão

Desempenho

T=N CPI/f,CPI=∑ipiCPIi,S=TantesTdepois=1(1−p)+p/s.T=N\,CPI/f,\qquad CPI=\sum_i p_iCPI_i,\qquad S=\frac{T_{\rm antes}}{T_{\rm depois}}=\frac{1}{(1-p)+p/s}.

pip_i é a fração de instruções da classe ii; pp de Amdahl é a fração do tempo original que melhora. Ganho S−1S-1; redução 1−1/S1-1/S. MIPS e frequência isolados não comparam tarefas.

Desempenho · Amdahl

Cache

CC capacidade de dados em bytes, BB bytes por bloco, AA vias por conjunto, SS número de conjuntos, EE endereço em bytes.

S=C/(BA),bloco=E//B,ıˊndice=bloco mod S,tag=bloco//S.S=C/(BA),\qquad \text{bloco}=E//B,\quad \text{índice}=\text{bloco}\bmod S,\quad \text{tag}=\text{bloco}//S.
CasoWT/no-allocateWB/allocate
Read hitCacheCache
Read missCarregaDescarrega vítima dirty; carrega limpa
Write hitCache + seguinteCache, dirty
Write missSó seguinteDescarrega 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.

TMAM=th+mpTMAM=t_h+mp CPI=CPIb+mIpI+r mDpDCPI=CPI_b+m_Ip_I+r\,m_Dp_D TMAM=t1+m1(t2+m2,lpR)TMAM=t_1+m_1(t_2+m_{2,l}p_R)

tht_h tempo de acerto; mm taxa de faltas; pp penalidade em ciclos. mIm_I/pIp_I faltas e penalidade de instruções; mDm_D/pDp_D de dados. t1t_1 acerto em L1; m1m_1 faltas locais de L1; t2t_2 acerto em L2; m2,lm_{2,l} faltas locais de L2; pRp_R penalidade da RAM.

Penalidades adicionais após a falta, sem sobreposição e fora do custo base. rr é a fração de instruções com acesso a dados; unificada usa 1+r1+r. 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): r=CPIespera/(mp)−1r=CPI_{\rm espera}/(mp)-1, 0≤r≤10\le r\le1. Acertos kk vezes faltas: m=1/(k+1)m=1/(k+1).

Hierarquia · Políticas · Inversão

Pipeline e saltos

IF, ID, EX, MEM, WB. Período TT = maior atraso de fase (+ registo). Para kk fases e NN instruções sem paragens, no modelo da lição:

Tconj=(N+k−1)T;lateˆncia=kT.T_{\rm conj}=(N+k-1)T;\qquad \text{latência}=kT.
SituaçãoCusto
ALU→ALUAtalho, sem paragem
Load→ALU1 bolha com forwarding; 2 sem (WB-primeiro/ID-depois), no modelo de 5 fases
StoreBase em EX, dado em MEM; segue o caminho disponível
Erro MEM3 ciclos; erro ID, 1 + paragens de operandos
BranchCPI=CPIb+bepCPI=CPI_b+bep; e=1−acertoe=1-\text{acerto}

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 LL e intervalo II: C=L+(n−1)IC=L+(n-1)I. IPC=N/CIPC=N/C.

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.

ILP · Tomasulo

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.

ParH1 recebeH0 recebe
PKBB16a.H0b.H0
PKTT16a.H1b.H1
PKBT16a.H0b.H1
PKTB16a.H1b.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 2302^{30} e a soma 2312^{31} satura em 0x7FFFFFFF.
  • Replicar byte: mascara antes de shifts. Contadores de 8 bits voltam a 0 após 256.
  • ∣−32768∣|{-32768}| não cabe em 16 bits com sinal; KABS16 satura em 32767 com overflow assinalado.

SIMD · Programar

Energia, coerência, E/S

E=PΔtE=P\Delta t Tj=Ta+PRθT_j=T_a+PR_{\theta} Pdin∝αCV2fP_{\rm din}\propto\alpha CV^2f Sn=1s+(1−s)/nS_n=\frac{1}{s+(1-s)/n}

EE energia; PP potência; Δt\Delta t duração. TjT_j temperatura da junção; TaT_a ambiente; RθR_{\theta} resistência térmica. PdinP_{\rm din} potência de comutação, com atividade α\alpha, capacidade CC, tensão VV e frequência ff; exclui a estática. SnS_n rapidez com nn núcleos; ss fração serial do tempo original.

  • Com VV fixa, P∝fP\propto f; só com V∝fV\propto f vale P∝f3P\propto f^3.
  • Tempo de partições segue max⁡wi\max w_i. 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 CC ciclos a cada PP ciclos; fração do CPU C/PC/P.
  • Interrupções: compara qpcpq_pc_p ciclos/s do polling com uqmax⁡ciuq_{\max}c_i das interrupções (qq consultas, cc custo, uu fração com dados).
  • DMA: RR taxa em bytes/s, BB bytes por bloco, cc ciclos de preparação e conclusão por transferência, ff frequência do CPU; fração do CPU u=Rc/(Bf)u=Rc/(Bf) e bloco mínimo B≥Rc/(umax⁡f)B\ge Rc/(u_{\max}f).
  • 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 t(B)=tfixo+B/Rt(B)=t_{\rm fixo}+B/R, com tfixot_{\rm fixo} custo de preparação e conclusão e RR taxa.

HDD: fila + procura + rotação (30/RPM30/RPM s média) + transferência + controlador. MB 10610^6, KiB 1024. Taxa máxima = mínimo dos limites. Dois buffers: Tn=tD+tC+(n−1)max⁡(tD,tC)T_n=t_D+t_C+(n-1)\max(t_D,t_C), com tDt_D tempo de disco e tCt_C tempo de cálculo por bloco.

Multicore · Coerência · E/S · Armazenamento

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.