Solução e Explicação Detalhada: Aula 05 - Hierarquia de Memória
Abaixo estão as respostas esperadas e o embasamento teórico para os exercícios propostos na Aula 05.
Solução da Questão 1 - 1. A Pirâmide de Alta Performance (Básico 1)
Explicação Detalhada do Assunto:
Um programador ingênuo acha que "variável vai na memória". Um engenheiro de software C/C++ sabe em qual camada a variável se hospeda:
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 1. A Pirâmide de Alta Performance determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 2 - 2. Os Impactos da Latência (Lado do Código) (Básico 2)
Explicação Detalhada do Assunto:
Quando escrevemos um código com constantes consultas não linearizadas ao Banco de Dados (ou SSD local), pagamos a mais cara taxa processual: o I/O disk penalty.
A instrução e os dados descem da L3, saltam para L2, descem para L1 e se acoplam na ALU.
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 2. Os Impactos da Latência (Lado do Código) determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 3 - 3. Optimizando Uso (Intermediário 1)
Explicação Detalhada do Assunto:
Por que linguagens como C e C++ dominam infraestrutura de servidores High Frequency Trading?
Porque elas permitem Alocação Estática e Constante que é perfeitamente "encaixada" pelo compilador diretamente na memória Cache.
Ao invés de carregar gigabytes de Strings na lenta RAM, as linguagens de baixo nível incentivam o uso de matrizes de tamanho delimitado (arrays fixos), cujo agrupamento contíguo força a arquitetura de Hardware Prefetching a adiantar os bytes do Array para a Cache nativamente, antes mesmo de você rodar a linha do código!
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 3. Optimizando Uso determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 4 - Resumo Prático (Intermediário 2)
Explicação Detalhada do Assunto:
-
Se processadores hoje são mísseis atingindo +4GHz, a RAM parou no tempo (Latência de CAS não baixa proporcionalmente).
-
Tudo recai na técnica humana de amarrar dados juntos (Caches L1 e L2) e escrever data-oriented code se quiser ultra-latência C++.
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de Resumo Prático determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 5 - 1. A Pirâmide de Alta Performance (Desafio)
Explicação Detalhada do Assunto:
Um programador ingênuo acha que "variável vai na memória". Um engenheiro de software C/C++ sabe em qual camada a variável se hospeda:
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 1. A Pirâmide de Alta Performance determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.